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 -f
sudo journalctl -u kubeadm -f
sudo journalctl -u kube-apiserver -f
, sudo journalctl -u kube-scheduler -f
, sudo journalctl -u kube-controller-manager -f
Эта инструкция представляет собой базовый вариант развертывания кластера Kubernetes. Для production-окружений рекомендуется использовать более продвинутые инструменты и конфигурации.