Ответ
При настройке Worker Node я устанавливаю следующий минимальный набор компонентов, разделяя их на обязательные и опциональные:
Обязательные компоненты (требуются Kubernetes):
-
Container Runtime:
# Для containerd (текущий стандарт) apt-get install -y containerd.io containerd config default > /etc/containerd/config.toml systemctl enable --now containerd -
Kubelet (агент ноды):
apt-get install -y kubelet=1.28.* kubeadm=1.28.* kubectl=1.28.* systemctl enable --now kubelet -
Kube-proxy (сетевой прокси):
# Обычно устанавливается через kubeadm автоматически # Или в режиме DaemonSet
Сетевые плагины (CNI):
# Пример для Calico (устанавливается после инициализации кластера)
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
Опциональные, но рекомендуемые компоненты:
-
Мониторинг и логирование:
- Node Exporter для метрик хоста
- Fluentd или Filebeat DaemonSet для сбора логов
- cAdvisor (встроен в kubelet, но можно отдельно)
-
Хранилище:
# CSI драйверы в зависимости от провайдера # Например, для AWS EBS: kubectl apply -k "github.com/kubernetes-sigs/aws-ebs-csi-driver/deploy/kubernetes/overlays/stable/?ref=master" -
Безопасность:
- AppArmor или SELinux профили
- Pod Security Standards enforcement
- falco для обнаружения аномалий
Процесс присоединения ноды:
# После настройки control plane получаю команду join
kubeadm join 10.0.0.100:6443
--token <token>
--discovery-token-ca-cert-hash sha256:<hash>
--node-name worker-01
--cri-socket unix:///run/containerd/containerd.sock
Проверка работоспособности:
# На control plane проверяю ноду
kubectl get nodes -o wide
kubectl describe node worker-01
# На самой worker node проверяю компоненты
systemctl status kubelet containerd
journalctl -u kubelet -f --since "5 minutes ago"