Compartir a través de


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

  1. Vaya a la página principal de Azure Portal.
  2. Seleccione Crear un contenedor de recursos>Contenedores.
  3. En el recurso Azure Kubernetes Service (AKS), seleccione Crear.
  4. 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.
  5. Seleccione Siguiente: Grupos de nodos y active *Habilitar nodos virtuales. Captura de pantalla que muestra la creación de un clúster con nodos virtuales habilitados en Azure Portal. La opción
  6. Seleccione Revisar + crear.
  7. 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.

  1. Para configurar kubectl para conectarse a su clúster de Kubernetes, use el comando az 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
    
  2. 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

  1. 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.

  2. Ejecute la aplicación con el comando kubectl apply.

    kubectl apply -f virtual-node.yaml
    
  3. 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.

  1. 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
    
  2. Instale curl en el pod mediante el siguiente comando apt-get.

    apt-get update && apt-get install -y curl
    
  3. 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>
    [...]
    
  4. 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: