Продакшен в Kubernetes — это всегда проверка на прочность. Ошибки в базовых настройках могут стоить простоев, потерь данных и бессонных ночей. Рассказываю, что обязательно учесть, чтобы спать спокойно.
1. Настройте PodDisruptionBudget (PDB)
Без PDB кластер-автоапдейты или масштабирование могут случайно снести все поды вашего сервиса. Обязательно задайте minAvailable или maxUnavailable, чтобы контролировать, сколько подов можно уронить.
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
name: my-app-pdb
spec:
minAvailable: 2
selector:
matchLabels:
app: my-app2. Лимитируйте ресурсы подов (requests и limits)
Без лимитов одно неудачное приложение может заддосить весь нод. Обязательно указывайте resources в манифестах.
resources:
requests:
cpu: "200m"
memory: "512Mi"
limits:
cpu: "500m"
memory: "1Gi"3. Включите livenessProbe и readinessProbe
Без них Kubernetes не сможет корректно понимать, когда приложение мертво или еще не готово к трафику. Лишние 10 строк YAML могут спасти тысячи пользователей.
livenessProbe:
httpGet:
path: /healthz
port: 8080
initialDelaySeconds: 15
timeoutSeconds: 5
readinessProbe:
httpGet:
path: /ready
port: 8080
initialDelaySeconds: 5
timeoutSeconds: 34. Логируйте правильно
Никогда не пишите логи в файл внутри контейнера! Используйте stdout/stderr, чтобы всё шло через стандартные механизмы логирования кластера (например, через Fluentd или Loki).
5. Сетевые политики (NetworkPolicy)
Открытый по умолчанию трафик внутри кластера — угроза безопасности. Настройте NetworkPolicy, чтобы явно разрешать трафик между подами.
Вывод:
Эти пять практик — обязательная база для продакшена в Kubernetes. Они минимизируют неожиданные падения, повышают безопасность и делают поддержку сервисов гораздо проще. Самая частая ошибка — полагать, что “и так сойдет” на старте. Не экономьте время на правильных настройках — потом сэкономите недели на устранении последствий.
👉 @devops_star