Kubernetes the hard way etcd setup
Материал из noname.com.ua
Версия от 17:27, 9 октября 2022; Sirmax (обсуждение | вклад)
ETCD
Вторая версия статьи, максимально подробная (первая версия тут - https://noname.com.ua/mediawiki/index.php/Etcd)
Требования к окружению
- 3 ноды raspberry pi установленные и настроенные, имеющие коннективити друг с другом
- для работы etcd выделен отдельный VLAN с отдельным адресным пространством
- установленный и настроенный PKI на основе Hashicorp Vault (в примере - по адресу http://vault.home)
- Настроенный DNS и созданы записи для всех доменов в примере (в моем случае DNS поднят на MikroTik)
DNS
Подчеркну что все взаимоджействие происходит исключительно по доменным именам
Создаем три записи DNS (для трех мастер-нод каждая из которых находится в своей "Availability Zone" (В кавычках по тому что в лабе это все очень условно)
/ip/dns/static/add name=etcd.master.az1.k8s.cluster.home address=10.0.11.1<br> /ip/dns/static/add name=etcd.master.az2.k8s.cluster.home address=10.0.21.1<br> /ip/dns/static/add name=etcd.master.az3.k8s.cluster.home address=10.0.31.1<br>
Установка из пакетов (на всех трех нодах)
Собирать код самой последней версии под архитектуру АРМ откровенно лениво
apt -y \ install \ etcd \ etcd-client \ etcd-server \ etcd-discovery
dpkg -l | grep etcd
ii etcd 3.3.25+dfsg-7 all Transitional package for etcd-client and etcd-server ii etcd-client 3.3.25+dfsg-7 arm64 highly-available key value store -- client ii etcd-discovery 2.0.0+git2019.04.19.git.78fb45d3c9-4 arm64 etcd discovery service ii etcd-server 3.3.25+dfsg-7 arm64 highly-available key value store -- daemon
Остановить сервис (запускается после установки)
systemctl stop etcd
Переместить юнит (свой вариант юнита создается ниже)
mv /usr/lib/systemd/system/etcd.service /root/etcd.service.original
Systemd unit
/etc/systemd/system/etcd.service
[Unit] Description=etcd Documentation=https://github.com/coreos [Service] Type=notify LimitNOFILE=65536 Environment=ETCD_UNSUPPORTED_ARCH=arm64 EnvironmentFile=/etc/etcd/env ExecStart=/usr/bin/etcd \ --debug \ --name=etcd-az-1 \ --listen-peer-urls=https://10.240.1.2:2380 \ --listen-client-urls=https://10.240.1.2:2379,https://127.0.0.1:2379 \ --advertise-client-urls=https://etcd.az1.k8s.home:2379 \ --initial-advertise-peer-urls=https://etcd.az1.k8s.home:2380 \ --initial-cluster-token=etcd.az1.k8s.home \ --initial-cluster etcd-az-1=https://etcd.az1.k8s.home:2380,etcd-az-2=https://etcd.az2.k8s.home:2380,etcd-az-3=https://etcd.az3.k8s.home:2380 \ --initial-cluster-state=new \ --data-dir=/var/lib/etcd \ --peer-client-cert-auth \ --peer-cert-file=/etc/etcd/certs/server/etcd.az1.k8s.home.pem \ --peer-key-file=/etc/etcd/certs/server/etcd.az1.k8s.home.key \ --peer-trusted-ca-file=/etc/etcd/certs/rootCA.pem \ --trusted-ca-file=/etc/etcd/certs/rootCA.pem \ --cert-file=/etc/etcd/certs/client/etcd.az1.k8s.home.pem \ --key-file=/etc/etcd/certs/client/etcd.az1.k8s.home.key \ --client-cert-auth Restart=on-failure RestartSec=60 [Install] WantedBy=multi-user.target Alias=etcd-server.service