Подключение по протоколу RDP к узлам кластера Службы Azure Kubernetes (AKS) Windows Server для обслуживания или устранения неполадок

На протяжении жизненного цикла кластера Службы Azure Kubernetes (AKS) вам может потребоваться доступ к узлу AKS Windows Server. Этот доступ используется для обслуживания, сбора журналов или других операций по устранению неполадок. Доступ к узлам AKS Windows Server можно получить с помощью протокола удаленного рабочего стола (RDP). В целях безопасности узлы AKS недоступны через Интернет.

Кроме того, если вы хотите использовать SSH к узлам WINDOWS Server AKS, вам потребуется доступ к той же паре ключей, которая использовалась во время создания кластера. Следуйте инструкциям Входа через SSH в узлы кластера Службы Azure Kubernetes (AKS).

В этой статье показано, как создать RDP-подключение к узлу AKS с использованием его частного IP-адреса.

Подготовка к работе

В этой статье предполагается, что у вас есть кластер AKS с узлом Windows Server. Если вам требуется кластер AKS, см. статью о создании кластера AKS с контейнером Windows с помощью Azure CLI. Также необходимо имя пользователя и пароль администратора Windows для узла Windows Server, для которого требуется устранить неполадки. Также вам потребуется клиент RDP, например Удаленный рабочий стол (Майкрософт).

При необходимости смены пароля используйте az aks update.

az aks update -g myResourceGroup -n myAKSCluster --windows-admin-password $WINDOWS_ADMIN_PASSWORD

Если вам нужно сбросить имя пользователя и пароль, см. статью Сброс службы удаленных рабочих столов или пароля администратора в виртуальной машине Windows.

Кроме того, нужно установить и настроить Azure CLI версии 2.0.61 или более поздней. Чтобы узнать версию, выполните команду az --version. Если вам необходимо выполнить установку или обновление, см. статью Установка Azure CLI 2.0.

Развертывание виртуальной машины в одинаковой с кластером подсети

Узлы Windows Server кластера AKS не имеют IP-адресов, доступных из внешней сети. Чтобы создать RDP-подключение, можно развернуть виртуальную машину с общедоступным IP-адресом в той же подсети, что и узлы Windows Server.

В следующем примере создается виртуальная машина с именем myVM в группе ресурсов myResourceGroup.

Необходимо получить идентификатор подсети, используемый пулом узлов Windows Server, и запросить:

  • Группа ресурсов узла кластера
  • Виртуальная сеть
  • Имя подсети
  • Идентификатор подсети
CLUSTER_RG=$(az aks show -g myResourceGroup -n myAKSCluster --query nodeResourceGroup -o tsv)
VNET_NAME=$(az network vnet list -g $CLUSTER_RG --query [0].name -o tsv)
SUBNET_NAME=$(az network vnet subnet list -g $CLUSTER_RG --vnet-name $VNET_NAME --query [0].name -o tsv)
SUBNET_ID=$(az network vnet subnet show -g $CLUSTER_RG --vnet-name $VNET_NAME --name $SUBNET_NAME --query id -o tsv)

Теперь, когда у вас есть идентификатор SUBNET_ID, выполните следующую команду в том же окне Azure Cloud Shell, чтобы создать виртуальную машину:

PUBLIC_IP_ADDRESS="myVMPublicIP"

az vm create \
    --resource-group myResourceGroup \
    --name myVM \
    --image win2019datacenter \
    --admin-username azureuser \
    --admin-password {admin-password} \
    --subnet $SUBNET_ID \
    --nic-delete-option delete \
    --os-disk-delete-option delete \
    --nsg "" \
    --public-ip-address $PUBLIC_IP_ADDRESS \
    --query publicIpAddress -o tsv

Следующий пример выходных данных показывает, что виртуальная машина была успешно создана. Также он отображает общедоступный IP-адрес виртуальной машины.

13.62.204.18

Запишите общедоступный IP-адрес виртуальной машины. Этот адрес будет использоваться в дальнейшем.

Разрешение доступа к виртуальной машине

Подсети пула узлов AKS по умолчанию защищены группами безопасности сети. Чтобы получить доступ к виртуальной машине, необходимо включить доступ в NSG.

Примечание.

Группы безопасности сети управляются службой AKS. Любые изменения, внесенные в группу безопасности сети, будут в любой момент перезаписаны на уровне управления.

Сначала получите группу ресурсов и имя NSG, к которой нужно добавить правило:

CLUSTER_RG=$(az aks show -g myResourceGroup -n myAKSCluster --query nodeResourceGroup -o tsv)
NSG_NAME=$(az network nsg list -g $CLUSTER_RG --query [].name -o tsv)

Затем создайте правило NSG:

az network nsg rule create \
 --name tempRDPAccess \
 --resource-group $CLUSTER_RG \
 --nsg-name $NSG_NAME \
 --priority 100 \
 --destination-port-range 3389 \
 --protocol Tcp \
 --description "Temporary RDP access to Windows nodes"

Получение адреса узла

Управлять кластером Kubernetes можно c помощью kubectl, клиента командной строки Kubernetes. Если вы используете Azure Cloud Shell, kubectl уже установлен. Чтобы установить kubectl локально, используйте команду az aks install-cli:

az aks install-cli

Чтобы настроить kubectl на подключение к кластеру Kubernetes, выполните команду az aks get-credentials. Эта команда скачивает учетные данные и настраивает интерфейс командной строки Kubernetes для их использования.

az aks get-credentials --resource-group myResourceGroup --name myAKSCluster

Выведите список внутренних IP-адресов узлов Windows Server с помощью команды kubectl get:

kubectl get nodes -o wide

В выходных данных примера ниже показаны внутренние IP-адреса всех узлов в кластере, включая узлы Windows Server.

$ kubectl get nodes -o wide
NAME                                STATUS   ROLES   AGE   VERSION   INTERNAL-IP   EXTERNAL-IP   OS-IMAGE                    KERNEL-VERSION      CONTAINER-RUNTIME
aks-nodepool1-42485177-vmss000000   Ready    agent   18h   v1.12.7   10.240.0.4    <none>        Ubuntu 16.04.6 LTS          4.15.0-1040-azure   docker://3.0.4
aksnpwin000000                      Ready    agent   13h   v1.12.7   10.240.0.67   <none>        Windows Server Datacenter   10.0.17763.437

Запишите внутренний IP-адрес узла Windows Server, для которого требуется устранить неполадки. Этот адрес будет использоваться в дальнейшем.

Подключение к виртуальной машине и узлу

Подключитесь к общедоступному IP-адресу виртуальной машины, созданной ранее с помощью клиента RDP, такого как Удаленный рабочий стол (Майкрософт).

Image of connecting to the virtual machine using an RDP client

После подключения к виртуальной машине подключитесь к внутреннему IP-адресу узла Windows Server, который необходимо устранить с помощью клиента RDP из виртуальной машины.

Image of connecting to the Windows Server node using an RDP client

Вы подключились к узлу Windows Server.

Image of cmd window in the Windows Server node

Теперь можно запускать любые команды устранения неполадок в окне cmd. Поскольку узлы Windows Server используют Windows Server Core, при подключении к узлу Windows Server по протоколу удаленного рабочего стола не нужно использовать полный графический интерфейс или другие средства графического пользовательского интерфейса.

Удаление доступа по протоколу RDP

По завершению выйдите из RDP-подключения к узлу Windows Server и завершите сеанс RDP на виртуальной машине. После выхода из обоих сеансов RDP удалите виртуальную машину с помощью команды az vm delete:

# Delete the virtual machine
az vm delete \
 --resource-group myResourceGroup \
 --name myVM

Удалите общедоступный IP-адрес, связанный с виртуальной машиной:

az network public-ip delete \
 --resource-group myResourceGroup \
 --name $PUBLIC_IP_ADDRESS

Удалите правило NSG:

CLUSTER_RG=$(az aks show -g myResourceGroup -n myAKSCluster --query nodeResourceGroup -o tsv)
NSG_NAME=$(az network nsg list -g $CLUSTER_RG --query [].name -o tsv)
az network nsg rule delete \
 --resource-group $CLUSTER_RG \
 --nsg-name $NSG_NAME \
 --name tempRDPAccess

Работа со службой "Бастион Azure"

Кроме того, можно использовать Бастион Azure для подключения к узлу Windows Server.

Развертывание Бастиона Azure

Чтобы развернуть Бастион Azure, необходимо найти виртуальную сеть, к которому подключен кластер AKS.

  1. На портале Azure выберите Виртуальные машины. Выберите виртуальную сеть, к которому подключен кластер AKS.
  2. В разделе Параметры выберите Бастион, а затем выберите Развернуть бастион. Дождитесь завершения процесса, прежде чем перейти к следующему шагу.

Подключение к узлам Windows Server с помощью Бастиона Azure

Перейдите в группу ресурсов узла кластера AKS. Выполните приведенную ниже команду в Azure Cloud Shell, чтобы получить имя группы ресурсов узла:

az aks show -n myAKSCluster -g myResourceGroup --query 'nodeResourceGroup' -o tsv
  1. Выберите Обзор, а затем — масштабируемый набор виртуальных машин пула узлов Windows.
  2. В разделе Параметры выберите Экземпляры. Выберите узел сервера Windows, к которому вы хотите подключиться.
  3. В разделе Поддержка и устранение неполадок выберите Бастион.
  4. Введите учетные данные, настроенные при создании кластера AKS. Нажмите Подключиться.

Теперь можно запускать любые команды устранения неполадок в окне cmd. Поскольку узлы Windows Server используют Windows Server Core, при подключении к узлу Windows Server по протоколу удаленного рабочего стола не нужно использовать полный графический интерфейс или другие средства графического пользовательского интерфейса.

Примечание.

При закрытии окна терминала нажмите CTRL+ALT+END, выберите Диспетчер задач, Дополнительные сведения, Файл, Выполнить новую задачу и введите cmd.exe, чтобы открыть другой терминал. Вы также можете выйти из системы и повторно подключиться к Бастиону.

Удаление доступа к Бастиону

По завершении закройте сеанс Бастиона и удалите ресурс Бастиона.

  1. На портале Azure перейдите в Бастион и выберите созданный вами ресурс Бастиона.
  2. В верхней части страницы выберите команду Удалить. Прежде чем переходить к следующему шагу, дождитесь завершения развертывания.
  3. На портале Azure выберите Виртуальные машины. Выберите виртуальную сеть, к которой подключен кластер AKS.
  4. В разделе Параметры выберите Подсеть и удалите подсеть AzureBastionSubnet, созданную для ресурса Бастиона.

Следующие шаги

Если вам нужны дополнительные сведения об устранении неполадок, вы можете просмотреть журналы главного узла Kubernetes или ознакомиться со статьей об Azure Monitor.