Объекты Kubernetes: Pod, Deployment, Service и ConfigMap
Коротко: В Kubernetes желаемое состояние описывается объектами: поды запускают контейнеры, deployment поддерживают их работу, service делают их доступными, а ConfigMap/Secret поставляют конфигурацию.
Подробнее: Kubernetes (K8s) — это система, которая управляет контейнерами на множестве машин. В YAML-файлах вы описываете, что должно работать; Kubernetes следит, чтобы фактическое состояние соответствовало желаемому (перезапуск при сбое, распределение, масштабирование).
Подробности
Важнейшие объекты
- Pod: наименьшая единица; один или несколько контейнеров с общей сетью и хранилищем. Поды недолговечны.
- Deployment: управляет подами приложения: число реплик, плавные обновления (rolling updates) (новая версия шаг за шагом), откат.
- Service: стабильный адрес и балансировка нагрузки для группы подов (ClusterIP внутренний, NodePort/LoadBalancer внешний).
- Ingress: маршрутизация HTTP снаружи (домены, пути, TLS).
- ConfigMap: значения конфигурации; Secret: чувствительные значения (в кодировке Base64, лучше с внешним шифрованием).
- Namespace: логическое разделение (dev, prod).
- PersistentVolume/Claim: постоянное хранилище. StatefulSet для приложений с состоянием (базы данных), Job/CronJob для задач.
Пример
apiVersion: apps/v1
kind: Deployment
metadata:
name: web
spec:
replicas: 3
selector:
matchLabels: { app: web }
template:
metadata:
labels: { app: web }
spec:
containers:
- name: web
image: my-app:1.2.0
ports: [{ containerPort: 3000 }]
readinessProbe:
httpGet: { path: /health, port: 3000 }
apiVersion: v1
kind: Service
metadata:
name: web
spec:
selector: { app: web }
ports: [{ port: 80, targetPort: 3000 }]kubectl apply -f file.yaml, kubectl get pods, kubectl logs pod, kubectl describe pod, kubectl rollout undo deployment/web.
Важные понятия
Метки и селекторы (labels and selectors) связывают объекты. Пробы (liveness/readiness) проверяют работоспособность. Лимиты ресурсов (CPU, память) не дают одному приложению использовать всё. Автомасштабирование (HPA) подстраивает число реплик под нагрузку. Декларативно вместо императивно: файл YAML — источник истины, в идеале в Git (GitOps).
Начало и оценка
Для обучения: minikube, kind, k3s или Docker Desktop локально. В production используют управляемые службы (GKE, EKS, AKS). K8s мощен, но сложен; для небольших проектов часто достаточно Docker Compose или платформы (Vercel, Fly.io). Сначала изучите контейнеры и сети.
См. также: Основы Kubernetes, Docker Compose