Если ты деплоишь сервисы в Kubernetes, скорее всего, ты уже наступал на эти грабли. А если нет — вот чеклист, чтобы не наступить.

  1. Не включён livenessProbe и readinessProbe
    Без этих пробы Kubernetes не понимает, когда перезапустить контейнер или исключить под из сервисов. В итоге — трафик идёт в мёртвые инстансы, а ты ловишь 500-е.

livenessProbe: httpGet: path: /healthz port: 8080 initialDelaySeconds: 3 periodSeconds: 10

  1. resources.requests и limits не заданы
    Если не выставить ресурсы, поды будут жрать всё подряд, а kube-scheduler может завалить ноды. Определи baseline и поставь лимиты с запасом:

resources: requests: cpu: “100m” memory: “128Mi” limits: cpu: “500m” memory: “512Mi”

  1. Один replica на под в проде
    Если у тебя только один реплика, ты не в HA. Любая перезагрузка = даунтайм. Минимум две — лучше три.

  2. latest тег образа
    image: myapp:latest — это лотерея. K8s не знает, что образ поменялся, и не перезапускает поды. Используй versioned теги (v1.2.3) или внедри CI, который автоматически делает новый тег и rollout.

  3. Нет ограничений по PodDisruptionBudget
    Без PDB можно случайно прибить все поды при drain’е ноды или апдейте. Добавь минимум 1 живой под:

minAvailable: 1

  1. Логи в /var/log или вообще stdout игнорируется
    Всё, что не идёт в stdout/stderr, теряется. Используй sidecar’ы или shipper’ы типа Fluent Bit, если хочешь нормальный логинг.

  2. Секреты хранятся в plaintext в Git
    Kubernetes Secret — это base64, а не шифрование. Либо используй sealed-secrets, либо интеграцию с HashiCorp Vault, SOPS или AWS KMS.

Вывод: даже базовые настройки могут сыграть злую шутку, если их игнорировать. Сделай себе шаблон Helm-чарта или Kustomize-паттерн, в котором всё это будет по умолчанию. И не забудь периодически пересматривать best practices — K8s развивается 🔄

#devops #девопс

Авторские права

Автор: Vasiliy Fakunin

Ссылка: https://notes.melancholic.tech/posts/kubernetes-%D0%B2-%D0%BF%D1%80%D0%BE%D0%B4%D0%B5-7-%D0%BE%D1%88%D0%B8%D0%B1%D0%BE%D0%BA-%D0%BA%D0%BE%D1%82%D0%BE%D1%80%D1%8B%D0%B5-%D1%81%D0%BE%D0%B2%D0%B5%D1%80%D1%88%D0%B0%D1%8E%D1%82-%D0%B4%D0%B0%D0%B6%D0%B5-%D0%BE%D0%BF%D1%8B%D1%82%D0%BD%D1%8B%D0%B5/

Лицензия: CC BY-NC-SA 4.0

Использование материалов блога разрешается при условии: указания авторства/источника, некоммерческого использования и сохранения лицензии.

Начать поиск

Введите ключевые слова для поиска статей

↑↓
ESC
⌘K Горячая клавиша