Статья
Kubernetes в production: 30 уроков за 3 года эксплуатации
▶ Показать содержание 7 разделов~1 мин
Всем привет! Меня зовут Павел Никитин, и я занимаюсь DevOps-инженерией — Kubernetes, Proxmox, автоматизация CI/CD. За 3 года эксплуатации K8s в production накопил много граблей. Делюсь.
Kubernetes — мощный инструмент, но он наказывает за небрежность. Вот главные уроки.
Ресурсы
- Всегда ставьте requests И limits — без них scheduler не знает, куда класть поды
- Requests ≠ Limits — limits выше requests на 20−50%, иначе OOMKill при пиках
- VPA > ручной тюнинг — Vertical Pod Autoscaler подберёт значения за вас
Networking
- NetworkPolicy с первого дня — default deny, разрешайте явно
- Не используйте NodePort в production — LoadBalancer или Ingress
- DNS caching — NodeLocal DNSCache экономит 30% latency
Storage
- StatefulSet для стейтфул приложений — не Deployment с PVC
- Бекапьте etcd — потеря etcd = потеря кластера
- StorageClass с reclaimPolicy: Retain — чтобы PV не удалялся случайно
Безопасность
- Pod Security Standards — restricted для всех namespace
- Не запускайте от root — runAsNonRoot: true
- Secrets — не в git — используйте Sealed Secrets или External Secrets
- RBAC минимальных привилегий — каждый сервис видит только своё
Observability
- Три столпа: metrics (Prometheus), logs (Loki), traces (Jaeger)
- Алерты на SLO, не на симптомы
- Dashboards as Code — Grafana + jsonnet/Grafonnet
Деплой
- GitOps (ArgoCD/Flux) — никакого kubectl apply из ноутбука
- Canary deploys — через Argo Rollouts или Flagger
- Helm для шаблонизации, но values.yaml per environment
Главный урок
K8s — не серебряная пуля. Если у вас 3 сервиса и 2 сервера — вам не нужен Kubernetes. Но если 50+ сервисов и команда из 10+ разработчиков — K8s окупается сторицей.
Какие грабли были у вас? Делитесь!
33