Creación de grupos de nodos para un clúster en Azure Kubernetes Service (AKS)

En Azure Kubernetes Service, los nodos de la misma configuración se agrupan en grupos de nodos. Estos grupos de nodos contienen las máquinas virtuales subyacentes que ejecutan las aplicaciones. Cuando crea un clúster de AKS, define el número de nodos y su tamaño (SKU) inicial, lo cual crea un grupo de nodos del sistema.

Para admitir aplicaciones con diferentes necesidades de proceso o almacenamiento, puede crear grupos de nodos de usuario. Los grupos de nodos del sistema tienen el propósito principal de hospedar los pods críticos del sistema, como CoreDNS y konnectivity. Los grupos de nodos de usuario tienen el propósito principal de hospedar los pods de aplicación. Por ejemplo, puede usar más grupos de nodos de usuario para proporcionar GPU para aplicaciones de proceso intensivo o acceso a almacenamiento SSD de alto rendimiento. Sin embargo, si solo desea tener un grupo en su clúster de AKS, puede programar pods de aplicación en grupos de nodos de sistema.

Nota:

Esta característica permite un mayor control sobre la creación y administración de varios grupos de nodos y requiere comandos distintos para las operaciones de creación, actualización y eliminación (CRUD). Anteriormente, las operaciones de clúster a través de az aks create o az aks update usaban la API managedCluster y eran la única forma de cambiar el plano de control y un grupo de nodo único. Esta característica expone un conjunto de operaciones independiente para los grupos de agentes a través de la API agentPool y requiere el uso del conjunto de comandos az aks nodepool para ejecutar operaciones en un grupo de nodos individual.

Este artículo le muestra cómo crear uno o más grupos de nodos en un clúster de AKS.

Antes de empezar

Limitaciones

Se aplican las siguientes limitaciones cuando crea clústeres de AKS que admiten varios grupos de nodos:

  • Consulte Cuotas, restricciones de tamaño de máquinas virtuales y disponibilidad de regiones en Azure Kubernetes Service (AKS).
  • Puede eliminar grupos de nodos del sistema si dispone de otro grupo de nodos del sistema que ocupe su lugar en el clúster de AKS. De lo contrario, no puede eliminar el grupo de nodos del sistema.
  • Los grupos del sistema deben contener al menos un nodo mientras que los grupos de nodos del usuario pueden contener varios nodos o ninguno.
  • El clúster de AKS debe usar los equilibradores de carga de SKU estándar para usar varios grupos de nodos. La característica no se admite con equilibradores de carga de SKU Básica.
  • El clúster de AKS deberá usar conjuntos de escalado de máquinas virtuales para los nodos.
  • El nombre de un grupo de nodos solo puede contener caracteres alfanuméricos en minúsculas y debe comenzar con una letra minúscula.
    • En el caso de los grupos de nodos de Linux, la longitud debe estar comprendida entre 1-12 y 12 caracteres.
    • En el caso de los grupos de nodos de Windows, la longitud debe estar comprendida entre 1-6 y 6 caracteres.
  • Todos los grupos de nodos deben residir en la misma red virtual.
  • Al crear varios grupos de nodos durante la creación del clúster, todas las versiones de Kubernetes que se usen en los grupos de nodos deben coincidir con la versión establecida para el plano de control.

Creación de un clúster de AKS

Importante

Si ejecuta un único grupo de nodos del sistema para el clúster de AKS en un entorno de producción, se recomienda usar al menos tres nodos para el grupo de nodos. Si un nodo se queda fuera de servicio, se pierden los recursos del plano de control y se pone en peligro la redundancia. Puede mitigar este riesgo si tiene más nodos del plano de control.

  1. Cree un grupo de recursos de Azure con el comando az group create.

    az group create --name myResourceGroup --location eastus
    
  2. Cree un clúster de AKS con un grupo de nodo único mediante el comando az aks create.

    az aks create \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --vm-set-type VirtualMachineScaleSets \
        --node-count 2 \
        --generate-ssh-keys \
        --load-balancer-sku standard
    

    La operación de creación del clúster tarda unos minutos.

  3. Cuando el clúster esté listo, obtenga las credenciales del clúster mediante el comando az aks get-credentials.

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

Adición de un grupo de nodos

El clúster creado en el paso anterior tiene un grupo de nodo único. En esta sección, se agrega un segundo grupo de nodos al clúster.

  1. Cree un grupo de nodos nuevo mediante el comando az aks nodepool add. En el ejemplo siguiente se crea un grupo de nodos denominado mynodepool que ejecuta tres nodos:

    az aks nodepool add \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name mynodepool \
        --node-count 3
    
  2. Compruebe el estado de los grupos de nodos mediante el comando az aks node pool list y especifique el nombre del clúster y del grupo de recursos.

    az aks nodepool list --resource-group myResourceGroup --cluster-name myAKSCluster
    

    En la siguiente salida de ejemplo se puede ver que mynodepool se ha creado correctamente con tres nodos. Cuando se creó el clúster de AKS en el paso anterior, también se creó un grupo de nodos predeterminado denominado nodepool1 con 2 nodos.

    [
      {
        ...
        "count": 3,
        ...
        "name": "mynodepool",
        "orchestratorVersion": "1.15.7",
        ...
        "vmSize": "Standard_DS2_v2",
        ...
      },
      {
        ...
        "count": 2,
        ...
        "name": "nodepool1",
        "orchestratorVersion": "1.15.7",
        ...
        "vmSize": "Standard_DS2_v2",
        ...
      }
    ]
    

Grupos de nodos ARM64

El procesador ARM64 proporciona proceso de bajo consumo para las cargas de trabajo de Kubernetes. Para crear un grupo de nodos de ARM64, deberá elegir una máquina virtual de la serie Dpsv5, Dplsv5 o Epsv5.

Limitaciones

  • Los grupos de nodos ARM64 no se admiten en los clústeres habilitados para Defender.
  • Los grupos de nodos habilitados para FIPS no se admiten con SKU ARM64.

Adición de un grupo de nodos de ARM64

  • Agregue un grupo de nodos ARM64 al clúster existente mediante el az aks nodepool add.

    az aks nodepool add \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name armpool \
        --node-count 3 \
        --node-vm-size Standard_D2pds_v5
    

Grupos de nodos de Azure Linux

El host del contenedor de Linux en Azure para AKS es una distribución de Linux de código abierto disponible como host del contenedor de AKS. Proporciona alta confiabilidad, seguridad y coherencia. Solo incluye el conjunto mínimo de paquetes necesarios para ejecutar cargas de trabajo de contenedor, lo que mejora los tiempos de arranque y el rendimiento general.

Añadir un grupo de nodos de Linux en Azure

  • Agregue un grupo de nodos de Azure Linux al clúster existente mediante el comando az aks nodepool add y especifique --os-sku AzureLinux.

    az aks nodepool add \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name azlinuxpool \
        --os-sku AzureLinux
    

Migración de nodos de Ubuntu a nodos de Azure Linux

Puede migrar los nodos existentes de Ubuntu a Linux en Azure mediante uno de los métodos siguientes:

Grupos de nodos con subredes únicas

Una carga de trabajo puede requerir la división de los nodos de clúster en grupos independientes para el aislamiento lógico. Las subredes independientes dedicadas a cada grupo de nodos en el clúster pueden ayudar a admitir este aislamiento, que puede abordar requisitos como tener un espacio de direcciones de red virtual no contiguo para dividir entre grupos de nodos.

Nota:

Asegúrese de que su versión de la CLI de Azure sea la 2.35.0 o posterior.

Limitaciones

  • Todas las subredes asignadas a grupos de nodos deben pertenecer a la misma red virtual.
  • Los pods del sistema deben tener acceso a todos los nodos y pods del clúster para proporcionar funcionalidad crítica, como la resolución de DNS y la tunelización de logs/exec/port-forward proxy de kubectl.
  • Si expande la red virtual después de crear el clúster, debe actualizarlo antes de agregar una subred fuera del bloque CIDR original. Mientras que AKS da error en la adición del grupo de agentes, la aks-previewextensión de la CLI de Azure (versión 0.5.66 y superior) ahora permite ejecutar el comando az aks update con solo los argumentos -g <resourceGroup> -n <clusterName> necesarios. Este comando realiza una operación de actualización sin hacer ningún cambio, lo que puede recuperar un clúster bloqueado en un estado de error.
  • En clústeres con versiones de Kubernetes anteriores a 1.23.3, kube-proxy usaba SNAT para el tráfico de subredes nuevas, lo que podía hacer que la directiva de red de Azure eliminara los paquetes.
  • Los nodos de Windows dirigen el tráfico SNAT a las nuevas subredes hasta que se vuelva a restablecer la imagen inicial del grupo de nodos.
  • Los equilibradores de carga internos actúan de forma predeterminada a una de las subredes del conjunto de nodos.

Adición de un grupo de nodos con una subred única

  • Agregue un grupo de nodos con una subred única en el clúster existente mediante el comando az aks nodepool add y especifique --vnet-subnet-id.

    az aks nodepool add \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name mynodepool \
        --node-count 3 \
        --vnet-subnet-id <YOUR_SUBNET_RESOURCE_ID>
    

Grupos de nodos habilitado para FIPS

Para más información sobre cómo habilitar el Estándar federal de procesamiento de información (FIPS) para el clúster de AKS, consulte Habilitación del estándar federal de proceso de información (FIPS) para grupos de nodos de Azure Kubernetes Service (AKS).

Grupos de nodos de Windows Server con containerd

A partir de la versión 1.20 de Kubernetes y versiones posteriores, puede especificar containerd como el entorno de ejecución del contenedor para los grupos de nodos de Windows Server 2019. A partir de Kubernetes 1.23, containerd es el valor predeterminado y el único entorno de ejecución de contenedor para Windows.

Importante

Cuando se utiliza containerd con grupos de nodos de Windows Server 2019:

  • Tanto el plano de control como los grupos de nodos de Windows Server 2019 deben usar la versión 1.20 o posterior de Kubernetes.
  • Al crear o actualizar un grupo de nodos para ejecutar contenedores de Windows Server, el valor predeterminado de --node-vm-size es Standard_D2s_v3, que era el tamaño mínimo recomendado para los grupos de nodos de Windows Server 2019 en las versiones anteriores a Kubernetes 1.20. El tamaño mínimo recomendado para grupos de nodos de Windows Server 2019 cuando se usa containerd es Standard_D4s_v3. Al establecer el parámetro --node-vm-size, compruebe la lista de tamaños de máquina virtual restringidos.
  • Se recomienda usar marcas o etiquetas con los grupos de nodos de Windows Server 2019 que ejecutan containerd y tolerancias o selectores de nodos con las implementaciones para garantizar que las cargas de trabajo se programan correctamente.

Incorporación de un grupo de nodos de Windows Server con containerd

  • Agregue un grupo de nodos de Windows Server con containerd en el clúster existente mediante el az aks nodepool add.

    Nota:

    Si no especifica el encabezado personalizado WindowsContainerRuntime=containerd, el grupo de nodos sigue usando containerd como entorno de ejecución de contenedor de manera predeterminada.

    az aks nodepool add \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --os-type Windows \
        --name npwcd \
        --node-vm-size Standard_D4s_v3 \
        --kubernetes-version 1.20.5 \
        --aks-custom-headers WindowsContainerRuntime=containerd \
        --node-count 1
    

Actualización de un grupo de nodos de Windows Server existente específico a containerd

  • Actualice un grupo de nodos específico de Docker a containerd mediante el comando az aks nodepool upgrade.

    az aks nodepool upgrade \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name npwd \
        --kubernetes-version 1.20.7 \
        --aks-custom-headers WindowsContainerRuntime=containerd
    

Actualización de todos los grupo de nodos de Windows Server existentes a containerd

  • Actualice todos los grupos de nodos de Docker a containerd mediante el comando az aks nodepool upgrade.

    az aks nodepool upgrade \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --kubernetes-version 1.20.7 \
        --aks-custom-headers WindowsContainerRuntime=containerd
    

Eliminación de un grupo de nodos

Si ya no necesita un grupo de nodo, puede eliminarlo y quitar los nodos de máquinas virtuales subyacentes.

Precaución

Cuando se elimina un grupo de nodos, AKS no realiza acordono y purga, y no hay ninguna opción de recuperación para la pérdida de datos que puede producirse al eliminar un grupo de nodos. Si no se pueden programar pods en otros grupos de nodos, esas aplicaciones dejarán de estar disponibles. Asegúrese de que no elimina un grupo de nodos si las aplicaciones en uso no disponen de copias de seguridad de los datos o de la posibilidad de ejecutarse en otros grupos de nodos del clúster. Para minimizar la interrupción de los pods de reprogramación que se ejecutan actualmente en el grupo de nodos que quiere eliminar, realice un acordonamiento y purga en todos los nodos del grupo de nodos antes de eliminarlos.

  • Elimine un grupo de nodos mediante el comando az aks nodepool delete y especifique el nombre del grupo de nodos.

    az aks nodepool delete -g myResourceGroup --cluster-name myAKSCluster --name mynodepool --no-wait
    

    Tarda unos minutos en eliminar los nodos y el grupo de nodos.

Pasos siguientes

En este artículo ha aprendido a crear grupos de varios nodos en un clúster de AKS. Para obtener más información sobre cómo administrar varios grupos de nodos, consulte Administración de varios grupos de nodos para un clúster en Azure Kubernetes Service (AKS).