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

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


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

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

методология_devops:практическая_работа_с_minikube:start [2025/05/31 21:12] (текущий)
kirill создано
Строка 1: Строка 1:
 +# Развертывание кластера 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