En esta página, se explican las cuotas y los límites de la versión 1.29 de Google Distributed Cloud para los proyectos, clústeres y nodos de Google Cloud.
Límites
En las siguientes secciones, se describen algunos límites básicos para tus clústeres. Ten en cuenta estos límites cuando diseñes tus aplicaciones para que se ejecuten en Google Distributed Cloud.
Cantidad máxima de clústeres de usuario por clúster de administrador
Los clústeres de administrador administran el ciclo de vida de los clústeres de usuario y sus nodos asociados. Los clústeres de administrador controlan las operaciones fundamentales de los clústeres de usuario, como la creación de clústeres, los restablecimientos de clústeres o nodos, y las actualizaciones y actualizaciones de clústeres. La cantidad total de nodos del clúster de usuario es uno de los factores principales que limitan el rendimiento y la confiabilidad.
En función de las pruebas en curso, un clúster de administrador puede admitir de manera confiable un máximo de 100 clústeres de usuario con 10 nodos cada uno, es decir, un total de 1,000 nodos.
Cantidad máxima de Pods por clúster de usuario
Te recomendamos que limites la cantidad de Pods por clúster de usuario a 15,000 o menos. Por ejemplo, si tu clúster tiene 200 nodos, debes restringir la cantidad de Pods por nodo a 75 o menos. Del mismo modo, si deseas ejecutar 110 pods por nodo, debes restringir la cantidad de nodos en tu clúster a 136 o menos. En la siguiente tabla, se proporcionan ejemplos de configuraciones que se recomiendan y no se recomiendan.
Pods por nodo | Nodes per cluster | Pods por clúster | Resultado |
---|---|---|---|
110 | 200 | 22,000 | Demasiados Pods, no se recomienda |
110 | 136 | 14,960 | Dentro del límite |
100 | 150 | 15,000 | Dentro del límite |
75 | 200 | 15,000 | Dentro del límite |
La cantidad máxima de Pods por recomendación de clúster de usuario tiene prioridad sobre las recomendaciones de Pods por nodo y nodos por clúster de usuario en las siguientes secciones.
Cantidad máxima de nodos por clúster de usuario
Probamos Google Distributed Cloud para ejecutar cargas de trabajo con hasta 500 nodos. Sin embargo, para garantizar un rendimiento y una confiabilidad óptimos, te recomendamos que no excedas los 200 nodos por clúster cuando ejecutes cargas de trabajo en producción.
Tipo de clúster | Cantidad mínima de nodos | Cantidad máxima de nodos recomendada | Nodos máximos absolutos |
---|---|---|---|
Usuario, independiente o híbrido | 1 | 200 | 500 |
Para los clústeres de nodo único, debes quitar el taint node-role.kubernetes.io/master:NoSchedule
a fin de ejecutar cargas de trabajo en el nodo.
Para obtener más información, consulta Taints y tolerancias de Kubernetes.
Cantidad máxima de Pods por nodo
Google Distributed Cloud admite la configuración de un máximo de Pods por nodo en la configuración nodeConfig.PodDensity.MaxPodsPerNode
del archivo de configuración del clúster. En la siguiente tabla, se muestran los valores mínimos y máximos admitidos para MaxPodsPerNode
, que incluyen Pods que ejecutan servicios de complementos:
Tipo de clúster | Valor mínimo permitido | Valor máximo recomendado | Valor máximo permitido |
---|---|---|---|
Todos los clústeres de HA y clústeres de usuario que no son de HA | 32 | 110 | 250 |
Todos los demás clústeres que no son de HA | 64 | 110 | 250 |
Cantidad máxima de extremos
En Red Hat Enterprise Linux (RHEL), hay una limitación de nivel de clúster de 100,000 extremos. Este número es la suma de todos los pods a los que hace referencia un servicio de Kubernetes. Si dos servicios hacen referencia al mismo conjunto de pods, esta situación cuenta como dos conjuntos separados de extremos. La implementación subyacente de nftable
en RHEL genera esta limitación. No es una limitación intrínseca de Google Distributed Cloud.
Mitigación
En el caso de RHEL, no hay mitigaciones. Para los sistemas Ubuntu y Debian, recomendamos cambiar del nftables
predeterminado al iptables
heredado en clústeres a gran escala.
GKE Dataplane V2
Google Distributed Cloud usa GKE Dataplane V2, un plano de datos de clúster implementado con Cilium y eBPF, que está optimizado para las herramientas de redes de Kubernetes.
Límites de NetworkPolicy
de GKE Dataplane V2
GKE Dataplane V2 usa Cilium para administrar los recursos NetworkPolicy
de Kubernetes. Se aplican los siguientes límites a los clústeres de GKE en Bare Metal:
Dimensión | Límites admitidos |
---|---|
Tasa de cambio máxima para las etiquetas de espacio de nombres | Como máximo, un cambio por hora para cada espacio de nombres.
En la mayoría de los casos, este límite no es necesario. Siempre que los cambios no sean frecuentes, como cada segundo, o la cantidad de identidades de Cilio (conjuntos de etiquetas únicos) no esté cerca del límite: 16,000 conjuntos de etiquetas con políticas de red Permitir todas o 65,535 conjuntos de etiquetas por clúster. |
Cantidad máxima de extremos de servicio por clúster | 100 000 endpoints es el límite probado y recomendado. El límite codificado para los extremos del servicio es de 262,000. |
Cantidad máxima de políticas y reglas de red | Como máximo, 40,000 políticas de red y 80,000 reglas Por ejemplo, puedes especificar 40,000 políticas de red con dos reglas cada una o 20,000 políticas con cuatro reglas cada una. |
Tasa de cambio máxima para las políticas de red | Como máximo, 20 cambios (creaciones o eliminaciones) por segundo. |
Cantidad máxima de conjuntos únicos de etiquetas de Pods | 65,535 (216-1). Este es el límite de identidad de seguridad de Cilium. |
Cantidad máxima de conjuntos únicos de etiquetas de Pods seleccionados por los selectores de políticas | 16,000 (tamaño fijo del mapa de eBPF). Una entrada de mapa del selector de políticas determinada consta de lo siguiente: identidad de seguridad, puerto y protocolo. |
Límite de eBPF de GKE Dataplane V2
La cantidad máxima de entradas en el lbmap de BPF para Dataplane V2 es de 65,536. Los aumentos en las siguientes áreas pueden hacer que la cantidad total de entradas crezca:
- Cantidad de Services
- Cantidad de puertos por Service
- Cantidad de backends por Service
Recomendamos que supervises la cantidad real de entradas que usa tu clúster para asegurarte de no exceder el límite. Usa el siguiente comando para obtener las entradas actuales:
kubectl get po -n kube-system -l k8s-app=cilium | cut -d " " -f1 | grep anetd | head -n1 | \
xargs -I % kubectl -n kube-system exec % -- cilium bpf lb list | wc -l
También te recomendamos usar tu propia canalización de supervisión para recopilar métricas del DaemonSet de anetd
. Supervisa las siguientes condiciones para identificar cuándo la cantidad de entradas genera problemas:
cilium_bpf_map_ops_total{map_name="lb4_services_v2",operation="update",outcome="fail" } > 0
cilium_bpf_map_ops_total{map_name="lb4_backends_v2",operation="update",outcome="fail" } > 0
Límite de puertos de Services LoadBalancer y NodePort
El límite de puertos para los servicios de LoadBalancer
y NodePort
es de 2,768. El rango de puertos predeterminado es de 30000
a 32767
. Si superas el límite, no podrás crear nuevos servicios LoadBalancer
o NodePort
ni agregar puertos de nodos nuevos para los servicios existentes.
De forma predeterminada, Kubernetes asigna puertos de nodo a Services de tipo LoadBalancer
.
Estas asignaciones pueden agotar con rapidez los puertos de nodo disponibles de los 2,768 asignados a tu clúster. Para guardar puertos de nodos, inhabilita la asignación de puertos de nodos del balanceador de cargas configurando el campo allocateLoadBalancerNodePorts
como false
en las especificaciones del servicio LoadBalancer. Esta configuración evita que Kubernetes asigne puertos de nodos a servicios de LoadBalancer
. Para obtener más información, consulta Inhabilita la asignación de NodePort del balanceador de cargas en la documentación de Kubernetes.
Usa el siguiente comando para verificar la cantidad de puertos asignados:
kubectl get svc -A | grep : | tr -s ' ' | cut -d ' ' -f6 | tr ',' '\n' | wc -l
Límites de conexiones de nodos del balanceador de cargas en paquetes
La cantidad de conexiones permitidas para cada nodo que se usa en el balanceo de cargas en paquetes (MetalLB) es de 28,000. El rango de puertos efímeros predeterminado para estas conexiones es 32768-60999. Si excedes el límite de conexión, pueden fallar las solicitudes al Service LoadBalancer.
Si necesitas exponer un servicio de balanceador de cargas que pueda controlar una cantidad sustancial de conexiones (por ejemplo, para Ingress), te recomendamos que consideres un método de balanceo de cargas alternativo a fin de evitar esta limitación con MetalLB.
Cuotas de clústeres
De forma predeterminada, puedes registrar un máximo de 15 clústeres. Si quieres registrar más clústeres en GKE Hub, puedes enviar una solicitud para aumentar la cuota en la consola de Google Cloud:
Información de escalamiento
La información de este documento es relevante para planificar cómo escalar verticalmente los clústeres. Para obtener más información, consulta Escala verticalmente los clústeres de Google Distributed Cloud.
¿No encontraste lo que buscabas? Haz clic en Enviar comentarios y cuéntanos qué falta.