Серверы
April 12

Как установить Kubernetes — гайд для новичков

Kubernetes можно развернуть разными способами — всё зависит от ваших целей, например:

Учёба, эксперименты, отладка - Minikube, Kind

Локальный кластер с Docker - K3s

Кластер в облаке - GKE (Google), EKS (AWS), AKS (Azure)

Собственный продакшен-кластер - kubeadm, Rancher, RKE2

0. Введение

🧠 Из чего состоит ядро Kubernetes?

Kubernetes построен вокруг понятия кластера — это группа серверов, которые работают вместе как единое целое. Основными строительными блоками кластера являются ноды (Nodes). Нода — это отдельный сервер, на котором выполняются приложения, запущенные в виде контейнеров внутри подов (Pods). В Kubernetes различают два типа нод: Master (Control Plane) и Worker.

Master-нода (Control Plane) — это управляющий узел, мозг всего кластера. На нём запускаются компоненты, которые принимают решения: API-сервер (принимает команды и манифесты), scheduler (решает, на каких нодах запускать приложения), контроллеры (следят за состоянием и выполняют инструкции) и etcd (надёжное хранилище всей информации). Без Master-ноды кластер не может принимать команды и управлять приложениями.

Worker-ноды — это рабочие серверы, на которых непосредственно запускаются контейнеры с приложениями. Каждый воркер запускает компонент под названием kubelet, который связывает ноду с мастером, и контейнерную среду (например, Docker или containerd), управляющую самими контейнерами. Kubernetes использует Worker-ноды как "строительные кирпичики" для масштабирования и отказоустойчивости. Если одна нода выходит из строя, Kubernetes автоматически переносит её нагрузку на другую.

🖥 1. Установка Kubernetes локально

🔹 Minikube — самый популярный способ для локальной отладки

Minikube запускает одиночный нодовый кластер (одна нода) Kubernetes прямо у вас на компьютере (на виртуалке или через Docker).

🔧 Установка:

# Linux/macOS
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube

▶️ Запуск:

kubectl get nodes

Minikube подходит для обучения, тестов, отладки Helm-чартов, CI/CD.

🔹 Kind (Kubernetes IN Docker)

Kind — лёгкий способ развернуть кластер прямо в Docker-контейнерах.

Установка:

go install sigs.k8s.io/kind@latest

Запуск:

kind create cluster

Отлично подходит для CI/CD и автоматизированных тестов.

🔹 K3s — компактный Kubernetes от Rancher

K3s — это облегчённая версия Kubernetes, идеально подходящая для:

  • локального использования,
  • edge-устройств,
  • Raspberry Pi,
  • слабых серверов.

Установка (одна команда!):

curl -sfL https://get.k3s.io | sh -

После установки kubectl можно использовать сразу:

kubectl get nodes

☁️ 2. Облачные кластеры

Если вы хотите настоящий, отказоустойчивый кластер — берите готовое решение от облака:

🔸 GKE — Google Kubernetes Engine

Создаётся в пару кликов, автоматические обновления, мониторинг.

🔸 EKS — Elastic Kubernetes Service (AWS)

Интеграция с IAM, VPC и AWS-инфраструктурой.

🔸 AKS — Azure Kubernetes Service

Простой старт для .NET/Windows/Azure-разработчиков.

☁️ Облачные кластеры стоят денег, но позволяют перейти к боевому окружению быстро.

Не будем заострять на облачных кластерах внимание, а перейдем к установке кластера на своем оборудовании или виртуальном сервере.

🧱 3. Установка своего кластера (на VPS, bare metal)

Bare metal — это физический сервер, который вы полностью контролируете, включая аппаратную часть. Это буквально отдельный компьютер, который полностью ваш — вы управляете железом напрямую, устанавливаете операционную систему и все необходимые компоненты самостоятельно. А VPS (Virtual Private Server) — это виртуальный сервер, выделенный вам на мощностях физического сервера, который вы делите с другими пользователями. Вы получаете гарантированные ресурсы (процессор, память, диск), но не контролируете само железо. VPS проще, дешевле и быстрее в настройке, а bare metal — мощнее, гибче, но требует более серьёзной поддержки и знаний.

Для продакшен-кластеров вы можете использовать:

kubeadm — официальный инструмент от разработчиков Kubernetes, который позволяет быстро и надёжно развернуть кластер с нуля на ваших серверах.

Почему kubeadm? Это способ получить полный контроль над вашим кластером — особенно важно в продакшене.


🛠 Что нужно перед началом?

  • 2 и больше серверов (один — для Control Plane/Master, другие — Worker-ноды).
  • ОС: Ubuntu, Debian, CentOS, RHEL (рекомендуется Ubuntu 22.04).
  • Минимум 2 ядра CPU и 2 ГБ RAM на каждую ноду.
  • Отключён swap.

📋 Инструкция по установке кластера Kubernetes через kubeadm

✅ Шаг 1. Подготовка сервера (выполняется на всех нодах)

Обновите пакеты и отключите swap:

sudo apt update
sudo apt upgrade -y
sudo swapoff -a
sudo sed -i '/ swap / s/^/#/' /etc/fstab

Установите Docker (или containerd):

sudo apt install -y docker.io
sudo systemctl enable --now docker

✅ Шаг 2. Установка компонентов Kubernetes (на всех нодах)

Добавьте репозиторий Kubernetes:

sudo apt install -y apt-transport-https ca-certificates curl gpg
sudo curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.30/deb/Release.key | sudo gpg --dearmor -o /usr/share/keyrings/kubernetes-apt-keyring.gpg
echo 'deb [signed-by=/usr/share/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.30/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt update

Установите kubeadm, kubelet и kubectl:

sudo apt install -y kubeadm kubelet kubectl
sudo apt-mark hold kubeadm kubelet kubectl

Запустите сервис kubelet:

sudo systemctl enable --now kubelet

✅ Шаг 3. Инициализация мастер-ноды (только на первой ноде)

Запускаем мастер-нод с kubeadm init:

sudo kubeadm init --pod-network-cidr=10.244.0.0/16
  • Запишите вывод (там будет команда для подключения воркер-нод).

Настройка доступа через kubectl:

mkdir -p $HOME/.kube
sudo cp /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

✅ Шаг 4. Установка сетевого плагина (на мастере)

Без сети поды не будут видеть друг друга. Установим, например, Flannel:

kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml

✅ Шаг 5. Подключение воркер-нод к кластеру

Используйте команду, которую вы записали ранее (kubeadm join), например:

sudo kubeadm join 192.168.1.100:6443 --token <ваш-токен> \
--discovery-token-ca-cert-hash sha256:<ваш-хэш>

Теперь воркер-ноды подключены.

kubectl get nodes

Вы должны увидеть все ноды в состоянии Ready.

📌 Полезные команды:

Посмотреть поды во всех неймспейсах:

kubectl get pods --all-namespaces

Логи пода:

kubectl logs <pod-name>

Посмотреть состояние кластера:

kubectl cluster-info

🚧 Частые ошибки и их решение:

  • "Swap is enabled": отключите swap (sudo swapoff -a).
  • Проблемы с сетью подов: проверьте, что сетевой плагин установлен (kubectl get pods -n kube-flannel).
  • "Kubelet not running": убедитесь, что сервис запущен (systemctl status kubelet).
Установка Kubernetes через kubeadm — это как сборка большого кошачьего домика.
Сначала подготавливаете детали (установка docker, kubelet), затем собираете основу (мастер-нода), подключаете дополнительные модули (воркеры), и в конце даёте домику возможность работать (сетевой плагин). Теперь ваш "кошачий городок" готов принять любые приложения.

✅ Вывод

Установка Kubernetes — это первый шаг в его освоении.
Для новичков лучше всего:

  • Minikube — для быстрых экспериментов,
  • Kind — для CI/CD и тестов,
  • K3s — для лёгкого кластера на своей машине,
  • Облако — когда нужно всерьёз.,

🐾 Небольшой кошачий пример

Установка Kubernetes — как выбор дома для кота: Minikube — это коробка в комнате для тестов. K3s — палатка на даче. GKE — котедж с обслуживанием. kubeadm — ты сам строишь дом из кирпичей и тянешь провода.