Показаны различия между двумя версиями страницы.
— |
методология_devops:практическая_работа_с_minikube:start [2025/05/31 21:12] (текущий) kirill создано |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
+ | # Развертывание кластера Kubernetes из трех нод на Rocky Linux 8 | ||
+ | ## Предварительные требования: | ||
+ | |||
+ | * **Три машины с Rocky Linux 8:** | ||
+ | * Одна машина для Control Plane (например, | ||
+ | * Две машины для Worker Nodes (например, | ||
+ | * **Доступ с правами суперпользователя (root или sudo) на всех машинах.** | ||
+ | * **На всех машинах должны быть настроены имена хостов (hostname).** | ||
+ | * **На всех машинах должна быть обеспечена сетевая связность друг с другом (например, | ||
+ | * **Рекомендуется отключить SELinux и firewalld на время установки (для упрощения, | ||
+ | * **На всех машинах должен быть установлен `containerd` в качестве Container Runtime.** | ||
+ | |||
+ | ## Шаг 1: Подготовка всех нод | ||
+ | |||
+ | Выполните следующие действия на **ВСЕХ ТРЕХ МАШИНАХ (master и workers)**: | ||
+ | |||
+ | 1. **Отключите SELinux (рекомендуется для упрощения): | ||
+ | ```bash | ||
+ | sudo setenforce 0 | ||
+ | sudo sed -i ' | ||
+ | ``` | ||
+ | |||
+ | 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 / | ||
+ | ``` | ||
+ | Убедитесь, | ||
+ | ```bash | ||
+ | sudo systemctl restart containerd | ||
+ | ``` | ||
+ | * Создайте файл конфигурации kubelet (если его нет) `/ | ||
+ | ``` | ||
+ | KUBELET_KUBEADM_ARGS=" | ||
+ | ``` | ||
+ | * Перезапустите kubelet: | ||
+ | ```bash | ||
+ | sudo systemctl restart kubelet | ||
+ | ``` | ||
+ | |||
+ | ## Шаг 2: Инициализация Control Plane (только на `kube-master`) | ||
+ | |||
+ | Выполните следующие действия **ТОЛЬКО НА МАШИНЕ, | ||
+ | |||
+ | 1. **Инициализируйте Control Plane с помощью `kubeadm init`:** | ||
+ | * Выберите IP-адрес интерфейса, | ||
+ | * Укажите сетевой плагин (здесь используется Calico, но вы можете выбрать другой). | ||
+ | ```bash | ||
+ | sudo kubeadm init --pod-network-cidr=192.168.0.0/ | ||
+ | ``` | ||
+ | * **Запомните команду `kubeadm join ...`**, которая будет выведена в конце выполнения этой команды. Она понадобится для присоединения worker nodes к кластеру. Пример команды: | ||
+ | ``` | ||
+ | kubeadm join < | ||
+ | ``` | ||
+ | |||
+ | 2. **Настройте `kubectl` для работы с кластером (выполните на `kube-master`): | ||
+ | ```bash | ||
+ | mkdir -p $HOME/.kube | ||
+ | sudo cp / | ||
+ | sudo chown $(id -u):$(id -g) $HOME/ | ||
+ | ``` | ||
+ | |||
+ | 3. **Установите сетевой плагин (Calico в данном примере): | ||
+ | ```bash | ||
+ | kubectl apply -f [https:// | ||
+ | ``` | ||
+ | * Дождитесь, | ||
+ | ```bash | ||
+ | kubectl get pods -n kube-system -w | ||
+ | ``` | ||
+ | |||
+ | ## Шаг 3: Присоединение Worker Nodes (на `kube-worker-1` и `kube-worker-2`) | ||
+ | |||
+ | Выполните следующую команду **НА КАЖДОЙ МАШИНЕ, | ||
+ | |||
+ | 1. **Используйте команду `kubeadm join`, скопированную на шаге 2:** | ||
+ | ```bash | ||
+ | sudo kubeadm join < | ||
+ | ``` | ||
+ | * Замените `< | ||
+ | |||
+ | ## Шаг 4: Проверка кластера (на `kube-master`) | ||
+ | |||
+ | Выполните следующие команды **ТОЛЬКО НА МАШИНЕ CONTROL PLANE (`kube-master`)**, | ||
+ | |||
+ | 1. **Проверьте состояние узлов: | ||
+ | ```bash | ||
+ | kubectl get nodes | ||
+ | ``` | ||
+ | Вы должны увидеть три узла (`kube-master`, | ||
+ | |||
+ | 2. **Проверьте состояние Pod' | ||
+ | ```bash | ||
+ | kubectl get pods -n kube-system | ||
+ | ``` | ||
+ | Убедитесь, | ||
+ | |||
+ | ## Дополнительные действия (рекомендуется): | ||
+ | |||
+ | * **Настройте постоянное хранилище (Persistent Volumes) в зависимости от ваших потребностей.** | ||
+ | * **Установите панель управления Kubernetes Dashboard для графического интерфейса.** | ||
+ | * **Настройте DNS для кластера (например, | ||
+ | * **Включите и настройте 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, | ||
+ | * **Убедитесь, | ||
+ | |||
+ | Эта инструкция представляет собой базовый вариант развертывания кластера Kubernetes. Для production-окружений рекомендуется использовать более продвинутые инструменты и конфигурации. |