Problemas comunes al ejecutar o escalar clústeres de AKS de gran tamaño
En este artículo se responden las preguntas más frecuentes sobre los problemas comunes que pueden producirse al ejecutar o escalar clústeres grandes en Microsoft Azure Kubernetes Service (AKS). Un clúster grande es cualquier clúster que se ejecute a más de 500 nodos.
Obtengo un error de "cuota superada" durante la creación, el escalado vertical o la actualización
Para resolver este problema, cree una solicitud de soporte técnico en la suscripción en la que intenta crear, escalar o actualizar y solicitar una cuota para el tipo de recurso correspondiente. Para obtener más información, vea Cuotas de proceso regionales.
Obtengo un error "insufficientSubnetSize" al implementar un clúster de AKS que usa redes avanzadas.
Este error indica que una subred que está en uso para un clúster ya no tiene direcciones IP disponibles en su CIDR para la asignación de recursos correcta. Este problema puede producirse durante las actualizaciones, el escalado horizontal o la creación del grupo de nodos. Este problema se produce porque el número de direcciones IP libres de la subred es menor que el resultado de la fórmula siguiente:
número de nodos solicitados * valor del grupo de
--max-pod
nodos
Requisitos previos
Para escalar más allá de 400 nodos, debe usar el complemento de red CNI de Azure.
Para ayudar a planear la red virtual y las subredes para dar cabida al número de nodos y pods que va a implementar, consulte planeación de direcciones IP para el clúster. Para reducir la sobrecarga del planeamiento de subredes o la recreación del clúster que haría debido al agotamiento de IP, consulte Asignación de IP dinámica.
Solución
Dado que no puede actualizar el intervalo CIDR de una subred existente, debe tener permiso para crear una nueva subred para resolver este problema. Siga estos pasos:
Recompile una nueva subred que tenga un intervalo CIDR más grande que sea suficiente para los objetivos de la operación.
Create una nueva subred que tiene un nuevo intervalo no superpuesto.
Create un nuevo grupo de nodos en la nueva subred.
Purgar pods del grupo de nodos antiguo que reside en la subred antigua que se reemplazará.
Elimine la subred antigua y el grupo de nodos antiguo.
Tengo errores de conectividad de salida esporádicos debido al agotamiento del puerto SNAT
Para los clústeres que se ejecutan a una escala relativamente grande (más de 500 nodos), se recomienda usar la puerta de enlace de traducción de direcciones de red administrada (NAT) de AKS para una mayor escalabilidad. Azure NAT Gateway permite hasta 64 512 flujos de tráfico UDP y TCP salientes por dirección IP y un máximo de 16 direcciones IP.
Si no usa NAT administrada, consulte Solución de problemas de agotamiento de la traducción de direcciones de red de origen (SNAT) y tiempos de espera de conexión para comprender y resolver problemas de agotamiento del puerto SNAT.
No puedo escalar verticalmente hasta 5000 nodos mediante el Azure Portal
Siga estos pasos para usar la CLI de Azure para escalar verticalmente hasta un máximo de 5 000 nodos:
Create un número mínimo de grupos de nodos en el clúster (porque el límite máximo de nodos del grupo de nodos es 1000) mediante la ejecución del siguiente comando:
az aks nodepool add --resource-group MyResourceGroup --name nodepool1 --cluster-name MyManagedCluster
Escale verticalmente los grupos de nodos de uno en uno. Idealmente, establezca cinco minutos de tiempo de suspensión entre escalados consecutivos de 1000. Ejecute el siguiente comando:
az aks nodepool scale --resource-group MyResourceGroup --name nodepool1 --cluster-name MyManagedCluster
Mi actualización se está ejecutando, pero es lenta.
En su configuración predeterminada, AKS aumenta durante una actualización realizando las siguientes acciones:
- Crear un nodo nuevo.
- Escalado del grupo de nodos más allá del número deseado de nodos por un nodo.
Para la configuración de sobrecarga máxima, un valor predeterminado de un nodo significa que AKS crea un nuevo nodo antes de purgar las aplicaciones existentes y reemplazar un nodo con versiones anteriores. Este nodo adicional permite que AKS minimice la interrupción de la carga de trabajo.
Al actualizar clústeres que tienen muchos nodos, puede tardar varias horas en actualizar todo el clúster si usa el valor predeterminado de max-surge
. Puede personalizar la max-surge
propiedad por grupo de nodos para habilitar un equilibrio entre la velocidad de actualización y la interrupción de la actualización. Al aumentar el valor máximo de sobrecarga, permite que el proceso de actualización finalice antes. Sin embargo, un valor grande para el pico máximo también puede provocar interrupciones durante el proceso de actualización.
Ejecute el siguiente comando para aumentar o personalizar el pico máximo de un grupo de nodos existente:
az aks nodepool update --resource-group MyResourceGroup --name mynodepool --cluster-name MyManagedCluster --max-surge 5
Mi actualización está alcanzando el límite de cuota (5000 clústeres)
Para resolver este problema, consulte Aumento de las cuotas de vCPU regionales.
La creación de un servicio interno en más de 750 nodos es lenta o produce errores debido a un error de tiempo de espera.
Standard Load Balancer (SLB) las actualizaciones del grupo de back-end son un cuello de botella de rendimiento conocido. Estamos trabajando en una nueva funcionalidad que permitirá la creación más rápida de servicios y SLB a escala. Para enviarnos sus comentarios sobre este problema, consulte Compatibilidad de Azure Kubernetes con el equilibrador de carga con un grupo de back-end basado en IP.
Solución
Se recomienda reducir verticalmente el clúster a menos de 750 nodos y, a continuación, crear un equilibrador de carga interno para el clúster. Para crear un equilibrador de carga interno, cree un tipo de servicio y azure-load-balancer-internal
una LoadBalancer
anotación, según el procedimiento de ejemplo siguiente.
Paso 1: Create un equilibrador de carga interno
Para crear un equilibrador de carga interno, cree un manifiesto de servicio denominado internal-lb.yaml y que contenga el LoadBalancer
tipo de servicio y la azure-load-balancer-internal
anotación, como se muestra en el ejemplo siguiente:
apiVersion: v1
kind: Service
metadata:
name: internal-app
annotations:
service.beta.kubernetes.io/azure-load-balancer-internal: "true"
spec:
type: LoadBalancer
ports:
- port: 80
selector:
app: internal-app
Paso 2: Implementación del equilibrador de carga interno
Implemente el equilibrador de carga interno mediante el kubectl apply
comando y especifique el nombre del manifiesto YAML, como se muestra en el ejemplo siguiente:
kubectl apply -f internal-lb.yaml
Una vez creado el clúster, también puede aprovisionar un equilibrador de carga interno (según este procedimiento) y mantener un servicio interno con equilibrio de carga en ejecución. Esto le permite agregar más servicios al equilibrador de carga a escala.
La creación del servicio SLB a escala tarda horas en ejecutarse
Las actualizaciones del grupo de back-end de SLB son un cuello de botella de rendimiento conocido. Estamos trabajando en una nueva funcionalidad que le permitirá ejecutar servicios de carga equilibrada a escala con un rendimiento considerablemente más rápido para las operaciones de creación, actualización y eliminación. Para enviarnos sus comentarios, consulte Compatibilidad de Azure Kubernetes con el equilibrador de carga con un grupo de back-end basado en IP.
Aviso de declinación de responsabilidades sobre la información de terceros
Los productos de otros fabricantes que se mencionan en este artículo han sido creados por compañías independientes de Microsoft. Microsoft no ofrece ninguna garantía, ya sea implícita o de otro tipo, sobre la confiabilidad o el rendimiento de dichos productos.
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.
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de