Карта / Kubernetes / Pod, Deployment

Pod, Deployment

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

Pod — минимальная единица в Kubernetes, обычно один контейнер (иногда несколько тесно связанных) внутри:

apiVersion: v1
kind: Pod
metadata:
  name: my-app
spec:
  containers:
    - name: app
      image: my-app:1.0
      ports:
        - containerPort: 8080

Deployment — управляет жизненным циклом подов: сколько копий запущено, что делать при сбое, как выкатывать новую версию:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
spec:
  replicas: 3                  # держать 3 копии пода постоянно
  selector:
    matchLabels: { app: my-app }
  template:
    metadata:
      labels: { app: my-app }
    spec:
      containers:
        - name: app
          image: my-app:1.0
Копнуть глубже

Self-healing — главная сила Deployment. Если под упадёт (приложение упало, контейнер завершился) — Deployment автоматически создаёт новый под взамен, чтобы поддерживать заданное число replicas. Это происходит без вмешательства человека — система сама восстанавливается после сбоя отдельных копий.

Rolling update — обновление без простоя. При деплое новой версии Deployment постепенно заменяет старые поды новыми (не убивает все сразу) — в любой момент часть подов работает на старой версии, часть — на новой, и трафик продолжает обслуживаться без перерыва. Если новая версия начинает массово падать, можно остановить обновление и откатиться.

Liveness и Readiness Probe связаны с тем же /health-эндпоинтом Actuator (см. тему «Actuator») — Kubernetes регулярно опрашивает под, чтобы понять, жив ли он (liveness) и готов ли принимать трафик (readiness), и принимает решения на основе этих проверок.

🎤 Закрыл тему, если можешь объяснить:
• разницу Pod и Deployment;
• что такое self-healing и rolling update (если дошёл до 2-го слоя).