Подключение внешних узлов к кластеру
Примечание
Подключение внешних узлов к кластеру Managed Service for Kubernetes находится на стадии Preview. Их использование не тарифицируется.
Внешние серверы подключаются в виде узлов к кластеру Managed Service for Kubernetes с помощью специальных ресурсов Kubernetes API. Определения (CustomResourceDefinitions
Важно
Чтобы подключить внешние узлы к кластеру Managed Service for Kubernetes, необходимо соответствие кластера и подключаемых серверов определенным требованиям.
Перед началом работы
-
Создайте кластер Managed Service for Kubernetes любой подходящей конфигурации.
Для создания внешней группы узлов кластер Managed Service for Kubernetes должен работать в туннельном режиме. Он включается только при создании кластера.
-
Установите kubectl
и настройте его на работу с созданным кластером.
Создание группы узлов
- На странице кластера Managed Service for Kubernetes перейдите на вкладку Управление узлами.
- Нажмите кнопку Создать группу узлов, затем Внешняя.
- Введите имя группы узлов Managed Service for Kubernetes.
- В поле IP-адреса узлов укажите IP-адрес подключаемого сервера, доступный из облачной сети кластера Managed Service for Kubernetes.
- При необходимости нажмите кнопку Добавить IP-адрес, чтобы добавить еще IP-адреса.
- Нажмите кнопку Добавить.
-
Сохраните в YAML-файл
ext-nodegroup.yamlспецификацию объекта типаNodeGroupгруппы Managed Service for Kubernetes APImks.yandex.cloud/v1alpha1в пространстве именyandex-system:apiVersion: mks.yandex.cloud/v1alpha1 kind: NodeGroup metadata: name: external-node-group namespace: yandex-system spec: ips: # Перечислите IP-адреса подключаемых серверов, доступные из облачной сети кластера Managed Service for Kubernetes. - 10.130.0.4 - 10.130.1.5 -
Создайте группу узлов Managed Service for Kubernetes:
kubectl apply -f ext-nodegroup.yaml
Изменение группы узлов
При необходимости группу узлов можно изменить — например, чтобы добавить дополнительные IP-адреса.
- На странице кластера Managed Service for Kubernetes перейдите на вкладку Управление узлами.
- Выберите нужную группу узлов Managed Service for Kubernetes.
- В правом верхнем углу нажмите кнопку Редактировать.
- Внесите изменения и нажмите кнопку Сохранить.
Чтобы отредактировать спецификацию группы узлов Managed Service for Kubernetes, выполните команду:
kubectl -n yandex-system edit nodegroup external-node-group
Установка системных компонентов
Чтобы подключить серверы к кластеру Managed Service for Kubernetes, необходимо установить на них системные компоненты.
Установить системные компоненты можно одним из двух способов:
Автоматическая установка
При автоматической установке кластер Managed Service for Kubernetes самостоятельно подключается к серверу по SSH и устанавливает на него все необходимые системные компоненты.
Чтобы выполнить автоматическую установку:
-
Создайте в кластере Managed Service for Kubernetes секрет, содержащий приватный SSH-ключ для подключения к серверу:
kubectl -n yandex-system create secret generic <имя_секрета> \ --from-file=ssh-privatekey=<путь_к_файлу_SSH-ключа> \ --type=kubernetes.io/ssh-auth -
В спецификации группы узлов укажите имя секрета:
Консоль управленияCLI- На странице кластера Managed Service for Kubernetes перейдите на вкладку Управление узлами.
- Выберите созданную группу узлов Managed Service for Kubernetes в списке.
- В правом верхнем углу нажмите кнопку Редактировать.
- В поле Секрет с приватным SSH-ключом выберите в выпадающем списке имя созданного секрета.
- Нажмите Сохранить.
-
Выполните команду:
kubectl -n yandex-system edit nodegroup external-node-group -
Отредактируйте спецификацию:
apiVersion: mks.yandex.cloud/v1alpha1 kind: NodeGroup metadata: name: external-node-group namespace: yandex-system spec: ips: ... provisionBySsh: sshKeySecret: name: <имя_секрета> namespace: yandex-system
Полуавтоматическая установка
При полуавтоматической установке вы вручную подготавливаете сервер, устанавливая на него компонент maintainer и задавая настройки доступа к кластеру Managed Service for Kubernetes. После этого компонент maintainer автоматически загрузит и установит остальные системные компоненты.
Чтобы выполнить полуавтоматическую установку:
-
С помощью
kubectlполучите секрет, содержащийkubeconfigдля использования на подключаемом сервере, и сохраните его в файл:kubectl -n yandex-system get secret <имя_группы_узлов>-maintainer-kube-config \ -o json | jq -r '.data."kube-config"' | base64 -d > kube.configСекрет становится доступен после создания группы узлов в кластере Managed Service for Kubernetes.
-
Перенесите файл
kube.configна сервер:scp kube.config root@<публичный_IP-адрес_сервера>:/ -
Подключитесь к серверу:
ssh root@<публичный_IP-адрес_сервера> -
Создайте каталог
/etc/yandex-maintainerи переместите в него файлkube.config:sudo mkdir -p /etc/yandex-maintainer sudo mv /kube.config /etc/yandex-maintainer/ -
Выполните следующие команды на подключаемом сервере:
sudo mkdir -p /home/kubernetes/bin sudo curl --output /home/kubernetes/bin/maintainer https://storage.yandexcloud.net/mk8s-maintainer/v1/maintainer sudo chmod +x /home/kubernetes/bin/maintainer sudo /home/kubernetes/bin/maintainer install
Проверка состояния внешних узлов
После установки системных компонентов серверы начнут подключение к кластеру Managed Service for Kubernetes. Когда подключение завершится, новые узлы кластера перейдут в состояние Ready.
Чтобы проверить состояние узлов:
- На странице кластера Managed Service for Kubernetes перейдите на вкладку Управление узлами.
- Нажмите на имя созданной группы узлов Managed Service for Kubernetes.
- Перейдите на вкладку Узлы.
- Проверьте, что созданный узел Managed Service for Kubernetes имеет статус
Ready. - Откройте созданный узел и перейдите на вкладку События.
- Проверьте, что все этапы подключения сервера завершились успешно.
Выполните команду:
kubectl get node -o wide -w
Результат:
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
...
ext-node2 Ready <none> 4m03s v1.20.6 10.130.0.4 <none> Ubuntu 20.04.3 LTS 5.4.0-42-generic docker://20.10.8
ext-node1 Ready <none> 4m25s v1.20.6 10.130.1.5 <none> Ubuntu 20.04.3 LTS 5.4.0-42-generic docker://20.10.8
Отключение внешних узлов
- На странице кластера Managed Service for Kubernetes перейдите на вкладку Управление узлами.
- Выберите созданную группу узлов Managed Service for Kubernetes в списке.
- В правом верхнем углу нажмите кнопку Редактировать.
- Удалите IP-адреса созданных узлов Managed Service for Kubernetes.
- Нажмите Сохранить.
-
Выполните команду:
kubectl -n yandex-system edit nodegroup -
Удалите IP-адреса нужных узлов из поля
spec.ips.
Диагностика проблем
При возникновении проблем в первую очередь обратитесь к событиям в пространстве имен yandex-system:
- На странице кластера Managed Service for Kubernetes перейдите на вкладку События.
- Выберите пространство имен
yandex-system.
Чтобы получить список событий, выполните команду:
kubectl -n yandex-system get events
Если информации недостаточно, обратитесь к логам системных компонентов на соответствующем подключаемом сервере:
journalctl -u yandex-maintainer
journalctl -u kubelet
Учитывайте требования для подключения внешних узлов Managed Service for Kubernetes.