Инструменты пользователя

Инструменты сайта


методология_devops:практическая_работа_с_minikube:start

Развертывание кластера Kubernetes из трех нод на Rocky Linux 8

Предварительные требования:

  • Три машины с Rocky Linux 8:
    • Одна машина для Control Plane (например, kube-master)
    • Две машины для Worker Nodes (например, kube-worker-1, kube-worker-2)
  • Доступ с правами суперпользователя (root или sudo) на всех машинах.
  • На всех машинах должны быть настроены имена хостов (hostname).
  • На всех машинах должна быть обеспечена сетевая связность друг с другом (например, через ping).
  • Рекомендуется отключить SELinux и firewalld на время установки (для упрощения, в production необходимо настроить правила).
  • На всех машинах должен быть установлен containerd в качестве Container Runtime.

Шаг 1: Подготовка всех нод

Выполните следующие действия на ВСЕХ ТРЕХ МАШИНАХ (master и workers):

  1. Отключите SELinux (рекомендуется для упрощения): bash sudo setenforce 0 sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
  2. Отключите и остановите Firewalld (рекомендуется для упрощения): bash sudo systemctl disable --now firewalld
  3. Установите необходимые пакеты и настройте репозиторий Kubernetes: bash sudo yum update -y sudo yum install -y kubeadm kubelet kubectl --disableexcludes=kubernetes
  4. Включите и запустите kubelet: bash sudo systemctl enable --now kubelet
  5. Настройте cgroup драйвер для kubelet и containerd: * Проверьте конфигурацию containerd: 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

Шаг 2: Инициализация Control Plane (только на `kube-master`)

Выполните следующие действия ТОЛЬКО НА МАШИНЕ, КОТОРАЯ БУДЕТ CONTROL PLANE (kube-master):

  1. Инициализируйте Control Plane с помощью 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>
  2. Настройте 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
  3. Установите сетевой плагин (Calico в данном примере): 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

Шаг 3: Присоединение Worker Nodes (на `kube-worker-1` и `kube-worker-2`)

Выполните следующую команду НА КАЖДОЙ МАШИНЕ, КОТОРАЯ БУДЕТ WORKER NODE (kube-worker-1, kube-worker-2):

  1. Используйте команду 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.

Шаг 4: Проверка кластера (на `kube-master`)

Выполните следующие команды ТОЛЬКО НА МАШИНЕ CONTROL PLANE (kube-master), чтобы убедиться, что кластер настроен правильно:

  1. Проверьте состояние узлов: bash kubectl get nodes Вы должны увидеть три узла (kube-master, kube-worker-1, kube-worker-2) в состоянии Ready.
  2. Проверьте состояние Pod'ов в системном пространстве имен: bash kubectl get pods -n kube-system Убедитесь, что основные компоненты Kubernetes и сетевой плагин (Calico) запущены и находятся в состоянии Running.

Дополнительные действия (рекомендуется):

  • Настройте постоянное хранилище (Persistent Volumes) в зависимости от ваших потребностей.
  • Установите панель управления Kubernetes Dashboard для графического интерфейса.
  • Настройте DNS для кластера (например, CoreDNS, который устанавливается по умолчанию).
  • Включите и настройте firewalld на всех нодах, разрешив необходимые порты Kubernetes (6443, 2379-2380, 10250, 10251, 10252, 10255, порты для сетевого плагина).
  • Усильте безопасность кластера (RBAC, Network Policies и т.д.).

Устранение неполадок:

  • Проверьте логи kubelet на worker nodes: sudo journalctl -u kubelet -f
  • Проверьте логи kubeadm на worker nodes: sudo journalctl -u kubeadm -f
  • Проверьте логи kube-apiserver, kube-scheduler и kube-controller-manager на master node: sudo journalctl -u kube-apiserver -f, sudo journalctl -u kube-scheduler -f, sudo journalctl -u kube-controller-manager -f
  • Убедитесь, что сетевая связность между нодами работает.

Эта инструкция представляет собой базовый вариант развертывания кластера Kubernetes. Для production-окружений рекомендуется использовать более продвинутые инструменты и конфигурации.

методология_devops/практическая_работа_с_minikube/start.txt · Последнее изменение: 2025/05/31 21:12 — kirill

DokuWiki Appliance - Powered by TurnKey Linux