Показаны различия между двумя версиями страницы.
| — |
методология_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-окружений рекомендуется использовать более продвинутые инструменты и конфигурации. | ||