Solución básica de problemas de creación de clústeres de AKS
En este artículo se describen los métodos básicos de solución de problemas que se usarán si no se puede crear o implementar correctamente un clúster de Microsoft Azure Kubernetes Service (AKS).
Requisitos previos
CLI de Azure (versión 2.0.59 o posterior).
La herramienta kubectl de Kubernetes. Para instalar kubectl mediante la CLI de Azure, ejecute el comando az aks install-cli .
Visualización de errores de la CLI de Azure
Si se produce un error en la operación al intentar crear clústeres mediante la CLI de Azure, la salida muestra información de error. Este es un ejemplo de comando y salida de la CLI de Azure:
# Create a cluster specifying subnet
az aks create --resource-group myResourceGroup
--name MyManagedCluster \
--load-balancer-sku standard \
--vnet-subnet-id /subscriptions/<subscriptions-id>/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/aks_demo_vnet/subnets/AKS
Ejemplo de salida:
It is highly recommended to use USER assigned identity (option --assign-identity)when you want to bring you own subnet, which will have no latency for the role assignment to take effect. When you SYSTEM assigned identity, azure-cli will grant Network Contributor role to the system assigned identity after the cluster is created, and the role assignment will take some time to take effect, see https://learn.microsoft.com/azure/aks/use-managed-identity, proceed to create cluster with system assigned identity? (y/N): y`
(ControlPlaneAddOnsNotReady) Pods not in Running status: konnectivity-agent-67f7f5554f-nsw2g,konnectivity-agent-8686cb54fd-xlsgk,metrics-server-6bc97b47f7-dfhbr,coredns-845757d86-7xjqb,coredns-autoscaler-5f85dc856b-mxkrj
Puede identificar el código de error y el mensaje de error de la salida. En este caso, son:
- Código de error:
ControlPlaneAddOnsNotReady
- Mensaje de error:
Pods not in Running status: konnectivity-agent-67f7f5554f-nsw2g,konnectivity-agent-8686cb54fd-xlsgk,metrics-server-6bc97b47f7-dfhbr,coredns-845757d86-7xjqb,coredns-autoscaler-5f85dc856b-mxkrj
.
Estas descripciones a menudo contienen detalles de lo que salió mal en la creación del clúster y vinculan a artículos que contienen aún más detalles. Además, puede usar nuestros artículos de solución de problemas como referencia, en función de los errores que genera la operación de la CLI de Azure.
Visualización de los detalles del error en Azure Portal
Para investigar los errores de creación del clúster de AKS en Azure Portal, abra el registro de actividad. Puede filtrar los resultados para adaptarlos a sus necesidades. Para ello, seleccione Agregar filtro para agregar más propiedades al filtro.
En la página Registro de actividad, busque entradas de registro en las que la columna Nombre de la operación muestra Crear o actualizar clúster administrado.
La columna Evento iniciado por muestra el usuario que realizó la operación, que podría ser una cuenta profesional, una cuenta educativa o una identidad administrada de Azure.
Si la operación se realiza correctamente, se acepta el valor de la columna Estado. También verá entradas de suboperación para la creación de los componentes del clúster, como los siguientes nombres de operación:
- Crear o actualizar tabla de rutas
- Creación o actualización del grupo de seguridad de red
- Actualizar creación de identidad asignada por el usuario
- Creación o actualización del equilibrador de carga
- Crear o actualizar la dirección IP pública
- Creación de una asignación de roles
- Actualizar grupo de recursos
En estas entradas de suboperación, el valor estado es Correcto y el campo Evento iniciado por se establece en AzureContainerService.
¿Qué ocurre si se produjo un error en su lugar? En ese caso, el valor De estado es Error. A diferencia de en las operaciones para crear componentes de clúster, debe expandir las entradas de suboperación con errores para revisarlos. Los nombres de suboperación típicos son acciones de directiva, como la acción directiva "audit" y la acción directiva "auditIfNotExists". No todas las suboperaciones necesariamente fallan juntas. Puede esperar que algunos de ellos se realicen correctamente.
Seleccione una de las suboperaciones con errores para investigarla aún más. Seleccione las pestañas Resumen, JSON y Historial de cambios para solucionar el problema. La pestaña JSON contiene el texto de salida del error en formato JSON y normalmente proporciona la información más útil.
Este es un ejemplo del registro detallado en formato JSON:
{
"status": {
"value": "Failed",
"localizedValue": "Failed"
},
"subStatus": {
"value": "",
"localizedValue": ""
},
"submissionTimestamp": "2024-08-30T10:06:07Z",
"subscriptionId": "<subscriptionId>",
"tenantId": "<tenantId>",
"properties": {
"statusMessage": "{\"status\":\"Failed\",\"error\":{\"code\":\"ResourceOperationFailure\",\"message\":\"The resource operation completed with terminal provisioning state 'Failed'.\",\"details\":[{\"code\":\"VMExtensionProvisioningError\",\"message\":\"Unable to establish outbound connection from agents, please see https://learn.microsoft.com/en-us/troubleshoot/azure/azure-kubernetes/error-code-outboundconnfailvmextensionerror and https://aka.ms/aks-required-ports-and-addresses for more information.\"}]}}",
}
}
Visualización de información del clúster
¿Se creó el clúster en Azure Portal y está visible allí? Si esto es cierto, puede generar información de clúster que le ayudará a solucionar problemas. Para acceder a esta característica, siga estos pasos:
En Azure Portal, busque y seleccione Servicios de Kubernetes.
Seleccione el nombre del clúster de AKS.
En el panel de navegación de la página del clúster de AKS, seleccione Diagnosticar y resolver problemas.
En la página Diagnosticar y resolver problemas , seleccione el vínculo Información del clúster. La herramienta de información del clúster analiza el clúster y, a continuación, proporciona una lista de sus hallazgos en la sección Observaciones y soluciones de la página Información del clúster.
Seleccione uno de los resultados para ver más información sobre un problema y sus posibles soluciones.
Visualización de recursos en Azure Portal
En Azure Portal, es posible que quiera ver los recursos que se crearon cuando se creó el clúster. Normalmente, estos recursos están en un grupo de recursos cuyo nombre comienza en MC_. Es posible que el grupo de recursos del clúster administrado tenga un nombre como MC_MyResourceGroup_MyManagedCluster_<location-code>. Sin embargo, el nombre puede ser diferente si creó el clúster mediante un grupo de recursos de clúster administrado personalizado.
Para buscar el grupo de recursos, busque y seleccione Grupos de recursos en Azure Portal y, a continuación, seleccione el grupo de recursos en el que se creó el clúster. La lista de recursos se muestra en la página Información general del grupo de recursos.
Advertencia
Se recomienda no modificar los recursos del grupo de recursos MC_ . Esta acción puede afectar negativamente al clúster de AKS.
Para revisar el estado de un conjunto de escalado de máquinas virtuales, puede seleccionar el nombre del conjunto de escalado dentro de la lista de recursos del grupo de recursos. Es posible que tenga un valor name similar a aks-nodepool1-12345678-vmss y un valor type del conjunto de escalado de máquinas virtuales. El estado del conjunto de escalado aparece en la parte superior de la página Información general del grupo de nodos y se muestran más detalles en el encabezado Essentials. Si la implementación no se ha realizado correctamente, el estado mostrado es Error.
Para todos los recursos, puede revisar los detalles para comprender mejor por qué se produjo un error en la implementación. Para un conjunto de escalado, puede seleccionar el texto Estado de error para ver los detalles sobre el error. Los detalles están en una fila que contiene columnas Status, Level y Code . En el ejemplo siguiente se muestra una fila de valores de columna.
Columna | Valor de ejemplo |
---|---|
Estado | Error de aprovisionamiento |
Nivel | Error |
Código | ProvisioningState/failed/VMExtensionProvisioningError |
Seleccione la fila para ver el campo Mensaje . Esto contiene aún más información sobre ese error. Por ejemplo, el campo Mensaje de la fila de ejemplo comienza en el texto siguiente:
La máquina virtual ha notificado un error al procesar la extensión "vmssCSE". Mensaje de error: "Error al habilitar: error al ejecutar el comando: comando finalizado con exit status=50 [stdout] [stderr] 0 0 0 --:
Con esta información, puede concluir que las máquinas virtuales del conjunto de escalado generaron un error y generaron el estado de salida 50.
Nota:
Si la implementación del clúster no llegó al punto en el que se habrían creado estos recursos, es posible que no pueda revisar el grupo de recursos del clúster administrado en Azure Portal.
Uso de comandos kubectl
Para obtener otra opción para ayudar a solucionar errores en el clúster, use comandos kubectl para obtener detalles sobre los recursos implementados en el clúster. Para ello, inicie sesión primero en el clúster de AKS:
az aks get-credentials --resource-group MyResourceGroup --name MyManagedCluster
Según el tipo de error y cuándo se produjo, es posible que no pueda iniciar sesión en el clúster para obtener más detalles. Pero si el clúster se creó y aparece en Azure Portal, debería poder iniciar sesión y ejecutar comandos kubectl.
Ver nodos de clúster (kubectl get nodes)
Para determinar el estado de los nodos del clúster, vea los nodos ejecutando el kubectl get nodes
comando . En este ejemplo, no se notifica ningún nodo en el clúster:
$ kubectl get nodes
No resources found
Visualización de pods en el espacio de nombres del sistema (kubectl get pods)
Ver los pods en el espacio de nombres kube-system también es una buena manera de solucionar el problema. Este método le permite ver el estado de los pods del sistema de Kubernetes. En este ejemplo, especificamos el kubectl get pods
comando :
$ kubectl get pods -n kube-system
NAME READY STATUS RESTARTS AGE
coredns-845757d86-7xjqb 0/1 Pending 0 78m
coredns-autoscaler-5f85dc856b-mxkrj 0/1 Pending 0 77m
konnectivity-agent-67f7f5554f-nsw2g 0/1 Pending 0 77m
konnectivity-agent-8686cb54fd-xlsgk 0/1 Pending 0 65m
metrics-server-6bc97b47f7-dfhbr 0/1 Pending 0 77m
Describir el estado de un pod (kubectl describe pod)
Al describir el estado de los pods, puede ver los detalles de configuración y los eventos que se han producido en los pods. Ejecuta el comando kubectl describe pods
:
$ kubectl describe pod coredns-845757d86-7xjqb -n kube-system
Name: coredns-845757d86-7xjqb
Namespace: kube-system
Priority: 2000001000
Priority Class Name: system-node-critical
Node: <none>
Labels: k8s-app=kube-dns
kubernetes.io/cluster-service=true
pod-template-hash=845757d86
version=v20
...
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning FailedScheduling 24m (x1 over 25m) default-scheduler no nodes available to schedule pods
Warning FailedScheduling 29m (x57 over 84m) default-scheduler no nodes available to schedule pods
En la salida del comando, puede ver que el pod no se puede implementar en un nodo porque no hay nodos disponibles.
Ponte en contacto con nosotros para obtener ayuda
Si tiene preguntas o necesita ayuda, cree una solicitud de soporte o busque consejo en la comunidad de Azure. También puede enviar comentarios sobre el producto con los comentarios de la comunidad de Azure.