From a62f875e601040c7dbfaaac0dfb5c9e566514d09 Mon Sep 17 00:00:00 2001 From: erjemin Date: Sun, 5 Jan 2025 14:31:23 +0300 Subject: [PATCH] add: Adjust nodes (-1-) --- raspberry-and-orange-pi/k8s.md | 46 +++++++++++++++++++++++++++++++--- 1 file changed, 43 insertions(+), 3 deletions(-) diff --git a/raspberry-and-orange-pi/k8s.md b/raspberry-and-orange-pi/k8s.md index b5f575a..887dc47 100644 --- a/raspberry-and-orange-pi/k8s.md +++ b/raspberry-and-orange-pi/k8s.md @@ -950,9 +950,9 @@ sudo service haproxy restart отвечает на запрос, он помечается как недоступный и исключается из балансировки. Когда узел восстанавливает работу, он добавляется обратно в балансировку. +----- - -#### Инициализация кластера Kubernetes +## Инициализация кластера Kubernetes Теперь можно инициализировать кластер Kubernetes. На одном из узлов выполним команду `kubeadm init`: ```shell @@ -1174,9 +1174,49 @@ sudo scp /etc/kubernetes/admin.conf [user]@opi5plus-2:~/.kube/config * **Kube-Router** -- Объединяет функции маршрутизации, балансировки нагрузки и сетевых политик. Использует BGP для маршрутизации. Подходит для кластеров, где требуется интеграция с существующей сетевой инфраструктурой. -Сетевое взаимодействие между узлами обеспечивается с помощью манифеста сетевого плагина. Например, для установки +Т.к. я планирую в будущем подключать узлы во "внешнем интернете" (узлы будут находиться в разных сетях) и узлы +будут не только на ARM64 (Orange Pi 5 и Apple Silicon), но и armv7 (Raspberry Pi 3B) и amd64 (x86_64), то выбор +пал на **Calico**. + +Применим манифест сетевого плагина Calico на мастер-узле: ```shell kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml ``` +Изменения, внесенные в манифест, могут занять некоторое время для обновления состояния всех узлов, распространиться +и вступить в силу. + +Проверим состояния узлов: +```shell +kubectl get nodes +``` + +И увидим, что узлы готовы к работе: +```text +NAME STATUS ROLES AGE VERSION +opi5plus-1 Ready control-plane 25h v1.30.8 +opi5plus-2 Ready 8h v1.30.8 +``` + +Если вы заметили, то второй узел `opi5plus-2` не имеет роли. Kubernetes позволяет назначать узлам роли: мастер +(control-plane) и рабочий (worker). На рабочих узлах запускаются поды, а мастер-узлы используются для управления. +Задать роль второму узлу (`opi5plus-2`) можно командой: +```shell +kubectl label node opi5plus-2 node-role.kubernetes.io/worker=worker +``` + +Теперь роли узлов будут выглядеть так: +```text +NAME STATUS ROLES AGE VERSION +opi5plus-1 Ready control-plane 39h v1.30.8 +opi5plus-2 Ready worker 22h v1.30.8 +``` + +По умолчанию, на мастер-узле (у нас это `opi5plus-1`) запрещено запускать поды не относящихся к управляющей плоскости. +Такое расточительство 😜 можно пресечь. Разрешить запуск подов на мастер-узле нужно удалив `taint` с мастер-узла. +`taint` — это метка, которая назначается узлу и указывает какие поды могут быть запущены на узле. +Удалить taint-метку с мастер-узла можно командой: +```shell +kubectl taint nodes opi5plus-1 node-role.kubernetes.io/control-plane:NoSchedule- +```