Гайды
Kubernetes: Pods, Deployments и Services
Pod и эфемерность, Deployment с пробами, Service и ClusterIP, ConfigMap, Secret и requests/limits.
~12 мин чтения
Kubernetes: Pods, Deployments и Services
Kubernetes оркестрирует контейнеры: планирование на узлы, рестарты, масштабирование, сервис-дискавери. Этот гайд — три базовых объекта: Pod, Deployment, Service. Локальный кластер: minikube, kind, k3d. Docker-образы — Docker: контейнеризация; пакеты и маршрутизация — Helm, Ingress.
1. Pod
Минимальная единица планирования: один или несколько контейнеров с общей сетью (localhost между ними) и volumes.
apiVersion: v1
kind: Pod
metadata:
name: demo
spec:
containers:
- name: app
image: myapp:1.0.0
ports:
- containerPort: 8000
Pods эфемерны; напрямую их редко создают в проде без контроллера.
2. Deployment
Поддерживает желаемое число реплик, rolling update, откат.
apiVersion: apps/v1
kind: Deployment
metadata:
name: api
spec:
replicas: 3
selector:
matchLabels:
app: api
template:
metadata:
labels:
app: api
spec:
containers:
- name: api
image: myapp:1.0.0
ports:
- containerPort: 8000
readinessProbe:
httpGet:
path: /health/ready
port: 8000
livenessProbe:
httpGet:
path: /health/live
port: 8000
readinessProbe — трафик не идёт, пока не готов; livenessProbe — рестарт при зависании. Пример health — Деплой FastAPI: Docker и Nginx.
3. Service
Стабильный virtual IP (ClusterIP) или балансировщик облака (LoadBalancer) к подам по label selector.
apiVersion: v1
kind: Service
metadata:
name: api
spec:
selector:
app: api
ports:
- port: 80
targetPort: 8000
type: ClusterIP
NodePort / LoadBalancer / Ingress — уровни доступа снаружи кластера.
4. ConfigMap и Secret
Конфиг без секретов — ConfigMap (env или volume). Пароли/TLS — Secret (base64 в манифесте — слабость; лучше Sealed Secrets, External Secrets Operator, cloud provider integration).
5. Ресурсы
resources:
requests:
cpu: "100m"
memory: "256Mi"
limits:
memory: "512Mi"
Requests влияют на планирование; limits — ограничение и OOMKill.
6. Чек-лист
- Образ с immutable tag (
:1.2.3). - Пробы согласованы с реальными эндпоинтами.
-
PodDisruptionBudgetдля критичных сервисов (следующие шаги изучения k8s). - Логи через sidecar/агент или централизованный сбор кластера.
Дальше: Helm · Prometheus Operator · тег Kubernetes