OrasPullUnauthorizedVMExtensionError código de error 212 al implementar un clúster de AKS

Resumen

En este artículo se describe cómo identificar y resolver el OrasPullUnauthorizedVMExtensionError error (código de error 212) que se produce al intentar crear e implementar un clúster de Microsoft Azure Kubernetes Service (AKS).

Síntomas

Al intentar crear un clúster de AKS con el tipo none de salida o block, recibirá el siguiente mensaje de error:

VMExtensionProvisioningError: la máquina virtual ha notificado un error al procesar la extensión "vmssCSE".

Mensaje de error: "Error al habilitar: fallo al ejecutar el comando: el comando terminó con estado de salida=212

Error de autorización de Bootstrap Container Registry. Asegúrese de que la identidad de kubelet tiene acceso de lectura al repositorio.

Causa

En el caso del clúster aislado de red, el tráfico de salida está limitado. La característica presenta la memoria caché privada de Azure Container Registry (ACR) que actúa como proxy para descargar imágenes o binarias necesarias de Microsoft Artifact Registry (MAR) para el arranque de AKS. Se recomienda deshabilitar el acceso anónimo a ACR. El nodo de AKS usa la identidad kubelet para acceder al ACR. Si el acrpull permiso no se ha ajustado correctamente o la identidad de kubelet no está enlazada a la instancia de máquina virtual, se produce un error no autorizado.

Solución

Para resolver este problema, sigue estos pasos:

  1. Acceda a la instancia de máquina virtual mediante Secure Shell (SSH) para obtener el archivo/var/log/azure/cluster-provision.log de registro. Revise el registro para determinar si el problema está relacionado con un error 401, el tiempo de espera de conexión de Azure Instance Metadata Service (IMDS) o una identidad no encontrada con el código HTTP 400.

  2. Recupere el identificador de recurso de ACR que AKS usa como ACR de arranque mediante la ejecución del siguiente comando:

    export REGISTRY_ID=$(az aks show -g ${RESOURCE_GROUP} -n ${CLUSTER_NAME} --query 'bootstrapProfile.containerRegistryId' -o tsv)
    
  3. Si el problema está relacionado con un error 401 no autorizado, debe asegurarse de que la identidad de AKS tenga el rol de ACR necesario para autorizarse con el registro. Para ello, compruebe las asignaciones de roles del registro de ACR para ver si hay una asignación de roles existente para la identidad de AKS.

    Para asegurarse de que la identidad de AKS tiene permisos para el registro de ACR, primero obtenga el ID principal de la identidad de AKS ejecutando el siguiente comando.

    export KUBELET_IDENTITY_PRINCIPAL_ID=$(az aks show -g ${RESOURCE_GROUP} -n ${CLUSTER_NAME} --query 'identityProfile.kubeletidentity.clientId' -o tsv)
    

    Después, asigne el rol de ACR correcto a la identidad de AKS. Si el modo de permisos de asignación de roles del registro está habilitado para ABAC y está configurado como "Permisos de Registro RBAC + Permisos del Repositorio ABAC", debe asignar el rol Container Registry Repository Reader. De lo contrario, si el modo de permisos de asignación de roles del registro no tiene soporte de ABAC y solo está configurado en "Permisos del Registro RBAC", debe asignar el rol AcrPull. https://aka.ms/acr/auth/abac Consulte para obtener más información sobre los registros de ACR habilitados para ABAC y los distintos roles necesarios.

    Para los registros habilitados para ABAC, ejecute el siguiente comando. En el caso de los registros no habilitados para ABAC, reemplace Container Registry Repository Reader en el siguiente comando por AcrPull en su lugar.

    az role assignment create --role "Container Registry Repository Reader" --scope ${REGISTRY_ID} --assignee-object-id ${KUBELET_IDENTITY_PRINCIPAL_ID} --assignee-principal-type ServicePrincipal
    
  4. Si el error de registro indica que no se encuentra la identidad, enlace manualmente la identidad de kubelet al conjunto de escalado de máquinas virtuales (VMSS) para obtener una corrección rápida.

  5. Si el problema está relacionado con el tiempo de espera de conexión de IMDS, envíe una incidencia de soporte técnico.

  6. Concilie el clúster si se han completado las operaciones previas.

Referencias