Solución de problemas de errores de actualización del clúster del servicio Kubernetes de Azure
En este artículo se proporcionan instrucciones para solucionar los errores más comunes que se producen al actualizar un clúster de Azure Kubernetes Service (AKS).
Antes de empezar
Compruebe el mensaje de error que recibió durante el proceso de actualización y siga los pasos correspondientes en la sección "Resolución".
Este artículo requiere la versión 2.0.65 de la CLI de Azure o una versión posterior. Para buscar el número de versión, ejecute az --version. Si tiene que instalar o actualizar la CLI de Azure, consulte Install Azure CLI.
Para obtener un proceso de actualización detallado, consulte What happens during AKS cluster upgrade.
Error en la actualización debido a reglas NSG
Causa
Una regla NSG está bloqueando que el clúster descargue los recursos necesarios.
Solución
Para resolver este problema, siga estos pasos:
Ejecute
az network nsg list -o tabley, a continuación, busque el NSG vinculado al clúster. El NSG se agrupa en un grupo de recursos denominadoMC_<RG name>_<your AKS cluster name>.Ver las reglas del NSG:
az network nsg rule list --resource-group <Rg name> --nsg-name <nsg name> --include-default -o tableEl siguiente screenshpt muestra las reglas predeterminadas:
Si tiene las reglas predeterminadas, omita este paso. De lo contrario, revise y quite las reglas que bloquean el tráfico de Internet. A continuación, intente actualizar el clúster de AKS a la misma versión a la que intentó actualizar anteriormente. Este proceso desencadenará una conciliación.
az aks upgrade --resource-group <ResourceGroupName> --name <AKSClusterName> --kubernetes-version <KUBERNETES_VERSION>
Código de error: PodDrainFailure
Causa
Este error puede producirse si un pod está protegido por la directiva de presupuesto de interrupción de pods (PDB). En esta situación, el pod se resiste a ser drenado.
Para probar esto, ejecute kubelect get pdb -Ay, a continuación, compruebe el valor De interrupción permitida. El valor debe ser 1 o superior. Para obtener más información, vea Plan for availability using pod disruption budgets.
Si el valor de Interrupción permitida es 0, el desagüe del nodo producirá un error durante el proceso de actualización.
Solución alternativa
Para resolver este problema, use uno de los métodos siguientes:
- Ajuste el PDB para habilitar el vaciado de pods. Por lo general, la interrupción permitida es el resultado de
Min Available / Max unavailableoRunning pods / Replicas. Puede modificar el parámetro enMin Available / Max unavailableel nivel PDB oRunning pods / Replicasaumentar el número de para insertar el valor de interrupción permitida a 1 o superior. - Realice una copia de seguridad de PDB
kubectl get pdb <pdb-name> -n <pdb-namespace> -o yaml > pdb_backup.yamly, a continuación, elimine la PDBkubectl delete pdb <pdb-name> -n /<pdb-namespace>. Una vez completada la actualización, puede volver a implementar la PDBkubectl apply -f pdb_backup.yaml. - Elimine los pods que no se pueden drenar. Tenga en cuenta que si los pods se crearon mediante una implementación o StatefulSet, se controlarán mediante un ReplicaSet. Por lo tanto, es posible que tenga que eliminar la implementación o StatefulSet. Antes de hacerlo, se recomienda realizar una copia de seguridad
kubectl get <kubernetes-object> <name> -n <namespace> -o yaml > backup.yaml.
Después de aplicar uno de estos métodos, vuelva a iniciar la operación de actualización del clúster de AKS a la misma versión que intentó actualizar anteriormente. Este proceso desencadenará una conciliación que intentará volver a actualizar los nodos de AKS.
Código de error: PublicIPCountLimitReached
Causa
El error se produce si alcanzó el número máximo de direcciones IP públicas permitidas para la suscripción.
Solución
Para aumentar el límite o la cuota de la suscripción, vaya a Azure Portal, file a Service and subscription limits (quotas) support ticket y establezca el tipo de cuota en Networking.
Después de que el cambio de cuota entre en vigor, intente actualizar el clúster a la misma versión a la que intentó actualizar anteriormente. Este proceso desencadenará una conciliación.
az aks upgrade --resource-group <ResourceGroupName> --name <AKSClusterName> --kubernetes-version <KUBERNETES_VERSION>
Código de error: Quotaexceeded
Causa
El problema se produce si se alcanza la cuota. La suscripción no tiene recursos disponibles necesarios para la actualización.
Solución
Para aumentar el límite o la cuota de la suscripción, vaya a Azure Portal, file a Service and subscription limits (quotas) support ticket.
A continuación se muestra un ejemplo del mensaje de error:
La operación hace que se superen los límites de cuota de Core. Máximo permitido: X, Actual en uso: X, Adicional solicitado: X
En este caso, debe enviar un vale de soporte técnico para aumentar la cotización de los núcleos de cálculo.
Código de error: Subnetisfull
Mensaje de error
Error al escalar el grupo de nodos <AGENT POOL NAME>en el servicio kubernetes '<NAME>'.' Error: Error al reintentar VMSSAgentPoolReconciler: Code='SubnetIsFull' Message='<SUBNET NAME>\ con <PREFIX>prefijo de dirección \ no tiene suficiente capacidad para las direcciones IP XXX.' Details=[]
Causa
Este error se produce si el clúster no tiene suficientes direcciones IP para crear un nuevo nodo.
Cuando planee realizar una operación de actualización o escalado, se debe tener en cuenta el número de direcciones IP necesarias. Si el intervalo de direcciones IP que configuró en el clúster solo admite un número fijo de nodos, se producirá un error en la operación de actualización o escalado. Para obtener más información, vea Plan IP addressing for the cluster.
Solución alternativa
Para evitar el problema, reduzca los nodos del clúster para reservar direcciones IP para la actualización.
Si el escalado vertical no es una opción y el CIDR de red virtual tiene suficientes direcciones IP, intente agregar un grupo de nodos que tenga una subred única:
- Agregue un nuevo grupo de nodos de usuario en la red virtual en una subred más grande.
- Cambie el grupo de nodos original a uno de tipo system.
- Escalar verticalmente el grupo de nodos de usuario.
- Escala hacia abajo el grupo de nodos original.