Подключение внешних узлов к кластеру
Примечание
Подключение внешних узлов к кластеру Managed Service for Kubernetes находится на стадии Preview. Их использование не тарифицируется.
Внешние серверы подключаются в виде узлов к кластеру Managed Service for Kubernetes с помощью специальных ресурсов Kubernetes API. Определения (CustomResourceDefinitions
Требования для подключения внешних узлов к кластеру
Чтобы подключить внешние узлы к кластеру Managed Service for Kubernetes, необходимо соответствие кластера и подключаемых серверов определенным требованиям.
Перед началом работы
-
Создайте кластер Managed Service for Kubernetes любой подходящей конфигурации.
-
Установите kubectl
и настройте его на работу с созданным кластером. -
Создайте объект группы узлов в Kubernetes API кластера Managed Service for Kubernetes.
После создания объекта группы вы можете добавлять узлы в кластер Managed Service for Kubernetes и удалять узлы из кластера.
При возникновении проблем с подключением обратитесь к разделу Диагностика проблем.
Создание группы узлов
Примечание
Для создания внешней группы узлов кластер Managed Service for Kubernetes должен работать в туннельном режиме. Подробнее см. в разделе Требования для подключения внешних узлов к кластеру.
- На странице кластера Managed Service for Kubernetes перейдите на вкладку Управление узлами.
- Нажмите кнопку Создать группу узлов, затем Внешняя.
- Введите имя группы узлов Managed Service for Kubernetes.
- Нажмите кнопку Добавить.
-
Сохраните в 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
-
Создайте внешнюю группу узлов Managed Service for Kubernetes:
kubectl apply -f ext-nodegroup.yaml
Добавление узлов в кластер
- На странице кластера Managed Service for Kubernetes перейдите на вкладку Управление узлами.
- Выберите нужную группу узлов Managed Service for Kubernetes.
- Нажмите кнопку Редактировать.
- Укажите IP-адрес подключаемого сервера, доступный из облачной сети кластера Managed Service for Kubernetes.
- При необходимости нажмите кнопку Добавить IP-адрес, чтобы добавить еще IP-адреса.
- Нажмите Сохранить.
Укажите в спецификации объекта группы узлов Managed Service for Kubernetes IP-адреса подключаемых серверов, доступные из облачной сети кластера Managed Service for Kubernetes:
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: # Перечислите IP-адреса подключаемых серверов, доступные из облачной сети кластера Managed Service for Kubernetes. - 10.130.0.4 - 10.130.1.5
После этого необходимо установить на подключаемые серверы системные компоненты.
После установки системных компонентов серверы начнут подключение к кластеру Managed Service for Kubernetes.
Подключение узлов к кластеру Managed Service for Kubernetes закончено, когда в кластере становятся доступны новые узлы в состоянии Ready
:
- Перейдите к подробностям соответствующей группы узлов Managed Service for Kubernetes.
- Выберите вкладку Управление узлами.
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 секрет, содержащий приватный SSH-ключ для подключения к серверам. Создайте секрет:
kubectl -n yandex-system create secret generic <имя_секрета> --from-file=ssh-privatekey=<путь_к_файлу_SSH-ключа> --type=kubernetes.io/ssh-auth
В спецификации ресурса NodeGroup
укажите имя соответствующего секрета:
- Перейдите к подробностям соответствующей группы узлов Managed Service for Kubernetes.
- Нажмите Редактировать.
- Выберите в выпадающем списке нужный секрет.
- Нажмите Сохранить.
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
На всех внешних узлах Managed Service for Kubernetes должна быть доступна возможность подключения с логином root
и указанным SSH-ключом.
Полуавтоматическая установка
Для полуавтоматической установки необходимо установить на все внешние узлы Managed Service for Kubernetes базовый компонент и конфигурацию, обеспечивающие дальнейшую установку системных компонентов.
-
После создания объекта NodeGroup в кластере Managed Service for Kubernetes становится доступен секрет, содержащий
kubeconfig
для использования на подключаемых серверах. Получите его с помощьюkubectl
, настроенного на работу с кластером Managed Service for Kubernetes, и сохраните его в файл:kubectl -n yandex-system get secret <имя_объекта_NodeGroup>-maintainer-kube-config -o json | jq -r '.data."kube-config"' | base64 -d
-
Сохраните полученный
kubeconfig
на подключаемом сервере:sudo mkdir -p /etc/maintainer sudo vi /etc/maintainer/kube.config # Сохраните в этот файл содержимое `kubeconfig`, полученное на предыдущем шаге.
-
Выполните следующие команды на подключаемом сервере:
sudo mkdir -p /home/kubernetes/bin sudo curl --output /home/kubernetes/bin/maintainer https://storage.yandexcloud.kz/mk8s-maintainer/v1/maintainer sudo chmod +x /home/kubernetes/bin/maintainer sudo /home/kubernetes/bin/maintainer install
Удаление внешних узлов из кластера
- Перейдите к подробностям соответствующей группы узлов Managed Service for Kubernetes.
- Нажмите Редактировать.
- Удалите IP-адреса нужных узлов Managed Service for Kubernetes.
- Нажмите Сохранить.
Для отключения узлов Managed Service for Kubernetes удалите их IP-адреса из поля spec.ips
ресурсаNodeGroup
:
kubectl -n yandex-system edit nodegroup
Диагностика проблем
При возникновении проблем в первую очередь обратитесь к событиям в пространстве имен yandex-system
:
- На странице кластера Managed Service for Kubernetes перейдите на вкладку События.
- Выберите пространство имен
yandex-system
.
kubectl -n yandex-system get events
Если информации недостаточно, обратитесь к логам системных компонентов на соответствующем подключаемом сервере:
journalctl -u maintainer
journalctl -u kubelet
Учитывайте требования для подключения внешних узлов Managed Service for Kubernetes.