Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Résumé
Cet article explique comment identifier et résoudre l’erreur OrasPullUnauthorizedVMExtensionError (code d’erreur 212) qui se produit lorsque vous essayez de créer et de déployer un cluster Microsoft Azure Kubernetes Service (AKS).
Symptômes
Lorsque vous essayez de créer un cluster AKS avec le type none sortant ou block, vous recevez le message d’erreur suivant :
VMExtensionProvisioningError : la machine virtuelle a signalé un échec lors du traitement de l’extension « vmssCSE ».
Message d’erreur : « Échec de l’activation : échec de l’exécution de la commande : la commande s’est arrêtée avec l’état de sortie=212
Échec de l'autorisation du Bootstrap Container Registry. Vérifiez que l’identité kubelet dispose d’un accès par extraction au Registre.
La cause
Pour le cluster isolé réseau, le trafic de sortie est limité. La fonctionnalité introduit un cache privé du registre de conteneurs Azure (ACR) qui agit en tant que proxy pour télécharger les binaires ou les images nécessaires à partir de Microsoft Artifact Registry (MAR) pour le démarrage AKS. Il est suggéré de désactiver l’accès anonyme à l’ACR. Le nœud AKS utilise l’identité kubelet pour accéder à l’ACR. Si l’autorisation acrpull n’est pas définie correctement ou si l’identité kubelet n’est pas liée à l’instance de machine virtuelle, une erreur non autorisée se produit.
Solution
Pour résoudre ce problème, effectuez les étapes suivantes :
Accédez à l’instance de machine virtuelle à l’aide de Secure Shell (SSH) pour obtenir le fichier journal
/var/log/azure/cluster-provision.log. Passez en revue le journal pour déterminer si le problème est lié à une erreur 401, au délai d’expiration de la connexion IMDS (Azure Instance Metadata Service) ou à une identité introuvable avec le code HTTP 400.Récupérez l’ID de ressource ACR que AKS utilise comme ACR de démarrage en exécutant la commande suivante :
export REGISTRY_ID=$(az aks show -g ${RESOURCE_GROUP} -n ${CLUSTER_NAME} --query 'bootstrapProfile.containerRegistryId' -o tsv)Si le problème est lié à une erreur 401 non autorisée, vous devez vous assurer que l'identité AKS dispose du rôle ACR nécessaire pour s'autoriser auprès du registre. Pour ce faire, vérifiez les attributions de rôles du registre ACR pour voir s’il existe une attribution de rôle existante pour l’identité AKS.
Pour vous assurer que l’identité AKS dispose d’autorisations sur le registre ACR, commencez par obtenir l’ID principal de l’identité AKS en exécutant la commande suivante.
export KUBELET_IDENTITY_PRINCIPAL_ID=$(az aks show -g ${RESOURCE_GROUP} -n ${CLUSTER_NAME} --query 'identityProfile.kubeletidentity.clientId' -o tsv)Ensuite, affectez le rôle ACR approprié à l’identité AKS. Si le mode d’autorisations d’attribution de rôle de votre registre est « activé par ABAC » et configuré sur « Registre RBAC + Autorisations de référentiel ABAC », vous devez attribuer le
Container Registry Repository Readerrôle. Sinon, si le mode d’autorisations d’attribution de rôle de votre registre n’est pas activé par ABAC et configuré uniquement pour « Autorisations de Registre RBAC », vous devez attribuer leAcrPullrôle. Veuillez voir https://aka.ms/acr/auth/abac pour plus d'informations sur les registres ACR compatibles avec ABAC et les différents rôles requis.Pour les registres avec ABAC, exécutez la commande suivante. Pour les registres non ABAC activés, remplacez
Container Registry Repository Readerplutôt dans la commandeAcrPullsuivante.az role assignment create --role "Container Registry Repository Reader" --scope ${REGISTRY_ID} --assignee-object-id ${KUBELET_IDENTITY_PRINCIPAL_ID} --assignee-principal-type ServicePrincipalSi l’erreur de journal indique que l’identité est introuvable, liez manuellement l’identité kubelet à l'Ensemble de Machines Virtuelles (VMSS) pour une solution rapide.
Si le problème est lié au délai d’expiration de la connexion IMDS, envoyez un ticket de support.
Réconciliez le cluster si les opérations précédentes sont terminées.