Вопросы и ответы про Managed Service for Kubernetes
Общие вопросы
Какие сервисы доступны по умолчанию в кластерах Managed Service for Kubernetes?
По умолчанию доступны:
- Cервер метрик (Metrics Server) для агрегации данных об использовании ресурсов в кластере Kubernetes.
- Плагин Kubernetes для CoreDNS для разрешения имен в кластере.
- DaemonSet с поддержкой CSI-плагинов для работы с постоянными томами (
PersistentVolume
).
Какая версия Kubernetes CLI (kubectl) должна быть установлена для полноценной работы с кластером?
Мы рекомендуем использовать последнюю доступную официальную версию kubectl, чтобы избежать проблем совместимости.
Сможет ли Yandex Cloud восстановить работоспособность кластера, если я допущу ошибки при его настройке?
Мастер находится под управлением Yandex Cloud, поэтому вы не сможете его повредить. Если у вас возникли проблемы с компонентами кластера Kubernetes, обратитесь в техническую поддержку.
Кто будет заниматься мониторингом здоровья кластера?
Yandex Cloud. В кластере проводится мониторинг повреждений файловой системы (corrupted file system), неисправностей ядра (kernel deadlock), потери связи с интернетом и проблем с компонентами Kubernetes. Мы также разрабатываем механизм автоматического восстановления для неисправных компонентов.
Как быстро Yandex Cloud закрывает уязвимости, обнаруженные в системе безопасности? Что делать, если злоумышленник успеет воспользоваться уязвимостью, и мои данные пострадают?
Сервисы Yandex Cloud, образы и конфигурация мастера изначально проходят различные проверки на безопасность и соответствие стандартам.
Пользователи могут выбрать периодичность установки обновлений в зависимости от решаемых задач и конфигурации кластера. Необходимо учитывать направления атаки и уязвимость приложений, развернутых в кластере Kubernetes. Факторами, влияющими на безопасность приложений, могут быть политики сетевой безопасности между приложениями, уязвимости внутри Docker-контейнеров, а также некорректный режимом запуска контейнеров в кластере.
Хранилище данных
Какие существуют особенности работы с дисковым хранилищем при размещении БД (MySQL, PostgreSQL и т. д.) в кластере Kubernetes?
При размещении БД в кластере Kubernetes используйте контроллеры StatefullSet. Мы не рекомендуем запускать в Kubernetes statefull-сервисы в постоянными томами. Для работы с базами данных statefull-сервисов используйте управляемые базы данных Yandex Cloud, например Managed Service for MySQL или Managed Service for PostgreSQL.
Как подключить под к управляемым базам данных Yandex Cloud?
Чтобы подключиться к управляемой базе данных Yandex Cloud, расположенной в той же сети, укажите имя ее хоста и FQDN.
Для подключения сертификата базы данных к поду используйте объекты типа secret
или configmap
.
Как правильно подключить постоянный том к контейнеру?
Вы можете выбрать режим для подключения дисков Compute Cloud в зависимости от ваших нужд:
- Чтобы Kubernetes автоматически подготовил объект
PersistentVolume
и настроил новый диск, создайте под с динамически подготовленным томом. - Чтобы использовать уже существующие диски Compute Cloud, создайте под со статически подготовленным томом.
Подробнее читайте в разделе Работа с постоянными томами.
Какие типы томов поддерживает Managed Service for Kubernetes?
Managed Service for Kubernetes поддерживает работу с временными (Volume
) и постоянными (PersistentVolume
) томами. Подробнее читайте в разделе Том.
Автоматическое масштабирование
Почему в моем кластере стало N узлов и он не уменьшается?
Автоматическое масштабирование не останавливает узлы с подами, которые не могут быть расселены. Масштабированию препятствуют:
- Поды, расселение которых ограничено с помощью PodDisruptionBudget.
- Поды в пространстве имен
kube-system
:- которые созданы не под управлением контроллера DaemonSet;
- для которых не установлен
PodDisruptionBudget
или расселение которых ограничено с помощьюPodDisruptionBudget
.
- Поды, которые не были созданы под управлением контроллера репликации (ReplicaSet, Deployment или StatefulSet).
- Поды с
local-storage
. - Поды, которые не могут быть расселены куда-либо из-за ограничений. Например, при недостатке ресурсов или отсутствии узлов, подходящих по селекторам affinity или anti-affinity.
- Поды, на которых установлена аннотация, запрещающая расселение:
"cluster-autoscaler.kubernetes.io/safe-to-evict": "false"
.
Примечание
Поды kube-system
, поды с local-storage
и поды без контроллера репликации можно расселить. Для этого установите аннотацию "safe-to-evict": "true"
:
kubectl annotate pod <имя пода> cluster-autoscaler.kubernetes.io/safe-to-evict=true
Другие возможные причины:
-
Группа узлов уже достигла минимального размера.
-
Узел простаивает менее 10 минут.
-
В течение последних 10 минут группа узлов была масштабирована в сторону увеличения.
-
В течение последних 3 минут в группе узлов была неудачная попытка масштабирования в сторону уменьшения.
-
Произошла неудачная попытка остановить определенный узел. В этом случае следующая попытка происходит по истечении 5 минут.
-
На узле установлена аннотация, которая запрещает останавливать его при масштабировании:
"cluster-autoscaler.kubernetes.io/scale-down-disabled": "true"
. Аннотация можно добавить или снять с помощьюkubectl
.Проверьте наличие аннотации на узле:
kubectl describe node <имя узла> | grep scale-down-disabled
Результат выполнения команды:
Annotations: cluster-autoscaler.kubernetes.io/scale-down-disabled: true
Установите аннотацию:
kubectl annotate node <имя узла> cluster-autoscaler.kubernetes.io/scale-down-disabled=true
Снять аннотацию можно, выполнив команду
kubectl
со знаком-
:kubectl annotate node <имя узла> cluster-autoscaler.kubernetes.io/scale-down-disabled-
Почему под удалился, а размер группы узлов не уменьшается?
Если узел недостаточно нагружен, он удаляется по истечении 10 минут.
Почему автоматическое масштабирование не выполняется, хотя количество узлов меньше минимума / больше максимума?
Установленные лимиты не будут нарушены при масштабировании, но Managed Service for Kubernetes не следит за соблюдением границ намеренно. Масштабирование в сторону увеличения сработает только в случае появления подов в статусе unschedulable
.
Ответы на другие вопросы об автоматическом масштабировании смотрите в документации Kubernetes.
Настройка и обновление
Что делать, если часть моих данных потеряется при обновлении версии Kubernetes?
Данные не потеряются: перед обновлением версии Kubernetes Managed Service for Kubernetes подготавливаем для них резервные копии. Вы можете самостоятельно настроить резервное копирование кластера в Yandex Object Storage. Также мы рекомендуем выполнять резервное копирование баз данных средствами самого приложения.
Можно ли настроить резервное копирование для кластера Kubernetes?
Данные в кластерах Managed Service for Kubernetes надежно хранятся и реплицируются в инфраструктуре Yandex Cloud. Однако в любой момент вы можете сделать резервные копии данных из групп узлов кластеров Kubernetes и хранить их в Yandex Object Storage или другом хранилище.
Подробнее читайте в разделе Резервное копирование кластера Managed Service for Kubernetes в Yandex Object Storage.
Будут ли ресурсы простаивать при обновлении версии Kubernetes?
При обновлении мастера будут простаивать ресурсы Control Plane. Поэтому такие операции, как создание или удаление группы узлов, будут недоступны. Пользовательская нагрузка на приложение продолжит обрабатываться.
Если значение max_expansion
больше нуля, при обновлении групп узлов создаются новые узлы. На них переводится вся нагрузка, а старые группы узлов удаляются. Простой при этом будет равен времени рестарта пода при перемещении в новую группу узлов.
Можно ли прислать вам YAML-файл с конфигурацией, чтобы вы применили его к моему кластеру?
Нет. Вы можете использовать kubeconfig-файл, чтобы применить YAML-файл с конфигурацией кластера самостоятельно.
Можете ли вы установить Web UI Dashboard, Rook и другие инструменты?
Нет. Вы можете установить все необходимые инструменты самостоятельно.
Ресурсы
Какие ресурсы требуются для обслуживания кластера Kubernetes, в который входит группа, например, из трех узлов?
Для каждого узла необходимы ресурсы для запуска компонентов, которые отвечают за функционирование узла как части кластера Kubernetes. Подробнее читайте в разделе Динамическое резервирование ресурсов.
Можно ли изменять ресурсы для каждого узла в кластере Kubernetes?
Вы можете изменять ресурсы только для группы узлов. В одном кластере Kubernetes можно создавать группы с разными конфигурациями и размещать их в разных зонах доступности. Подробнее читайте в разделе Изменение группы узлов.
Кто будет следить за масштабированием кластера Kubernetes?
В Managed Service for Kubernetes можно включить автоматическое масштабирование кластера.
Логи
Я могу получить логи моей работы в сервисах?
Да, вы можете запросить записи о том, что происходило с вашими ресурсами, из логов сервисов Yandex Cloud. Подробнее читайте в разделе Запросы данных.
Можно ли самостоятельно сохранять логи?
Для сбора и хранения логов используйте Fluent Bit.
Есть ли поддержка Horizontal Pod Autoscaler?
Да, Managed Service for Kubernetes поддерживает механизм горизонтального автомасштабирования подов (Horizontal Pod Autoscaler).