Kubernetes:
Оркестратор Вселенной

Как управлять сотней контейнеров и не сойти с ума. Поды, Сервисы и Декларативная магия.

1. Что такое K8s?

Если Docker — это один музыкант, то Kubernetes (K8s) — это дирижер оркестра.

Главный принцип: Декларативность. Ты не говоришь "запусти сервер". Ты пишешь в YAML: "Я хочу, чтобы было 3 сервера". K8s сам решает, как это сделать и следит, чтобы их всегда было 3.

2. Архитектура

🧠 Control Plane (Master)

Мозг кластера.

  • API Server: Единственная точка входа (kubectl общается с ним).
  • Scheduler: Решает, на какой сервер поселить новый Pod.
  • Etcd: База данных кластера. Хранит всё состояние.

💪 Worker Node

Рабочая лошадка.

  • Kubelet: Агент. Получает приказы от Мастера и запускает контейнеры.
  • Kube-proxy: Сетевой маг. Пересылает трафик к нужному Pod-у.

3. Pod (Атом)

K8s не запускает контейнеры напрямую. Он запускает Pod-ы.

Pod — это "оболочка" для одного (или пары) контейнеров. У них общий IP и общие тома.

// pod.yaml

apiVersion: v1
kind: Pod
metadata:
name: my-nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2

Важно: Pod смертен. Если он упал, K8s создаст новый, с новым IP.

4. Deployment (Завод)

Никто не создает Pod-ы вручную. Мы создаем Deployment. Это "менеджер", который следит за количеством копий.

// deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata: { name: web-app }
spec:
replicas: 3 # Хочу 3 копии всегда!
selector: { matchLabels: { app: nginx } }
template:
# (тут описание Pod-а)

Если один Pod умрет, Deployment тут же создаст новый, чтобы их снова стало 3.

5. Service & Ingress

Pod-ы постоянно умирают и меняют IP. Как к ним обращаться стабильно?

Service — это "стабильный номер телефона". Вы звоните на Service, а он переключает вас на любой живой Pod.

ClusterIP

Только внутри кластера. База данных, бэкенд.

NodePort

Открывает порт на каждом сервере (например, 30001).

Ingress

Входная дверь. Маршрутизация по доменам (app.com -> service-a).

6. Данные и Конфиги

Где хранить пароли и файлы, если Pod-ы умирают? Кликни.

ConfigMap

Для чего: Обычные настройки (не секретные).
Например: nginx.conf, переменные окружения APP_COLOR=blue.
Они подключаются к Pod-у как файлы или env-vars. Позволяет менять настройки без пересборки Docker-образа.