При эксплуатации кластера Managed Kubernetes иногда необходимо напрямую подключиться к одному из рабочих узлов. Например, для обслуживания или устранения неполадок.
К рабочему узлу можно подключиться по SSH с виртуальной машины, созданной в той же VPC, что и узел. С локального устройства можно подключиться через 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 к рабочему узлу вы можете подключиться с виртуальной машины, созданной в той же VPC, что и рабочий узел. Для подключения к виртуальной машине используйте, например, серийную консоль.
В личном кабинете перейдите к группе узлов, где располагается узел.
В разделе Информация проверьте, что для группы узлов, в которую входит узел:
Указаны параметры авторизации пользователя — имя пользователя и публичная часть SSH-ключа. Приватная часть SSH-ключа должна размещаться на виртуальной машине, с которой вы подключаетесь.
Параметры авторизации пользователя можно указать только при создании группы узлов.
Выбрана группа безопасности с правилами входящего трафика:
Протокол — TCP.
Порт — 9022.
Тип источника — IP-адрес.
Источник — 0.0.0.0/0.
Если при создании группы узлов не была выбрана нужная группа безопасности, то назначить ее можно позже — непосредственно на виртуальную машину узла.
На панели слева выберите Узлы.
В строке с названием узла скопируйте внутренний IP.
С виртуальной машины выполните команду:
ssh -p9022 <username>@<ip_of_worker_node>Где:
<username> — имя пользователя, которое указали при создании рабочего узла в разделе Авторизация пользователя.
<ip_of_worker_node> — внутренний IP узла.
Теперь можно выполнять обслуживание рабочего узла.