При эксплуатации кластера Managed Kubernetes иногда необходимо напрямую подключиться к одному из рабочих узлов. Например, для обслуживания или устранения неполадок.
Напрямую к рабочему узлу можно подключиться как по SSH, так и через Kubernetes API. В этой инструкции описано оба способа.
Подключиться к узлу через Kubernetes API
-
Получите список узлов:
kubectl get nodes -o wideПримерный результат:
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIMEvm-451f2d74-0628-4927-bb5e-b5ef645abf00 Ready <none> 6m22s v1.32.5 10.94.0.4 <none> Ubuntu 22.04.3 LTS 5.15.0-143-generic containerd://1.7.27vm-e8df298f-dc3a-413f-a266-2db43b25184a Ready <none> 6m13s v1.32.5 10.94.0.3 <none> Ubuntu 22.04.3 LTS 5.15.0-143-generic containerd://1.7.27vm-fad0d0b5-239f-4e38-a35a-723e088f7031 Ready <none> 2m32s v1.32.5 10.94.0.5 <none> Ubuntu 22.04.3 LTS 5.15.0-143-generic containerd://1.7.27 -
Запустите привилегированный контейнер на узле:
kubectl debug node/<node-name> -it --image=emk8s.cr.cloud.ru/debugГде <node-name> — название узла из списка выше, к которому необходимо подключиться.
Например:
kubectl debug node/vm-451f2d74-0628-4927-bb5e-b5ef645abf00 -it --image=emk8s.cr.cloud.ru/debugПримерный результат:
Creating debugging pod node-debugger-vm-451f2d74-0628-4927-bb5e-b5ef645abf00-scdl7 with container debugger on node vm-451f2d74-0628-4927-bb5e-b5ef645abf00.If you don't see a command prompt, try pressing enter.vm-451f2d74-0628-4927-bb5e-b5ef645abf00:/# -
Выполните команду:
chroot /host
Теперь можно работать непосредственно на узле.
Чтобы завершить работу с узлом, выполните команду exit и удалите используемый отладочный под:
kubectl delete pod <pod-name>
Где <pod-name> — название отладочного пода. В примере выше — это node-debugger-vm-451f2d74-0628-4927-bb5e-b5ef645abf00-scdl7.
Подключиться к узлу по SSH
-
В личном кабинете перейдите к группе узлов, где располагается узел.
-
В разделе Информация проверьте, что для группы узлов, в которую входит узел:
-
Указаны параметры авторизации пользователя — имя пользователя и публичная часть SSH-ключа.
Параметры авторизации пользователя можно указать только при создании группы узлов.
-
Выбрана группа безопасности с правилами входящего трафика:
-
Протокол — TCP.
-
Порт — 9022.
-
Тип источника — IP-адрес.
-
Источник — 0.0.0.0/0.
-
Если при создании группы узлов не была выбрана нужная группа безопасности, то назначить ее можно позже — непосредственно на виртуальную машину узла.
-
-
На панели слева выберите Узлы.
-
В строке с названием узла нажмите на название виртуальной машины.
-
На панели слева выберите Сетевые параметры.
-
Нажмите
и выберите Назначить публичный IP.
-
Настройте параметры и нажмите Назначить.
ВниманиеДля рабочего узла доступен только плавающий IP, прямой IP получить нельзя.
-
В терминале или PowerShell выполните команду:
ssh -p9022 <username>@<public_ip_of_worker_node>Где:
-
<username> — имя пользователя, которое указали при создании рабочего узла в разделе Авторизация пользователя.
-
<public_ip_of_worker_node> — публичный IP виртуальной машины.
-
Теперь можно выполнять обслуживание рабочего узла.
- Подключиться к узлу через Kubernetes API
- Подключиться к узлу по SSH