kube-master)kube-worker-1, kube-worker-2)containerd в качестве Container Runtime.Выполните следующие действия на ВСЕХ ТРЕХ МАШИНАХ (master и workers):
bash
sudo setenforce 0
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
bash
sudo systemctl disable --now firewalld
bash
sudo yum update -y
sudo yum install -y kubeadm kubelet kubectl --disableexcludes=kubernetes
bash
sudo systemctl enable --now kubelet
bash
cat /etc/containerd/config.toml | grep systemd
Убедитесь, что SystemdCgroup = true. Если нет, отредактируйте файл /etc/containerd/config.toml и измените значение на true. После этого перезапустите containerd:
bash
sudo systemctl restart containerd
* Создайте файл конфигурации kubelet (если его нет) /etc/sysconfig/kubelet и добавьте следующую строку:
KUBELET_KUBEADM_ARGS="--cgroup-driver=systemd"
* Перезапустите kubelet:
bash
sudo systemctl restart kubelet
Выполните следующие действия ТОЛЬКО НА МАШИНЕ, КОТОРАЯ БУДЕТ CONTROL PLANE (kube-master):
kubeadm init:
* Выберите IP-адрес интерфейса, который будут использовать worker nodes для связи с master (замените <MASTER_IP> на фактический IP-адрес kube-master).
* Укажите сетевой плагин (здесь используется Calico, но вы можете выбрать другой).
bash
sudo kubeadm init --pod-network-cidr=192.168.0.0/16 --control-plane-endpoint="<MASTER_IP>:6443"
* Запомните команду kubeadm join ..., которая будет выведена в конце выполнения этой команды. Она понадобится для присоединения worker nodes к кластеру. Пример команды:
kubeadm join <MASTER_IP>:6443 --token <TOKEN> --discovery-token-ca-cert-hash sha256:<HASH>
kubectl для работы с кластером (выполните на kube-master):
bash
mkdir -p $HOME/.kube
sudo cp /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
bash
kubectl apply -f [https://docs.projectcalico.org/manifests/calico.yaml](https://docs.projectcalico.org/manifests/calico.yaml)
* Дождитесь, пока все Pod'ы в пространстве имен kube-system перейдут в состояние Running. Это может занять несколько минут:
bash
kubectl get pods -n kube-system -w
Выполните следующую команду НА КАЖДОЙ МАШИНЕ, КОТОРАЯ БУДЕТ WORKER NODE (kube-worker-1, kube-worker-2):
kubeadm join, скопированную на шаге 2:
bash
sudo kubeadm join <MASTER_IP>:6443 --token <TOKEN> --discovery-token-ca-cert-hash sha256:<HASH>
* Замените <MASTER_IP>, <TOKEN> и <HASH> на значения, полученные при инициализации Control Plane.
Выполните следующие команды ТОЛЬКО НА МАШИНЕ CONTROL PLANE (kube-master), чтобы убедиться, что кластер настроен правильно:
bash
kubectl get nodes
Вы должны увидеть три узла (kube-master, kube-worker-1, kube-worker-2) в состоянии Ready.
bash
kubectl get pods -n kube-system
Убедитесь, что основные компоненты Kubernetes и сетевой плагин (Calico) запущены и находятся в состоянии Running.sudo journalctl -u kubelet -fsudo journalctl -u kubeadm -fsudo journalctl -u kube-apiserver -f, sudo journalctl -u kube-scheduler -f, sudo journalctl -u kube-controller-manager -fЭта инструкция представляет собой базовый вариант развертывания кластера Kubernetes. Для production-окружений рекомендуется использовать более продвинутые инструменты и конфигурации.