K8s: основы, архитектура и компоненты

Что такое Kubernetes, из чего он состоит и как его установить

Содержание

  1. Что такое Kubernetes простыми словами
  2. Зачем он нужен: проблема без него
  3. Базовые понятия
  4. Архитектура: из чего состоит кластер
  5. Компоненты control plane
  6. Компоненты рабочего узла
  7. Вспомогательные части: DNS, сеть, метрики
  8. Что происходит, когда вы пишете kubectl apply
  9. Основные объекты Kubernetes
  10. Способы установки: обзор
  11. kubeadm: установка «по-взрослому» вручную
  12. Kubespray: установка через Ansible
  13. Лёгкие варианты для обучения и тестов
  14. Управляемые сервисы в облаке
  15. Как выбрать способ установки
  16. Полезные ссылки

1. Что такое Kubernetes простыми словами

Представьте большой порт, где сотни контейнеров с грузами нужно раскладывать по кораблям, следить, чтобы ни один груз не потерялся, а если корабль сломался, перенести груз на другой. Kubernetes (его часто называют K8s, «кубер») — это такой диспетчер для контейнеров. Вы говорите ему: «Мне нужны три копии моего приложения», — а он сам решает, на каких серверах их запустить, следит за ними и поднимает заново, если что-то упало.

Название пришло из греческого языка и означает «штурман» или «рулевой». Логотип — штурвал со спицами, поэтому его иногда называют «рулевым» для контейнеров.

КороткоKubernetes — это система, которая запускает контейнеры на множестве серверов, следит за их состоянием и сама исправляет отклонения от описанного вами желаемого результата.

2. Зачем он нужен: проблема без него

Пока приложение живёт на одном сервере, всё просто. Когда появляется десять микросервисов, каждый в трёх копиях, и они разбросаны по двадцати серверам, возникают вопросы:

Kubernetes отвечает на все эти вопросы: он берёт на себя размещение, масштабирование, обновления и восстановление. Администратор описывает желаемое состояние, а система постоянно к нему приводит.

3. Базовые понятия

ПонятиеПростое объяснение
КонтейнерУпакованное приложение со всеми зависимостями (например, образ Docker)
Под (Pod)Минимальная единица в Kubernetes: один или несколько тесно связанных контейнеров, которые живут вместе и делят сеть
Узел (Node)Сервер, физический или виртуальный, на котором запускаются поды
КластерНабор узлов плюс «мозг», которым управляется всё вместе
МанифестФайл в формате YAML, в котором вы описываете желаемое состояние
NamespaceЛогическая «папка» для объектов, например для разных команд или окружений

4. Архитектура: из чего состоит кластер

Кластер Kubernetes делится на две большие части. Первая — control plane, «мозг», который принимает решения. Вторая — рабочие узлы (worker nodes), на которых реально крутятся ваши приложения.

Control plane (мозг кластера) API server вход для всех etcd память кластера scheduler выбирает узел controller manager — следит, чтобы факт совпадал с желаемым управляет управляет Рабочий узел 1 Под A контейнер Под B контейнер kubelet · kube-proxy · runtime (агенты, которые выполняют команды) Рабочий узел 2 Под A копия Под C другое приложение kubelet · kube-proxy · runtime (агенты, которые выполняют команды)
Упрощённая схема: control plane принимает решения, рабочие узлы запускают поды

5. Компоненты control plane

Control plane состоит из нескольких программ. Обычно они запускаются на одном или нескольких выделенных серверах.

Запомните главноеAPI server — вход, etcd — память, scheduler — решает, где запустить, controller manager — поддерживает порядок.

6. Компоненты рабочего узла

7. Вспомогательные части: DNS, сеть, метрики

8. Что происходит, когда вы пишете kubectl apply

Представьте, что вы отправили манифест с описанием Deployment из трёх копий. Что произойдёт дальше:

  1. kubectl отправляет манифест в API server.
  2. API server проверяет права и корректность и записывает объект в etcd.
  3. Контроллер Deployment видит новый объект и создаёт ReplicaSet, а тот — три пода.
  4. Scheduler выбирает для каждого пода подходящий узел.
  5. kubelet на выбранном узле получает задание и запускает контейнеры через runtime.
  6. kube-proxy и CoreDNS обновляют правила сети, чтобы сервис начал принимать трафик.
kubectl API server etcd scheduler kubelet → под Манифест проходит через API server, сохраняется в etcd, получает узел от scheduler и запускается kubelet
Путь манифеста от команды до запущенного пода

9. Основные объекты Kubernetes

ОбъектДля чего нужен
PodОдин или несколько контейнеров, работающих вместе
ReplicaSetПоддерживает нужное число одинаковых подов
DeploymentОбычные приложения: обновления, откаты, управление ReplicaSet
StatefulSetПриложения с состоянием (базы данных): постоянные имена подов и свои диски. Подробнее см. статью по контроллеру StatefulSet в ссылках ниже
DaemonSetПо одному поду на каждом узле: агенты логов и мониторинга
Job / CronJobРазовая задача и задача по расписанию
ServiceПостоянный адрес для группы подов, внутренняя балансировка нагрузки
IngressМаршрутизация внешнего HTTP/HTTPS-трафика по доменам и путям
ConfigMap / SecretНастройки и секреты, отдельно от образа приложения
PersistentVolume / PVCПостоянное хранилище, которое переживает перезапуск пода

10. Способы установки: обзор

Способов установить Kubernetes много. Они различаются по сложности, назначению и по тому, кто отвечает за обслуживание. Ниже — основные варианты.

СпособДля чегоСложность
kubeadmКлассический способ собрать кластер вручную, понять устройствоСредняя
KubesprayУстановка через Ansible, подходит для серверов в своей инфраструктуреСредняя
MinikubeУчёба и тесты на одной машинеНизкая
kindКластер из контейнеров Docker, удобен для тестов CIНизкая
k3sЛёгкий дистрибутив для edge, IoT, небольших серверовНизкая
RKE2 / RancherКорпоративная платформа с веб-интерфейсомСредняя
kopsУстановка и управление кластером в AWSСредняя
OpenShiftКорпоративная платформа от Red Hat с расширенными возможностями безопасностиВысокая
Managed (EKS, GKE, AKS, Яндекс Managed Service for Kubernetes)Облако само ставит и обслуживает control planeНизкая

11. kubeadm: установка «по-взрослому» вручную

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

Общие шаги на каждом сервере и на управляющем узле:

  1. Подготовить серверы: отключить swap, настроить время (NTP), открыть нужные порты.
  2. Установить container runtime (containerd) и настроить его для kubelet.
  3. Установить kubeadm, kubelet и kubectl нужной версии.
  4. На управляющем узле выполнить инициализацию кластера.
  5. Установить сетевой плагин (CNI), например Calico или Flannel.
  6. На рабочих узлах присоединиться командой kubeadm join, которую выдаёт инициализация.
# На управляющем узле
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

# Проверить, что узлы видны
kubectl get nodes
ВажноТочные команды, версии и параметры зависят от вашей ОС и версии Kubernetes. Перед установкой сверяйтесь с официальной документацией, она обновляется чаще любой статьи.

12. Kubespray: установка через Ansible

Kubespray — набор ролей и плейбуков Ansible, который ставит production-готовый кластер на ваши серверы. Если вы уже знаете Ansible, порог входа низкий: вы описываете инвентарь серверов и запускаете плейбук.

# Общий порядок (сокращённо)
git clone https://github.com/kubernetes-sigs/kubespray.git
cd kubespray
pip install -r requirements.txt
cp -rfp inventory/sample inventory/mycluster
# Заполнить inventory/mycluster/inventory.ini адресами серверов
ansible-playbook -i inventory/mycluster/inventory.ini cluster.yml -b
ЛайфхакЕсли вы освоили Ansible по нашей заметке, Kubespray будет понятен: это тот же инвентарь, те же переменные и роли, только для целого кластера.

13. Лёгкие варианты для обучения и тестов

minikube start
kubectl get nodes

kind create cluster --name test

14. Управляемые сервисы в облаке

В облаке control plane обычно обслуживает сам провайдер: обновляет, делает резервные копии, следит за доступностью. Вы управляете только рабочими узлами и приложениями. Примеры: Amazon EKS, Google GKE, Azure AKS, Яндекс Managed Service for Kubernetes. Это самый простой путь для production, если нет причин держать кластер у себя.

15. Как выбрать способ установки

16. Полезные ссылки

↑ Наверх