Конфигурация Kubernetes — это фундамент стабильного, безопасного и управляемого кластера. Есть ключевые практики, которые стоит внедрить сразу.
🔵 Общие правила настройки
✅Используйте последнюю стабильную версию API.
Старые API (например, apps/v1beta2) скоро устареют. Всегда проверяйте актуальность в документации.
✅ Сохраняйте конфигурацию в системе контроля версий.
Все манифесты — в Git. Это история, откат и основа для GitOps. Секреты — через External Secrets Operator.
✅Добавляйте метки и аннотации осмысленно.
Метки (labels) — для селекторов и организации. Аннотации (annotations) — для служебной информации (версии, ссылки на тикеты).
✅Устанавливайте лимиты и запросы ресурсов.
Всегда задавайте requests и limits для CPU и памяти. Это защищает ноды и помогает планировщику.
🔵 Управление рабочими нагрузками: Поды, Развертывания и Задания
✅Используйте подходящий тип рабочей нагрузки.
— Deployment — для stateless-приложений.
— StatefulSet — для БД и данных с устойчивыми идентификаторами.
— Job/CronJob — для разовых и периодических задач.
✅Настраивайте политики перезапуска и обновления.
— Для Deployment используйте strategy.type: RollingUpdate.
— Всегда настраивайте PodDisruptionBudget, чтобы обновления не сломали доступность.
✅Запускайте контейнеры без прав root.
securityContext:
runAsNonRoot: true
runAsUser: 1000
seccompProfile:
type: RuntimeDefault
✅Настройка сервисов и сети
— ClusterIP — для внутреннего общения.
— LoadBalancer или NodePort — для внешнего доступа.
— Используйте Ingress для маршрутизации HTTP/HTTPS трафика.
✅Используйте возможности DNS.
Сервисы доступны по имени вида <service>.<namespace>.svc.cluster.local. Это основа для сервис-ориентированной архитектуры
Качество конфигурации определяет, будет ли кластер вашей опорой или источником проблем.
Подробнее в официальной статье: Kubernetes Configuration Good Practices
#заметкиИнженера
