Подключение к кластеру Kubernetes оператора Azure Nexus
На протяжении всего жизненного цикла кластера Оператора Azure Nexus Kubernetes вам в конечном итоге потребуется напрямую получить доступ к узлу кластера. Этот доступ может быть для операций обслуживания, сбора журналов или устранения неполадок. Вы обращаетесь к узлу через проверку подлинности, какие методы зависят от метода подключения. Вы безопасно проходите проверку подлинности на узлах кластера с помощью двух вариантов, рассмотренных в этой статье. По соображениям безопасности узлы кластера не предоставляются в Интернете. Вместо этого, чтобы подключиться непосредственно к узлам кластера, необходимо использовать kubectl debug
IP-адрес узла из прыжка.
Необходимые компоненты
- Кластер Оператора Azure Nexus Kubernetes, развернутый в группе ресурсов в подписке Azure.
- Закрытый ключ SSH для узлов кластера.
- Для SSH с помощью IP-адреса узла необходимо развернуть виртуальную машину jumpbox в той же сети сетевого интерфейса контейнера (CNI), что и узлы кластера.
Доступ к узлам кластера через Azure Arc для серверов
Эта az ssh arc
команда позволяет пользователям удаленно получить доступ к виртуальной машине кластера, подключенной к Azure Arc. Этот метод является безопасным способом подключения SSH к узлу кластера непосредственно из командной строки, что делает его быстрым и эффективным методом удаленного управления.
Примечание.
Узлы кластера Nexus Kubernetes — это подключенные к Arc серверы по умолчанию.
Задайте необходимые переменные. Замените заполнители фактическими значениями, соответствующими вашей среде Azure и кластеру Nexus Kubernetes.
RESOURCE_GROUP="myResourceGroup" # Resource group where the Nexus Kubernetes cluster is deployed CLUSTER_NAME="myNexusK8sCluster" # Name of the Nexus Kubernetes cluster SUBSCRIPTION_ID="<Subscription ID>" # Azure subscription ID ADMIN_USERNAME="azureuser" # Username for the cluster administrator (--admin-username parameter value used during cluster creation) SSH_PRIVATE_KEY_FILE="<vm_ssh_id_rsa>" # Path to the SSH private key file MANAGED_RESOURCE_GROUP=$(az networkcloud kubernetescluster show -n $CLUSTER_NAME -g $RESOURCE_GROUP --subscription $SUBSCRIPTION_ID --output tsv --query managedResourceGroupConfiguration.name)
Получите доступные имена узлов кластера.
az networkcloud kubernetescluster show --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP --subscription $SUBSCRIPTION_ID -o json | jq '.nodes[].name'
Образец вывода:
"mynexusk8scluster-0b32128d-agentpool1-md-7h9t4" "mynexusk8scluster-0b32128d-agentpool1-md-c6xbs" "mynexusk8scluster-0b32128d-control-plane-qq5jm"
Задайте имя узла кластера для переменной VM_NAME.
VM_NAME="mynexusk8scluster-0b32128d-agentpool1-md-7h9t4"
Выполните следующую команду для SSH в узле кластера.
az ssh arc --subscription $SUBSCRIPTION_ID \ --resource-group $MANAGED_RESOURCE_GROUP \ --name $VM_NAME \ --local-user $ADMIN_USERNAME \ --private-key-file $SSH_PRIVATE_KEY_FILE
Доступ к узлам с помощью API Kubernetes
Для этого метода требуется использование kubectl debug
команды. Этот метод ограничен контейнерами и может пропустить более широкие системные проблемы, в отличие от SSH (с помощью az ssh arc или прямого IP-адреса), который обеспечивает полный доступ к узлам и управление ими.
Доступ к API Kubernetes через Azure Arc для Kubernetes
Примечание.
При создании кластера Nexus Kubernetes Приложение Nexus автоматически создает управляемую группу ресурсов, выделенную для хранения ресурсов кластера, в этой группе устанавливается подключенный к Arc ресурс кластера.
Чтобы получить доступ к кластеру, необходимо настроить подключение kubeconfig
кластера. После входа в Azure CLI с соответствующей сущностью Microsoft Entra вы можете получить необходимые kubeconfig
сведения для взаимодействия с кластером из любого места, даже за пределами брандмауэра, который окружает его.
Задать
CLUSTER_NAME
иRESOURCE_GROUP
SUBSCRIPTION_ID
переменные.CLUSTER_NAME="myNexusK8sCluster" RESOURCE_GROUP="myResourceGroup" SUBSCRIPTION_ID=<set the correct subscription_id>
Запрос управляемой группы ресурсов с
az
помощью и хранения вMANAGED_RESOURCE_GROUP
az account set -s $SUBSCRIPTION_ID MANAGED_RESOURCE_GROUP=$(az networkcloud kubernetescluster show -n $CLUSTER_NAME -g $RESOURCE_GROUP --output tsv --query managedResourceGroupConfiguration.name)
Следующая команда запускает прокси-сервер connectedk8s, который позволяет подключаться к серверу API Kubernetes для указанного кластера Nexus Kubernetes.
az connectedk8s proxy -n $CLUSTER_NAME -g $MANAGED_RESOURCE_GROUP &
С помощью
kubectl
отправьте запросы в кластер:kubectl get pods -A
Теперь вы увидите ответ из кластера, содержащий список всех узлов.
Примечание.
Если появится сообщение об ошибке "Не удалось опубликовать маркер доступа к прокси-серверу клиента для подключения к MSI", может потребоваться выполнить az login
повторную проверку подлинности с помощью Azure.
Доступ к узлам кластера через Azure Arc для Kubernetes
После подключения к кластеру через Arc для Kubernetes можно подключиться к отдельному узлу Kubernetes с помощью kubectl debug
команды для запуска привилегированного контейнера на узле.
Вывод списка узлов в кластере Nexus Kubernetes:
$> kubectl get nodes NAME STATUS ROLES AGE VERSION mynexusk8scluster-0b32128d-agentpool1-md-7h9t4 Ready <none> 125m v1.24.9 mynexusk8scluster-0b32128d-agentpool1-md-c6xbs Ready <none> 125m v1.24.9 mynexusk8scluster-0b32128d-control-plane-qq5jm Ready <none> 124m v1.24.9
Запустите привилегированный контейнер на узле и подключитесь к нему:
$> kubectl debug node/mynexusk8scluster-0b32128d-agentpool1-md-7h9t4 -it --image=mcr.microsoft.com/cbl-mariner/base/core:2.0 Creating debugging pod node-debugger-mynexusk8scluster-0b32128d-agentpool1-md-7h9t4-694gg with container debugger on node mynexusk8scluster-0b32128d-agentpool1-md-7h9t4. If you don't see a command prompt, try pressing enter. root [ / ]#
Этот привилегированный контейнер предоставляет доступ к узлу. Выполните команды на узле кластера, выполнив команду
chroot /host
в командной строке.После завершения отладки pod введите
exit
команду, чтобы завершить интерактивный сеанс оболочки. После выхода из оболочки удалите модуль pod:kubectl delete pod node-debugger-mynexusk8scluster-0b32128d-agentpool1-md-7h9t4-694gg
Создание интерактивного подключения оболочки к узлу с помощью IP-адреса
Подключение на узел кластера из папки "Переход Azure"
Еще одним вариантом безопасного подключения к узлу кластера Nexus Kubernetes оператора Azure является настройка прямого доступа к сети CNI кластера из виртуальной машины azure jumpbox. С помощью этого подхода можно выполнить SSH на узлах кластера, а также выполнить kubectl
команды в кластере kubeconfig
с помощью файла.
Обратитесь к администратору сети, чтобы настроить прямое подключение с виртуальной машины Azure jumpbox к сети CNI кластера.
Подключение на узел кластера из локального прыжка
Создайте прямой доступ к CNI кластера (сетевому интерфейсу контейнера) из локального сетевого интерфейса. Этот прямой доступ позволяет использовать SSH на узлах кластера и позволяет выполнять kubectl
команды с помощью kubeconfig
файла.
Обратитесь к администратору сети, чтобы настроить это прямое подключение к сети CNI кластера.
IP-адрес узлов кластера
Прежде чем подключиться к узлам кластера, необходимо найти IP-адрес узлов. IP-адрес узлов можно найти с помощью портал Azure или Azure CLI.
Использование командной строки Azure CLI
Задайте переменные RESOURCE_GROUP, CLUSTER_NAME и SUBSCRIPTION_ID в соответствии с средой.
RESOURCE_GROUP="myResourceGroup" CLUSTER_NAME="myNexusK8sCluster" SUBSCRIPTION_ID="<Subscription ID>"
Выполните следующую команду, чтобы получить IP-адрес узлов.
az networkcloud kubernetescluster show --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP --subscription $SUBSCRIPTION_ID -o json | jq '.nodes[] | select(any(.networkAttachments[]; .networkAttachmentName == "defaultcni")) | {name: .name, ipv4Address: (.networkAttachments[] | select(.networkAttachmentName == "defaultcni").ipv4Address)}'
Ниже приведен пример выходных данных команды.
{ "name": "mynexusk8scluster-0b32128d-agentpool1-md-7h9t4", "ipv4Address": "10.5.54.47" } { "name": "mynexusk8scluster-0b32128d-agentpool1-md-c6xbs", "ipv4Address": "10.5.54.48" } { "name": "mynexusk8scluster-0b32128d-control-plane-qq5jm", "ipv4Address": "10.5.54.46" }
Использование портала Azure
Чтобы найти IP-адрес виртуальной машины для SSH, выполните следующие действия.
- Перейдите к портал Azure и войдите с помощью имени пользователя и пароля.
- В поле поиска введите "Кластер Kubernetes (Оператор Nexus)" и выберите службу "Кластер Kubernetes" из списка результатов.
- Найдите конкретный ресурс "Кластер Nexus Kubernetes", который необходимо использовать для поиска.
- Когда вы нашли нужный ресурс, сопоставив его имя с именем кластера, выберите ресурс, чтобы перейти на домашнюю страницу кластера Kubernetes.
- После того как вы нашли правый ресурс, сопоставив его имя с именем кластера, перейдите в раздел "Узлы кластера Kubernetes" в меню слева.
- Выберите имя узла Kubernetes, который вы хотите просмотреть.
- Перейдите на вкладку "Подключенные сети", чтобы найти IP-адрес сети узла уровня 3, который используется в качестве сети CNI.
Следующие шаги
Ознакомьтесь со следующими статьями, чтобы узнать больше о кластере Azure Operator Nexus Kubernetes.