Configuración de la directiva de interrupción del nodo en Azure Kubernetes Service (AKS) (versión preliminar)

En este artículo se muestra cómo configurar y administrar la directiva de interrupción del nodo para controlar cuándo se permiten las operaciones que requieren la nueva imagen del nodo y la reimplementación del nodo desencadenador en el clúster de Azure Kubernetes Service (AKS).

Prerequisites

Importante

Las características en versión preliminar de AKS están disponibles en modalidad de autoservicio y previa suscripción. Las versiones preliminares se proporcionan "tal cual" y "como están disponibles", y están excluidas de los Acuerdos de nivel de servicio y la garantía limitada. Las versiones preliminares de AKS cuentan con soporte parcial por parte del servicio al cliente en la medida de lo posible. Por lo tanto, estas características no están diseñadas para su uso en producción. Para más información, consulte los siguientes artículos de soporte:

Instalación de la extensión aks-preview CLI de Azure

  1. Instale la extensión aks-preview mediante el comando az extension add.

    az extension add --name aks-preview
    
  2. Actualiza a la última versión de la extensión mediante el comando az extension update.

    az extension update --name aks-preview
    

Registrar la función de vista previa de la directiva de interrupción de nodos

Registra la función de vista previa de la directiva de interrupción de nodos mediante el comando az feature register.

az feature register --namespace Microsoft.ContainerService --name NodeDisruptionProfile

El estado tarda unos minutos en mostrarse como Registrado.

Configurar la política de interrupción de nodos en un clúster nuevo

Cree un clúster nuevo de AKS con la Directiva de interrupción de nodo configurada mediante el comando az aks create, con el parámetro --node-disruption-policy establecido en una de las siguientes configuraciones de directiva: Allow (valor predeterminado), AllowDuringMaintenanceWindow o Block.

Permitir operaciones disruptivas en cualquier momento (valor predeterminado)

az aks create \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --node-count 3 \
    --node-disruption-policy Allow \
    --generate-ssh-keys

Permitir operaciones disruptivas solo durante las ventanas de mantenimiento

az aks create \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --node-count 3 \
    --node-disruption-policy AllowDuringMaintenanceWindow \
    --generate-ssh-keys

Importante

Al usar AllowDuringMaintenanceWindow, asegúrese de configurar una aksManagedNodeOSUpgradeSchedule ventana de mantenimiento. La configuración de mantenimiento puede definir la programación en línea o vincular a una ventana de mantenimiento compartida. De lo contrario, las operaciones disruptivas se permiten indefinidamente. Para obtener más información, consulte Uso del mantenimiento planeado para programar y controlar las actualizaciones del clúster de Azure Kubernetes Service.

Bloquear todas las operaciones disruptivas

az aks create \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --node-count 3 \
    --node-disruption-policy Block \
    --generate-ssh-keys

Actualizar la directiva de interrupción del nodo en un clúster existente

Actualice la directiva de interrupción de nodos de un clúster de AKS existente mediante el comando az aks update con el parámetro --node-disruption-policy establecido en una de las siguientes configuraciones de directiva: Allow (valor predeterminado), AllowDuringMaintenanceWindow o Block.

Cambiar la directiva para permitir las operaciones durante las ventanas de mantenimiento

az aks update \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --node-disruption-policy AllowDuringMaintenanceWindow

Cambiar la directiva para bloquear todas las operaciones perjudiciales

az aks update \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --node-disruption-policy Block

Volver a cambiar la directiva para permitir las operaciones en cualquier momento

az aks update \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --node-disruption-policy Allow

Comprobación de la configuración de la directiva de interrupción del nodo

Compruebe la configuración de la directiva de interrupción del nodo mediante el az aks show comando .

az aks show \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --query "nodeDisruptionProfile.nodeDisruptionPolicy" \
    --output tsv

La salida muestra la configuración de directiva actual, como Allow, AllowDuringMaintenanceWindowo Block.

Gestionar operaciones bloqueadas

Cuando la directiva de interrupción del nodo bloquea una operación disruptiva, puede esperar a la ventana de mantenimiento o cambiar temporalmente la directiva.

Espere a la ventana de mantenimiento

Si usa AllowDuringMaintenanceWindow, programe la operación para que se produzca durante la siguiente ventana de mantenimiento. Puede ver las ventanas de mantenimiento configuradas mediante el az aks maintenanceconfiguration list comando .

az aks maintenanceconfiguration list \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster

Cambiar temporalmente la directiva

  1. Actualice la directiva para Allow mediante el comando az aks update con --node-disruption-policy configurado en Allow.

    az aks update \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --node-disruption-policy Allow
    
  2. Realiza tu operación disruptiva. En el ejemplo siguiente se actualizan los certificados de entidad de certificación personalizados mediante el az aks update comando :

    az aks update \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --custom-ca-trust-certificates <path-to-certificate-file>
    
  3. Restaure la directiva original mediante el az aks update comando . En el ejemplo siguiente se restaura --node-disruption-policy a Block:

    az aks update \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --node-disruption-policy Block
    

Operaciones que requieren la actualización manual del grupo de nodos en Kubernetes 1.36 y versiones anteriores

En Kubernetes 1.37 y versiones posteriores, la directiva de interrupción del nodo abarca los siguientes cambios de configuración. En Kubernetes 1.36 y versiones anteriores, estos cambios requieren una actualización manual del grupo de nodos:

  • Cambios en la configuración de SSH, como el cambio de métodos de acceso SSH o la actualización de claves públicas SSH.
  • Cambios en la restricción de IMDS, como habilitar o deshabilitar la restricción de IMDS.
  • Cambios en el nombre del perfil de ACR de Bootstrap para clústeres aislados de la red.
  • Cambios en el tipo de tráfico saliente, como cambiar el enrutamiento de salida del clúster.

En Kubernetes 1.36 y versiones anteriores, ejecute manualmente el az aks nodepool upgrade comando después de realizar el cambio de configuración. Por ejemplo:

az aks nodepool upgrade \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name <nodepool-name> \
    --node-image-only

Para obtener más información sobre las operaciones cubiertas por la directiva de interrupción del nodo, consulte introducción a la directiva de interrupción del nodo.

Solucionar problemas de Node Disruption Policy

Operación bloqueada inesperadamente

Si una operación se bloquea inesperadamente, siga estos pasos para solucionar el problema:

  1. Compruebe la configuración de directiva actual mediante el az aks show comando .

    az aks show \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --query "nodeDisruptionProfile.nodeDisruptionPolicy" \
        --output tsv
    
  2. Si usa AllowDuringMaintenanceWindow, compruebe la configuración de la ventana de mantenimiento mediante el az aks maintenanceconfiguration show comando .

    az aks maintenanceconfiguration show \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name aksManagedNodeOSUpgradeSchedule
    
  3. Compruebe si la hora actual está dentro de la ventana de mantenimiento.

No hay ninguna ventana de mantenimiento configurada

Si establece la directiva en AllowDuringMaintenanceWindow, pero no configura una ventana de mantenimiento, todas las operaciones disruptivas están permitidas.

Configure una ventana de mantenimiento mediante el az aks maintenanceconfiguration add comando . Para reutilizar la misma programación en varios clústeres, vincule aksManagedNodeOSUpgradeSchedule a una ventana de mantenimiento compartido.

az aks maintenanceconfiguration add \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name aksManagedNodeOSUpgradeSchedule \
    --schedule-type Weekly \
    --day-of-week Sunday \
    --interval-weeks 1 \
    --duration 4 \
    --start-time 02:00