Лабораторна робота 9: Завантаження робочих вузлів Kubernetes¶
Info
Це гілка розгалуження від оригінальної "Kubernetes the hard way", Келсі Хайтауера (GitHub: kelseyhightower). На відміну від оригіналу, який базується на дистрибутивах, подібних до Debian, для архітектури ARM64, ця гілка націлена на дистрибутиви Enterprise Linux, такі як Rocky Linux, який працює на архітектурі x86_64.
У цій лабораторній роботі ви завантажите два робочі вузли Kubernetes. Ви встановите такі компоненти: [runc, плагіни мережевих контейнерів, containerd, kubelet і kube-proxy.
Передумови¶
З jumpbox
скопіюйте двійкові файли Kubernetes і файли блоку systemd
до кожного робочого екземпляра:
for host in node-0 node-1; do
SUBNET=$(grep $host machines.txt | cut -d " " -f 5)
sed "s|SUBNET|$SUBNET|g" \
configs/10-bridge.conf > 10-bridge.conf
sed "s|SUBNET|$SUBNET|g" \
configs/kubelet-config.yaml > kubelet-config.yaml
scp 10-bridge.conf kubelet-config.yaml \
root@$host:~/
done
for host in node-0 node-1; do
scp \
downloads/runc.amd64 \
downloads/crictl-v1.32.0-linux-amd64.tar.gz \
downloads/cni-plugins-linux-amd64-v1.6.2.tgz \
downloads/containerd-2.0.3-linux-amd64.tar.gz \
downloads/kubectl \
downloads/kubelet \
downloads/kube-proxy \
configs/99-loopback.conf \
configs/containerd-config.toml \
configs/kubelet-config.yaml \
configs/kube-proxy-config.yaml \
units/containerd.service \
units/kubelet.service \
units/kube-proxy.service \
root@$host:~/
done
Команди в цій лабораторній роботі потрібно запускати окремо для кожного робочого екземпляра: node-0
і node-1
. Показані лише кроки для node-0
. Ви повинні повторити точні кроки та команди на node-1
.
Увійдіть до робочого екземпляра node-0
за допомогою команди ssh
.
ssh root@node-0
Надання робочого вузла Kubernetes¶
Встановіть залежності операційної системи:
dnf -y update
dnf -y install socat conntrack ipset tar
Двійковий файл
socat
підтримує командуkubectl port-forward
.
Вимкніть Swap¶
Якщо ви ввімкнули swap, kubelet не запуститься. Рекомендовано вимкнути swap, щоб Kubernetes забезпечував належний розподіл ресурсів і якість обслуговування.
Перевірте, чи ввімкнено обмін:
swapon --show
Якщо вихідні дані порожні, то обмін не ввімкнено. Якщо вихідні дані не порожні, виконайте таку команду, щоб негайно вимкнути обмін:
swapoff -a
Щоб гарантувати, що підкачка залишиться вимкненою після перезавантаження, закоментуйте рядок, який автоматично монтує том підкачки у файлі /etc/fstab
. Впишіть:
sudo sed -i '/swap/s/^/#/' /etc/fstab
Створіть каталоги встановлення:
mkdir -p \
/etc/cni/net.d \
/opt/cni/bin \
/var/lib/kubelet \
/var/lib/kube-proxy \
/var/lib/kubernetes \
/var/run/kubernetes
Встановіть робочі двійкові файли:
mkdir -p containerd
tar -xvf crictl-v1.32.0-linux-amd64.tar.gz
tar -xvf containerd-2.0.3-linux-amd64.tar.gz -C containerd
tar -xvf cni-plugins-linux-amd64-v1.6.2.tgz -C /opt/cni/bin/
mv runc.amd64 runc
chmod +x crictl kubectl kube-proxy kubelet runc
mv crictl kubectl kube-proxy kubelet runc /usr/local/bin/
mv containerd/bin/* /bin/
Налаштуйте мережу CNI¶
Створіть файл конфігурації мережі bridge
:
mv 10-bridge.conf 99-loopback.conf /etc/cni/net.d/
Налаштуйте containerd
¶
Встановіть конфігураційні файли container
:
mkdir -p /etc/containerd/
mv containerd-config.toml /etc/containerd/config.toml
mv containerd.service /etc/systemd/system/
Налаштуйте Kubelet¶
Створіть файл конфігурації kubelet-config.yaml
:
mv kubelet-config.yaml /var/lib/kubelet/
mv kubelet.service /etc/systemd/system/
Налаштуйте проксі Kubernetes¶
mv kube-proxy-config.yaml /var/lib/kube-proxy/
mv kube-proxy.service /etc/systemd/system/
Примітка
Хоча це вважається поганою формою безпеки, вам, можливо, доведеться тимчасово або назавжди вимкнути SELinux, якщо у вас виникнуть проблеми із запуском необхідних служб systemd. Правильним рішенням є дослідження та створення необхідних файлів політики за допомогою таких інструментів, як ausearch, audit2allow тощо.\
Щоб виправити SELinux із шляху та вимкнути його, запустіть наступне:
sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config setenforce 0
Запустіть Worker Services¶
systemctl daemon-reload
systemctl enable containerd kubelet kube-proxy
systemctl start containerd kubelet kube-proxy
Верифікація¶
Екземпляри обчислень, створені в цьому посібнику, не матимуть дозволу на завершення цього розділу перевірки. Виконайте наступні команди з машини jumpbox
.
Перелічіть зареєстровані вузли Kubernetes:
ssh root@server "kubectl get nodes --kubeconfig admin.kubeconfig"
NAME STATUS ROLES AGE VERSION
node-0 Ready <none> 1m v1.32.0
Після виконання всіх попередніх кроків у цій лабораторній роботі на node-0
і node-1
результат команди kubectl get nodes
має показати:
NAME STATUS ROLES AGE VERSION
node-0 Ready <none> 1m v1.32.0
node-1 Ready <none> 10s v1.32.0
Далі: Налаштування kubectl для віддаленого доступу
Author: Wale Soyinka
Contributors: Steven Spencer, Ganna Zhyrnova