1. Установите минимум и максимум для ресурсов. Без ограничений продакшен-кластеры и узлы могут выйти из строя.
2. Пользуйтесь преимуществами декларативных YAML-файлов. Замените императивные команды
kubectl (к примеру, kubectl run) на декларативные файлы YAML. Они позволяют хранить и версионировать все ваши объекты вместе с вашим кодом. Если что-то пойдет не так, вы сможете легко откатить развёртывания просто восстановив более ранний файл YAML. А ещё ваша команда сможет видеть текущий статус кластера и изменения, внесенные в него с течением времени.3. По возможности не используйте голые поды. В случае отказа узла они не будут автоматически перенесены в другой узел. Поэтому обязательно связывайте их с Deployments, ReplicaSets и Jobs.
4. Не забывайте маркировать объекты – контейнеры, сервисы, поды, сети и т. д. В метки вы можете занести информацию о владельце, версии, экземпляре, компоненте, проекте, команде, уровне конфиденциальности и др.
5. Сделайте пробы готовности независимыми. Они не должны быть зависимыми от:
• базы данных;
• миграции баз данных;
• API;
• сервисов сторонних производителей.
6. Установите Quality of Service (QoS) для ваших подов. Выбор класса QoS влияет на производительность приложения в кластере Kubernetes. Если правильно настроите QoS, то сможете эффективно распределять ресурсы и обеспечивать бесперебойную работу приложений.
7. Обязательно указывайте адекватные реквесты и лимиты ресурсов. Реквесты помогут правильно распределить ваши workloads по узлам. Лимиты помогут избежать проблем с узлами и другими workloads, выполняемыми на том же узле в случае утечек памяти или слишком большого потребления CPU.
🗂 Какие инструменты и технологии вы хотели бы увидеть в подборке лучших практик? Пишите свои пожелания в комментариях.
#bestpractices #devops #kubernetes
