Установка Kubernetes Node Remediation
Kubernetes Node Remediation
Решение состоит из двух контроллеров:
- Node Healthcheck Controller — отслеживает сбои.
- Self Node Remediation Controller — переносит нагрузку с неисправных узлов и восстанавливает их.
Перед началом работы
-
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду
yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров--folder-nameили--folder-id. -
Убедитесь, что группы безопасности для кластера Managed Service for Kubernetes и его групп узлов настроены корректно. Если отсутствует какое-либо из правил — добавьте его.
Важно
От настройки групп безопасности зависит работоспособность и доступность кластера, а также запущенных в нем сервисов и приложений.
-
Установите kubectl
и настройте его на работу с созданным кластером.
Установка с помощью Yandex Cloud Marketplace
- Перейдите на страницу каталога
и выберите сервис Managed Service for Kubernetes. - Нажмите на имя нужного кластера и выберите вкладку
Marketplace. - В разделе Доступные для установки приложения выберите Kubernetes Node Remediation и нажмите кнопку Перейти к установке.
- Задайте настройки приложения:
- Пространство имен — создайте новое пространство имен (например,
remediation-space). Если вы оставите пространство имен по умолчанию, Kubernetes Node Remediation может работать некорректно. - Название приложения — укажите название приложения.
- Пространство имен — создайте новое пространство имен (например,
- Нажмите кнопку Установить.
- Дождитесь перехода приложения в статус
Deployed. - Создайте ресурс
NodeHealthCheck.
Установка с помощью Helm-чарта
-
Установите менеджер пакетов Helm
версии не ниже 3.8.0. -
Для установки Helm-чарта
с Kubernetes Node Remediation выполните команду:helm pull oci://cr.yandex/yc-marketplace/yandex-cloud/medik8s/kubernetes-node-remediation/chart/kubernetes-node-remediation \ --version 1.0.1 \ --untar && \ helm install \ --namespace <пространство_имен> \ --create-namespace \ kubernetes-node-remediation ./kubernetes-node-remediation/Если вы укажете в параметре
namespaceпространство имен по умолчанию, Kubernetes Node Remediation может работать некорректно. Рекомендуем указывать значение, отличное от всех существующих пространств имен (например,remediation-space).Примечание
Если вы используете версию Helm ниже 3.8.0, добавьте в начало команды строку
export HELM_EXPERIMENTAL_OCI=1 && \, чтобы включить поддержку Open Container Initiative (OCI) в клиенте Helm.
Создание ресурса NodeHealthCheck
-
Создайте файл с описанием ресурса
NodeHealthCheck:apiVersion: remediation.medik8s.io/v1alpha1 kind: NodeHealthCheck metadata: name: nodehc-sample spec: minHealthy: 51% remediationTemplate: apiVersion: self-node-remediation.medik8s.io/v1alpha1 kind: SelfNodeRemediationTemplate name: self-node-remediation-automatic-strategy-template namespace: <пространство_имен_приложения> selector: matchLabels: beta.kubernetes.io/os: linux unhealthyConditions: - duration: 60s status: "False" type: Ready - duration: 60s status: Unknown type: ReadyГде:
-
spec.minHealthy— минимальный процент здоровых узлов, при котором разрешено начинать восстановление. -
spec.unhealthyConditions— список условий для статуса узла , по которым контроллер определяет, что узел неисправен.duration— время, в течение которого условие должно сохраняться, прежде чем начнется процесс восстановления узла.type— тип условия.status— ожидаемый статус для признания узла неисправным.
В приведенном примере контроллер NodeHealthCheck начнет восстановление, если тип условия
Readyдля узла в течение 60 секунд указывает на его недоступность или нерабочее состояние.
-
-
Перейдите в директорию с файлом и выполните команду:
kubectl apply -f <имя_файла>