Creación y configuración de un clúster de Azure Kubernetes Service (AKS) para usar nodos virtuales en Azure Portal
Los nodos virtuales permiten la comunicación de red entre los pods que se ejecutan en Azure Container Instances (ACI) y el clúster de Azure Kubernetes Service (AKS). Para proporcionar esta comunicación, se crea una subred de red virtual y se asignan permisos delegados. Los nodos virtuales solo funcionan con clústeres de AKS creados mediante redes avanzadas (Azure CNI). De forma predeterminada, los clústeres de AKS se crean con redes básicas (kubenet).
En este artículo se explica cómo crear una red virtual y subredes y, después, cómo implementar un clúster de AKS que usa redes avanzadas mediante Azure Portal.
Nota
Para obtener información general sobre la disponibilidad y las limitaciones de la región del nodo virtual, consulte Uso de nodos virtuales en AKS.
Antes de empezar
Necesita el proveedor de servicios de ACI registrado en su suscripción.
Compruebe el estado del registro del proveedor de ACI mediante el comando
az provider list
.az provider list --query "[?contains(namespace,'Microsoft.ContainerInstance')]" -o table
En la salida de ejemplo siguiente se muestra que el proveedor Microsoft.ContainerInstance está Registered:
Namespace RegistrationState RegistrationPolicy --------------------------- ------------------- -------------------- Microsoft.ContainerInstance Registered RegistrationRequired
Si el proveedor está NotRegistered, regístrelo con el comando
az provider register
.az provider register --namespace Microsoft.ContainerInstance
Creación de un clúster de AKS
- Vaya a la página principal de Azure Portal.
- Seleccione Crear un contenedor de recursos>Contenedores.
- En el recurso Azure Kubernetes Service (AKS), seleccione Crear.
- En la página Datos básicos, configure las siguientes opciones:
- Detalles del proyecto: seleccione una suscripción de Azure y, a continuación, seleccione o cree un grupo de recursos de Azure, como myResourceGroup.
- Detalles del clúster: Escriba un Nombre del clúster de Kubernetes, como myAKSCluster. Seleccione la región, la versión de Kubernetes y el clúster de AKS.
- Seleccione Siguiente: Grupos de nodos y active *Habilitar nodos virtuales.
- Seleccione Revisar + crear.
- Una vez que se haya completado el proceso de validación, seleccione el botón Crear.
De forma predeterminada, este proceso crea una identidad de clúster administrada, que se usa para la comunicación del clúster y la integración con otros servicios de Azure. Para más información, consulte Uso de identidades administradas. También puede usar una entidad de servicio como identidad de clúster.
Este proceso configura el clúster para redes avanzadas y los nodos virtuales para que usen su propia subred de red virtual de Azure. La subred tiene permisos delegados para conectarse a recursos de Azure entre el clúster de AKS. Si aún no tiene una subred delegada, Azure Portal crea y configura una red virtual de Azure y la subred para su uso con los nodos virtuales.
Conectarse al clúster
Azure Cloud Shell es un shell interactivo gratuito que puede usar para ejecutar los pasos de este artículo. Tiene las herramientas comunes de Azure preinstaladas y configuradas para usarlas en la cuenta. Para administrar un clúster de Kubernetes, use kubectl, el cliente de línea de comandos de Kubernetes. El cliente kubectl
viene preinstalado en Azure Cloud Shell.
Para configurar
kubectl
para conectarse a su clúster de Kubernetes, use el comandoaz aks get-credentials
. En el ejemplo siguiente se obtienen credenciales para el nombre de clúster myAKSCluster del grupo de recursos denominado myResourceGroup:az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
Compruebe la conexión al clúster mediante
kubectl get nodes
.kubectl get nodes
La salida de ejemplo siguiente muestra el nodo de máquina virtual único creado y el nodo virtual de Linux denominado virtual-node-aci-linux:
NAME STATUS ROLES AGE VERSION virtual-node-aci-linux Ready agent 28m v1.11.2 aks-agentpool-14693408-0 Ready agent 32m v1.11.2
Implementación de una aplicación de ejemplo
En Azure Cloud Shell, cree un archivo denominado
virtual-node.yaml
y cópielo en el siguiente código YAML:apiVersion: apps/v1 kind: Deployment metadata: name: aci-helloworld spec: replicas: 1 selector: matchLabels: app: aci-helloworld template: metadata: labels: app: aci-helloworld spec: containers: - name: aci-helloworld image: mcr.microsoft.com/azuredocs/aci-helloworld ports: - containerPort: 80 nodeSelector: kubernetes.io/role: agent beta.kubernetes.io/os: linux type: virtual-kubelet tolerations: - key: virtual-kubelet.io/provider operator: Exists
YAML define un nodeSelector y toleration, lo que permite que el pod se programe en el nodo virtual. Se asigna una dirección IP interna al pod de la subred de red virtual de Azure delegada para su uso con los nodos virtuales.
Ejecute la aplicación con el comando
kubectl apply
.kubectl apply -f virtual-node.yaml
Vea los pods programados en el nodo mediante el comando
kubectl get pods
con el argumento-o wide
.kubectl get pods -o wide
En la salida de ejemplo siguiente se muestra el pod programado
virtual-node-helloworld
en el nodovirtual-node-linux
.NAME READY STATUS RESTARTS AGE IP NODE virtual-node-helloworld-9b55975f-bnmfl 1/1 Running 0 4m 10.241.0.4 virtual-node-aci-linux
Nota
Si usa imágenes almacenadas en Azure Container Registry, configure y use un secreto de Kubernetes. Una limitación de los nodos virtuales es que no se puede usar la autenticación de entidad de servicio de Microsoft Entra integrada. Si no usa un secreto, los pods programados en los nodos virtuales no se pueden iniciar y se notifica el error HTTP response status code 400 error code "InaccessibleImage"
.
Prueba del pod del nodo virtual
Para probar el pod que se ejecuta en el nodo virtual, vaya a la aplicación de demostración con un cliente web. Se asigna una dirección IP interna al pod, así que puede probar fácilmente la conectividad desde otro pod en el clúster de AKS.
Cree un pod de prueba y adjunte una sesión de terminal con el comando
kubectl run
siguiente.kubectl run -it --rm virtual-node-test --image=mcr.microsoft.com/dotnet/runtime-deps:6.0
Instale
curl
en el pod mediante el siguiente comandoapt-get
.apt-get update && apt-get install -y curl
Acceda a la dirección del pod con el siguiente comando
curl
y proporcione la dirección IP interna.curl -L http://10.241.0.4
La siguiente salida de ejemplo condensada muestra la aplicación de demostración.
<html> <head> <title>Welcome to Azure Container Instances!</title> </head> [...]
Cierre la sesión de terminal en el pod de prueba con
exit
, que también elimina el pod.exit
Pasos siguientes
En este artículo, programó un pod en el nodo virtual y se le asignó una dirección IP privada o interna. Si lo desea, en su lugar, puede crear una implementación de servicio y enrutar el tráfico a su pod a través de un equilibrador de carga o controlador de entrada. Para más información, consulte Creación de un controlador de entrada en Azure Kubernetes Service (AKS).
Los nodos virtuales son un componente de una solución de escalado en AKS. Para más información sobre soluciones de escalado, consulte los siguientes artículos:
Azure Kubernetes Service