intermediate
Pod
Понимайте наименьшую планируемую единицу: один или несколько контейнеров с общей сетевой идентичностью, volumes и lifecycle.
Pod — наименьшая планируемая единица Kubernetes. В нём может быть основной контейнер плюс sidecar с общей сетевой идентичностью, volumes и lifecycle — но масштабирование приложения обычно означает больше pod'ов, а не «толще» pod.
apiVersion: v1
kind: Pod
metadata:
name: api
labels:
app: api
spec:
containers:
- name: node
image: my-api:1.2.0
ports:
- containerPort: 3000
resources:
requests:
cpu: 100m
memory: 256Mi
limits:
memory: 512Mi
Контейнеры в pod делят `localhost` и могут монтировать одни volumes. Init containers выполняются до старта app-контейнеров.
На интервью: общий localhost, restart policy, requests/limits, sidecar, init containers и эфемерность pod'ов.
Типовые ошибки: стабильные pod IP; несвязанные процессы в одном pod; отсутствие resource requests — ломаются scheduling и HPA.
Компромисс — удобство колокации против независимого масштабирования и изоляции сбоев.
Чеклист:
- Pod'ы эфемерны.
- Задавайте requests и limits.
- Sidecar только при общем lifecycle.
- Для приложений — Deployment, не голый Pod.