Solución de problemas de plataforma para clústeres de Kubernetes habilitados para Azure Arc
En este documento, se proporcionan algunas guías para solucionar problemas comunes relacionados con la conectividad, los permisos y los agentes de Kubernetes habilitado para Azure Arc. También proporciona guías de solución de problemas para Azure GitOps, que se pueden usar en clústeres de Kubernetes habilitado para Azure Arc o para Azure Kubernetes Service (AKS).
Para obtener ayuda para solucionar problemas relacionados con las extensiones, como GitOps (Flux v2), Azure Monitor Container Insights, Open Service Mesh, consulte Solución de problemas de extensión para clústeres de Kubernetes habilitados para Azure Arc.
CLI de Azure
Antes de usar az connectedk8s
o az k8s-configuration
comandos de la CLI, asegúrese de que la CLI de Azure esté establecida para que funcione con la suscripción correcta de Azure.
az account set --subscription 'subscriptionId'
az account show
Si ve un error como cli.azext_connectedk8s.custom: Failed to download and install kubectl
, ejecute az aks install-cli --install-location ~/.azure/kubectl-client/kubectl
antes de intentar ejecutarse az connectedk8s connect
de nuevo. Este comando instala el cliente kubectl, que es necesario para que el comando funcione.
Agentes de Azure Arc
Todos los agentes Kubernetes habilitado para Azure Arc se implementan como pods en el azure-arc
espacio de nombres. Todos los pods deben ejecutarse y pasar sus comprobaciones de estado.
En primer lugar, compruebe la versión de Helm para Azure Arc se la siguiente manera:
$ helm --namespace default status azure-arc
NAME: azure-arc
LAST DEPLOYED: Fri Apr 3 11:13:10 2020
NAMESPACE: default
STATUS: deployed
REVISION: 5
TEST SUITE: None
Si no se encuentra la versión de Helm o esta no está presente, intente volver a conectar el clúster a Azure Arc.
Si la versión de Helm está presente y tiene el estado STATUS: deployed
, compruebe el estado de los agentes mediante un comando con kubectl
:
$ kubectl -n azure-arc get deployments,pods
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/cluster-metadata-operator 1/1 1 1 3d19h
deployment.apps/clusterconnect-agent 1/1 1 1 3d19h
deployment.apps/clusteridentityoperator 1/1 1 1 3d19h
deployment.apps/config-agent 1/1 1 1 3d19h
deployment.apps/controller-manager 1/1 1 1 3d19h
deployment.apps/extension-events-collector 1/1 1 1 3d19h
deployment.apps/extension-manager 1/1 1 1 3d19h
deployment.apps/flux-logs-agent 1/1 1 1 3d19h
deployment.apps/kube-aad-proxy 1/1 1 1 3d19h
deployment.apps/metrics-agent 1/1 1 1 3d19h
deployment.apps/resource-sync-agent 1/1 1 1 3d19h
NAME READY STATUS RESTARTS AGE
pod/cluster-metadata-operator-74747b975-9phtz 2/2 Running 0 3d19h
pod/clusterconnect-agent-cf4c7849c-88fmf 3/3 Running 0 3d19h
pod/clusteridentityoperator-79bdfd945f-pt2rv 2/2 Running 0 3d19h
pod/config-agent-67bcb94b7c-d67t8 1/2 Running 0 3d19h
pod/controller-manager-559dd48b64-v6rmk 2/2 Running 0 3d19h
pod/extension-events-collector-85f4fbff69-55zmt 2/2 Running 0 3d19h
pod/extension-manager-7c7668446b-69gps 3/3 Running 0 3d19h
pod/flux-logs-agent-fc7c6c959-vgqvm 1/1 Running 0 3d19h
pod/kube-aad-proxy-84d668c44b-j457m 2/2 Running 0 3d19h
pod/metrics-agent-58fb8554df-5ll67 2/2 Running 0 3d19h
pod/resource-sync-agent-dbf5db848-c9lg8 2/2 Running 0 3d19h
En todos los pods, el valor de STATUS
debe ser Running
, con 3/3
o 2/2
en la columna READY
. Capture los registros y describa los pods que devuelven Error
o CrashLoopBackOff
. Si algún pod está bloqueado en el estado Pending
, es posible que no haya recursos suficientes en los nodos del clúster. Escalar verticalmente el clúster puede hacer que estos pods pasen al estado Running
.
Error de aprovisionamiento de recursos/Error de tiempo de espera del servicio
Si ve estos errores, compruebe Estado de Azure para ver si hay algún evento activo que afecte al estado del servicio Kubernetes habilitado para Azure Arc. Si es así, espere a que se resuelva el evento de servicio y vuelva a intentar la incorporación después de eliminar el recurso de clúster conectado existente. Si no hay eventos de servicio y sigue experimentando problemas durante la incorporación, abrir una solicitud de soporte técnico para que podamos investigar el problema.
Error de notificaciones por encima del límite
Si recibe una notificación por encima del límite, asegúrese de que la entidad de servicio no forme parte de más de 200 grupos de Microsoft Entra. Si este es el caso, debe crear y usar otra entidad de servicio que no sea miembro de más de 200 grupos, o quitar la entidad de servicio original de algunos de sus grupos e inténtelo de nuevo.
También puede producirse una notificación de uso por encima del límite si ha configurado un entorno de proxy de salida sin permitir que el punto de conexión https://<region>.obo.arc.azure.com:8084/
para el tráfico saliente.
Si ninguno de estos se aplica, abrir una solicitud de soporte técnico para que podamos examinar el problema.
Problemas al conectar clústeres de Kubernetes a Azure Arc
La conexión de clústeres a Azure Arc requiere acceso a una suscripción de Azure y acceso cluster-admin
a un clúster de destino. Si no puede establecer conexión con el clúster o no dispone de los permisos suficientes, se producirá un error al conectar el clúster a Azure Arc. Asegúrese de que cumple todos los requisitos previos para conectar un clúster.
Sugerencia
Para obtener una guía visual para solucionar problemas de conexión, consulte Diagnóstico de problemas de conexión para clústeres de Kubernetes habilitados para Arc.
Problemas de resolución de DNS
Para obtener ayuda con problemas relacionados con la resolución de DNS en el clúster, consulte Depuración de la resoluciónde DNS.
Problemas de conectividad de red saliente
Los problemas con la conectividad de red saliente desde el clúster pueden surgir por diferentes motivos. En primer lugar, asegúrese de que se han cumplido todos los requisitos de red.
Si encuentra problemas de conectividad y el clúster está detrás de un servidor proxy de salida, asegúrese de pasar parámetros de proxy durante la incorporación del clúster y de que el proxy está configurado correctamente. Para obtener más información, consulte Conexión mediante un servidor proxy de salida.
Es posible que vea un error similar al siguiente:
An exception has occurred while trying to execute the cluster diagnostic checks in the cluster. Exception: Unable to pull cluster-diagnostic-checks helm chart from the registry 'mcr.microsoft.com/azurearck8s/helmchart/stable/clusterdiagnosticchecks:0.1.2': Error: failed to do request: Head "https://mcr.microsoft.com/v2/azurearck8s/helmchart/stable/clusterdiagnosticchecks/manifests/0.1.2": dial tcp xx.xx.xx.219:443: i/o timeout
Este error se produce cuando se bloquea el punto de conexión de https://k8connecthelm.azureedge.net
. Asegúrese de que su red permita la conectividad a este punto de conexión y cumpla todos los demás requisitos de red.
No se puede recuperar el certificado de MSI
Los problemas para recuperar el certificado de MSI suelen deberse a problemas de red. Compruebe que se han cumplido todos los requisitos de red y vuelva a intentarlo.
Permisos de clúster insuficientes
Si el archivo kubeconfig proporcionado no tiene permisos suficientes para instalar los agentes de Azure Arc, el comando de la CLI de Azure devuelve un error: Error: list: failed to list: secrets is forbidden: User "myuser" cannot list resource "secrets" in API group "" at the cluster scope
Para resolver este problema, asegúrese de que el usuario que conecta el clúster a Azure Arc tiene asignado el rol cluster-admin
.
No se puede conectar el clúster de OpenShift a Azure Arc
Si se agota el tiempo espera del comando az connectedk8s connect
al intentar conectar un clúster de OpenShift a Azure Arc, compruebe lo siguiente:
Asegúrese de que el clúster de OpenShift cumpla los requisitos previos de la versión: 4.5.41 o más reciente, 4.6.35 o más reciente o 4.7.18 o más reciente.
Antes de ejecutar el comando
az connectedk8s connnect
, ejecute este otro comando en el clúster:oc adm policy add-scc-to-user privileged system:serviceaccount:azure-arc:azure-arc-kube-aad-proxy-sa
Tiempos de espera de instalación
Para conectar un clúster de Kubernetes a una versión de Kubernetes habilitada para Azure Arc, es necesario instalar agentes de Azure Arc en el clúster. Si el clúster se ejecuta utilizando una conexión a Internet lenta, la extracción de la imagen del contenedor puede agotar los tiempos de espera de la CLI de Azure.
Error de tiempo de espera de Helm
Es posible que vea el error Unable to install helm release: Error: UPGRADE Failed: time out waiting for the condition
. Para resolver este problema, pruebe los siguientes pasos:
Ejecute el siguiente comando:
kubectl get pods -n azure-arc
Compruebe si los pods
clusterconnect-agent
oconfig-agent
muestran el estadocrashloopbackoff
o si hay algún contenedor que no se esté ejecutando:NAME READY STATUS RESTARTS AGE cluster-metadata-operator-664bc5f4d-chgkl 2/2 Running 0 4m14s clusterconnect-agent-7cb8b565c7-wklsh 2/3 CrashLoopBackOff 0 1m15s clusteridentityoperator-76d645d8bf-5qx5c 2/2 Running 0 4m15s config-agent-65d5df564f-lffqm 1/2 CrashLoopBackOff 0 1m14s
Si el
azure-identity-certificate
no está presente, no se ha instalado la identidad administrada asignada por el sistema.kubectl get secret -n azure-arc -o yaml | grep name:
name: azure-identity-certificate
Para resolver esta incidencia, intente eliminar la implementación de Arc, ejecute el comando
az connectedk8s delete
y, después, vuelva a instalarla. Si el problema sigue ocurriendo, podría tratarse de un problema con la configuración de proxy. En ese caso, intente conectar el clúster a Azure Arc a través de un proxy. Compruebe también que se han cumplido todos los requisitos previos de red.Si los pods
clusterconnect-agent
yconfig-agent
se están ejecutando pero falta el podkube-aad-proxy
, compruebe las directivas de seguridad de los pods. Este pod usa la cuenta de servicioazure-arc-kube-aad-proxy-sa
, que no tiene permisos de administrador, pero requiere el permiso para montar la ruta de acceso del host.Si el pod
kube-aad-proxy
está bloqueado en el estadoContainerCreating
, compruebe si el certificado kube-aad-proxy se ha descargado en el clúster.kubectl get secret -n azure-arc -o yaml | grep name:
name: kube-aad-proxy-certificate
Si falta el certificado, eliminar de implementación e intentar la incorporación de nuevo, con un nombre diferente para el clúster. Si el problema continúa, abra una solicitud de soporte técnico.
Error del módulo CryptoHash
Al intentar incorporar clústeres de Kubernetes a la plataforma de Azure Arc, el entorno local (por ejemplo, la consola de cliente) puede devolver el siguiente mensaje de error:
Cannot load native module 'Crypto.Hash._MD5'
A veces, los módulos dependientes no se descargan correctamente al agregar las extensiones connectedk8s
y k8s-configuration
a través de la CLI de Azure o Azure PowerShell. Para solucionar este problema, quite manualmente y agregue las extensiones en el entorno local.
Para eliminar las extensiones, use:
az extension remove --name connectedk8s
az extension remove --name k8s-configuration
Para agregar las extensiones, use:
az extension add --name connectedk8s
az extension add --name k8s-configuration
Problemas de conexión del clúster
Si el clúster se encuentra tras un proxy o firewall de salida, compruebe que las conexiones websocket estén habilitadas para usar *.servicebus.windows.net
, ya que esto es un requisito específico para el uso de la característica Conexión de clúster. Además, asegúrese de que usa la versión más reciente de la connectedk8s
Extensión de la CLI de Azure si tiene problemas con la conexión del clúster.
Si faltan los pods clusterconnect-agent
y kube-aad-proxy
, es probable que la característica de conexión del clúster esté deshabilitada en el clúster. Si es así, az connectedk8s proxy
no puede establecer una sesión con el clúster y es posible que vea un error al leer Cannot connect to the hybrid connection because no agent is connected in the target arc resource.
Para resolver este error, habilite la característica de conexión del clúster en el clúster:
az connectedk8s enable-features --features cluster-connect -n $CLUSTER_NAME -g $RESOURCE_GROUP
Para más información, consulte Uso de la conexión de clúster para conectarse de forma segura a clústeres de Kubernetes habilitados para Azure Arc.
Habilitación de ubicaciones personalizadas mediante la entidad de servicio
Al conectar el clúster a Azure Arc o al habilitar la característica de ubicaciones personalizadas en un clúster existente, puede que vea la advertencia siguiente:
Unable to fetch oid of 'custom-locations' app. Proceeding without enabling the feature. Insufficient privileges to complete the operation.
Esta advertencia se produce cuando se usa una entidad de servicio para iniciar sesión en Azure y la entidad de servicio no tiene los permisos necesarios. Para evitar este error, siga estos pasos:
Inicie sesión en la CLI de Azure mediante su cuenta de usuario. Recupere el identificador de objeto de la aplicación Microsoft Entra que usa el servicio Azure Arc:
az ad sp show --id bc313c14-388c-4e7d-a58e-70017303ee3b --query objectId -o tsv
Inicie sesión en la CLI de Azure mediante la entidad de servicio. Use el valor
<objectId>
del paso anterior para habilitar ubicaciones personalizadas en el clúster:- Para habilitar ubicaciones personalizadas al conectar el clúster a Arc, ejecute
az connectedk8s connect -n <cluster-name> -g <resource-group-name> --custom-locations-oid <objectId>
- Para habilitar ubicaciones personalizadas en un clúster de Kubernetes habilitado para Azure Arc existente, ejecute
az connectedk8s enable-features -n <cluster-name> -g <resource-group-name> --custom-locations-oid <objectId> --features cluster-connect custom-locations
- Para habilitar ubicaciones personalizadas al conectar el clúster a Arc, ejecute
Pasos siguientes
- Obtenga un tutorial visual acerca de cómo diagnosticar problemas de conexión.
- Ver sugerencias de solución de problemas relacionadas con las extensiones de clúster.