Рекомендации по использованию Managed Service for Kubernetes
Используйте эти рекомендации для ваших PRODUCTION
-приложений, которым требуется:
- Высокая доступность и отказоустойчивость.
- Масштабирование нагрузки.
- Изоляция ресурсов.
Высокая доступность и отказоустойчивость
- Используйте релизный канал
REGULAR
илиSTABLE
. Для всех версий Kubernetes доступны NodeLocal DNS и Pod Topology Constraints .
Совет
Используйте релизный канал RAPID
для тестовых окружений, чтобы быстрее тестировать обновления Kubernetes и Managed Service for Kubernetes.
-
Обновляйте кластер и группы узлов вручную. Для этого отключите автоматические обновления мастера и групп узлов.
-
Выбирайте региональный тип мастера при создании кластера. Сервисы Kubernetes будут доступны в случае сбоя на уровне зоны доступности. Соглашение об уровне обслуживания
сервиса Managed Service for Kubernetes распространяется на конфигурацию с региональным мастером. -
Разворачивайте сервисы типа
Deployment
иStatefulSet
в нескольких экземплярах в разных зонах доступности. Используйте стратегии Pod Topology Constraints и AntiAffinity , чтобы обеспечить высокую доступность сервисов и эффективное потребление ресурсов кластера Kubernetes.Для всех стратегий используйте комбинации меток:
topology.kubernetes.io/zone
, чтобы сервисы сохраняли доступность в случае отказа зоны доступности.kubernetes.io/hostname
, чтобы сервисы сохраняли доступность в случае отказа узла кластера.
Совет
Протестируйте стратегии на тестовом окружении перед внедрением в
PRODUCTION
.
Масштабирование нагрузки
Используйте эти рекомендации, если нагрузка на ваш кластер Managed Service for Kubernetes постоянно растет:
- Для повышения надежности кластера создавайте группы узлов с автоматическим масштабированием в нескольких зонах доступности.
- Для снижения нагрузки на Kubernetes DNS используйте NodeLocal DNS. Если кластер содержит более 50 узлов, используйте автоматическое масштабирование DNS.
- Чтобы снизить горизонтальный трафик внутри кластера, используйте Сетевой балансировщик нагрузки и правило
externalTrafficPolicy:Local
, если это возможно. - Заранее продумайте требования к хранилищам узлов:
- Изучите лимиты дисков для Yandex Compute Cloud.
- Проведите нагрузочное тестирование дисковой подсистемы в тестовом окружении.
- Для снижения задержки при высоких показателях IOPS используйте нереплицируемые диски.
Изоляция ресурсов
Применяйте эти рекомендации для приложений, использующих общие ресурсы кластера Kubernetes.
Настройте значения limits
и requests
для всех сервисов кластера:
---
...
containers:
...
resources:
limits:
cpu: 250m
memory: 128Mi
requests:
cpu: 100m
memory: 64Mi
...
Укажите доступность vCPU в тысячных долях, а RAM — в мегабайтах. Сервис не превысит лимиты vCPU и RAM, указанные в значениях limits
. Настройка requests
позволяет масштабировать узлы кластера при помощи автоматического масштабирования.
Чтобы автоматически управлять ресурсами подов, настройте политики Kubernetes:
- Quality of Service for Pods
для создания подов различных классов доступности. - Limit Ranges
для установки лимитов на уровне пространства имен.