Conexión con RDP a los nodos de Windows Server de clúster de Azure Kubernetes Service (AKS) para el mantenimiento o la solución de problemas
Durante el ciclo de vida del clúster de Azure Kubernetes Service (AKS), es posible que necesite acceder a un nodo de Windows Server de AKS. Este acceso podría ser para mantenimiento, recopilación de registros u otras operaciones de solución de problemas. Puede acceder a los nodos de Windows Server de AKS mediante conexión RDP. Por motivos de seguridad, los nodos de AKS no están expuestos a Internet.
Como alternativa, si quiere conectarse mediante SSH a los nodos de Windows Server de AKS, necesita acceder al mismo par de claves que se usó durante la creación del clúster. Siga los pasos descritos en Conexión SSH con los nodos de un clúster de Azure Kubernetes Service (AKS)
En este artículo se muestra cómo crear una conexión RDP con un nodo de AKS mediante sus direcciones IP privadas.
Antes de empezar
En este artículo se presupone que ya tiene un clúster de AKS con un nodo de Windows Server. Si necesita un clúster de AKS, consulte el artículo sobre la creación de un clúster de AKS con un contenedor de Windows mediante la CLI de Azure. Necesitará el nombre de usuario de administrador de Windows y la contraseña para el nodo de Windows Server cuyos problemas quiera solucionar. También necesitará un cliente RDP, como Escritorio remoto de Microsoft.
Si necesita restablecer la contraseña, use az aks update
para cambiarla.
az aks update --resource-group myResourceGroup --name myAKSCluster --windows-admin-password $WINDOWS_ADMIN_PASSWORD
Si necesita restablecer el nombre de usuario y la contraseña, vea Restablecimiento de los Servicios de Escritorio remoto o su contraseña de administrador en una máquina virtual Windows.
También es preciso que esté instalada y configurada la versión 2.0.61 de la CLI de Azure u otra versión posterior. Ejecute az --version
para encontrar la versión. Si necesita instalarla o actualizarla, vea Instalación de la CLI de Azure.
Implementación de una máquina virtual en la misma subred que el clúster
Los nodos de Windows Server del clúster de AKS no tienen direcciones IP accesibles externamente. Para realizar una conexión RDP, puede implementar una máquina virtual con una dirección IP accesible públicamente en la misma subred que los nodos de Windows Server.
En el siguiente ejemplo se crea una máquina virtual llamada myVM en el grupo de recursos myResourceGroup.
Tiene que obtener el id. de subred que usa el grupo de nodos de Windows Server y la consulta de:
- El grupo de recursos de nodo del clúster
- La red virtual
- El nombre de la subred
- El id. de subred
CLUSTER_RG=$(az aks show --resource-group myResourceGroup --name myAKSCluster --query nodeResourceGroup -o tsv)
VNET_NAME=$(az network vnet list --resource-group $CLUSTER_RG --query [0].name -o tsv)
SUBNET_NAME=$(az network vnet subnet list --resource-group $CLUSTER_RG --vnet-name $VNET_NAME --query [0].name -o tsv)
SUBNET_ID=$(az network vnet subnet show --resource-group $CLUSTER_RG --vnet-name $VNET_NAME --name $SUBNET_NAME --query id -o tsv)
Ahora que tiene el SUBNET_ID, ejecute el comando siguiente en la misma ventana de Azure Cloud Shell para crear la máquina virtual:
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
La salida del siguiente ejemplo muestra que la máquina virtual se ha creado correctamente y muestra su dirección IP pública.
13.62.204.18
Registre la dirección IP pública de la máquina virtual, Usará esta dirección en un paso posterior.
Permitir el acceso a la máquina virtual
De forma predeterminada, las subredes de los grupos de nodos de AKS están protegidas con grupos de seguridad de red. Para obtener acceso a la máquina virtual, tendrá que habilitar el acceso en el grupo de seguridad de red.
Nota
Los grupos de seguridad de red se controlan mediante el servicio AKS. El plano de control sobrescribirá en cualquier momento los cambios que realice en el grupo de seguridad de red.
En primer lugar, obtenga el grupo de recursos y el nombre del grupo de seguridad de red al que va a agregar la regla:
CLUSTER_RG=$(az aks show --resource-group myResourceGroup --name myAKSCluster --query nodeResourceGroup -o tsv)
NSG_NAME=$(az network nsg list --resource-group $CLUSTER_RG --query [].name -o tsv)
A continuación, cree la regla del grupo de seguridad de red:
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"
Obtención de la dirección del nodo
Para administrar un clúster de Kubernetes, usará kubectl, el cliente de línea de comandos de Kubernetes. Si usa Azure Cloud Shell, kubectl
ya está instalado. Para instalar kubectl
localmente, use el comando az aks install-cli:
az aks install-cli
Para configurar kubectl
para conectarse a su clúster de Kubernetes, use el comando az aks get-credentials. Con este comando se descargan las credenciales y se configura la CLI de Kubernetes para usarlas.
az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
Enumere la dirección IP interna de los nodos de Windows Server con el comando kubectl get:
kubectl get nodes -o wide
La salida del ejemplo siguiente muestra las direcciones IP internas de todos los nodos del clúster, incluidos los nodos con 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
Registre la dirección IP interna del nodo de Windows Server cuyos problemas desee solucionar, Usará esta dirección en un paso posterior.
Conexión a la máquina virtual y al nodo
Conéctese a la dirección IP pública de la máquina virtual que creó antes mediante un cliente con conexión RDP, como Escritorio remoto de Microsoft.
Una vez conectado a la máquina virtual, conéctese con la dirección IP interna del nodo de Windows Server cuyos problemas quiera solucionar con un cliente con conexión RDP desde la máquina virtual.
Ahora está conectado a su nodo de Windows Server.
Ahora puede ejecutar los comandos de la solución de problemas en la ventana de cmd. Dado que los nodos de Windows Server usan Windows Server Core, no hay una interfaz gráfica de usuario completa ni otras herramientas de la interfaz gráfica de usuario cuando se conecta a un nodo de Windows Server mediante una conexión RDP.
Eliminación de la conexión RDP
Cuando haya terminado, cierre la conexión RDP con el nodo de Windows Server y salga de la sesión de RDP para ir a la máquina virtual. Después de salir ambas sesiones de RDP, elimine la máquina virtual con el comando az vm delete:
# Delete the virtual machine
az vm delete \
--resource-group myResourceGroup \
--name myVM
Elimine la IP pública asociada a la máquina virtual:
az network public-ip delete \
--resource-group myResourceGroup \
--name $PUBLIC_IP_ADDRESS
Elimine la regla del grupo de seguridad de red:
CLUSTER_RG=$(az aks show --resource-group myResourceGroup --name myAKSCluster --query nodeResourceGroup -o tsv)
NSG_NAME=$(az network nsg list --resource-group $CLUSTER_RG --query [].name -o tsv)
az network nsg rule delete \
--resource-group $CLUSTER_RG \
--nsg-name $NSG_NAME \
--name tempRDPAccess
Conexión con Azure Bastion
Como alternativa, puede usar Azure Bastion para conectarse al nodo de Windows Server.
Implementación de Azure Bastion
Para implementar Azure Bastion, deberá encontrar la red virtual a la que está conectado el clúster de AKS.
- En Azure portal, vaya a Redes virtuales. Seleccione la red virtual a la que está conectado el clúster de AKS.
- En Configuración, seleccione Bastion y, después, Deploy Bastion (Implementar Bastion). Espere hasta que finalice el proceso antes de ir al paso siguiente.
Conexión a los nodos de Windows Server mediante Azure Bastion
Vaya al grupo de recursos de nodo del clúster de AKS. Ejecute el comando siguiente en Azure Cloud Shell para obtener el nombre del grupo de recursos del nodo:
az aks show --name myAKSCluster --resource-group myResourceGroup --query 'nodeResourceGroup' -o tsv
- Seleccione Información general y el conjunto de escalado de máquinas virtuales del grupo de nodos de Windows.
- En Configuración, seleccione Instancias. Seleccione un nodo de Windows Server al que quiera conectarse.
- En Soporte y solución de problemas, seleccione Bastion.
- Escriba las credenciales que configuró al crear el clúster de AKS. Seleccione Conectar.
Ahora puede ejecutar los comandos de la solución de problemas en la ventana de cmd. Dado que los nodos de Windows Server usan Windows Server Core, no hay una interfaz gráfica de usuario completa ni otras herramientas de la interfaz gráfica de usuario cuando se conecta a un nodo de Windows Server mediante una conexión RDP.
Nota:
Si cierra la ventana del terminal, presione CTRL + ALT + Fin, seleccione Administrador de tareas, Más detalles, Archivo y Ejecutar nueva tarea y, luego, escriba cmd.exe para abrir otro terminal. También puede cerrar la sesión y volver a conectarse con Bastion.
Eliminación del acceso con Bastion
Cuando haya terminado, salga de la sesión de Bastion y quite el recurso de Bastion.
- En Azure Portal, vaya a Bastion y seleccione el recurso de Bastion que ha creado.
- En la parte superior de la página, seleccione Eliminar. Espere a que el proceso se complete antes de continuar con el paso siguiente.
- En Azure portal, vaya a Redes virtuales. Seleccione la red virtual a la que está conectado el clúster de AKS.
- En Configuración, seleccione Subred y elimine la subred AzureBastionSubnet que se creó para el recurso de Bastion.
Pasos siguientes
Si necesita datos adicionales para la solución de problemas, puede ver los registros del nodo primario de Kubernetes o Azure Monitor.
Azure Kubernetes Service