Un clúster es un conjunto de nodos (máquinas físicas o virtuales) que ejecutan agentes de Kubernetes y que administra el plano de control. Kubernetes v1.37 admite clústeres de hasta 5.000 nodos. Más específicamente, Kubernetes está diseñado para admitir configuraciones que cumplan todos los siguientes criterios:
Puedes escalar tu clúster agregando o eliminando nodos. La forma de hacerlo depende de cómo se haya desplegado tu clúster.
Para evitar problemas con las cuotas del proveedor de la nube, al crear un clúster con muchos nodos, considera lo siguiente:
Para un clúster grande, necesitas un plano de control con suficiente capacidad de cómputo y otros recursos.
Normalmente ejecutarías una o dos instancias del plano de control por zona de fallo, escalando primero esas instancias verticalmente y después horizontalmente cuando alcancen el punto de rendimientos decrecientes del escalado vertical.
Debes ejecutar al menos una instancia por zona de fallo para proporcionar tolerancia a fallos. Los nodos de Kubernetes no dirigen automáticamente el tráfico hacia los endpoints del plano de control que están en la misma zona de fallo; sin embargo, tu proveedor de la nube puede tener sus propios mecanismos para hacerlo.
Por ejemplo, usando un balanceador de carga administrado, configuras el balanceador para que envíe el tráfico que se origina en el kubelet y los Pods de la zona de fallo A únicamente a los hosts del plano de control que también están en la zona A. Si un solo host o endpoint del plano de control en la zona de fallo A se desconecta, eso significa que todo el tráfico del plano de control para los nodos de la zona A es ahora enviado entre zonas. Ejecutar varios hosts del plano de control en cada zona hace que este resultado sea menos probable.
Para mejorar el rendimiento de los clústeres grandes, puedes almacenar los objetos Event en una instancia de etcd separada y dedicada.
Al crear un clúster, puedes (usando herramientas personalizadas):
Consulta Operar clústeres de etcd para Kubernetes y Configurar un clúster de etcd de alta disponibilidad con kubeadm para obtener detalles sobre cómo configurar y administrar etcd para un clúster grande.
Los límites de recursos de Kubernetes ayudan a minimizar el impacto de las fugas de memoria y otras situaciones en las que los pods y contenedores pueden afectar a otros componentes. Estos límites de recursos se aplican a los recursos de los addons del mismo modo que a las cargas de trabajo de las aplicaciones.
Por ejemplo, puedes establecer límites de CPU y memoria para un componente de registro:
...
containers:
- name: fluentd-cloud-logging
image: fluent/fluentd-kubernetes-daemonset:v1
resources:
limits:
cpu: 100m
memory: 200Mi
Los límites predeterminados de los addons normalmente se basan en datos recopilados a partir de la experiencia al ejecutar cada addon en clústeres de Kubernetes pequeños o medianos. Al ejecutar addons en clústeres grandes, a menudo consumen más recursos que los límites predeterminados. Si se despliega un clúster grande sin ajustar estos valores, el addon puede morir continuamente porque alcanza repetidamente el límite de memoria. Como alternativa, el addon puede ejecutarse, pero con un rendimiento bajo debido a las restricciones de la fracción de tiempo de CPU.
Para evitar problemas con los recursos de los addons del clúster, al crear un clúster con muchos nodos, considera lo siguiente:
Para garantizar que los componentes esenciales del clúster (como CoreDNS, metrics-server y otros addons críticos) se programen antes que otras cargas de trabajo y no sean desalojados por pods de menor prioridad, ejecútalos con una PriorityClass del sistema, como system-cluster-critical o system-node-critical.
VerticalPodAutoscaler es un recurso personalizado que puedes desplegar en tu clúster
para ayudarte a administrar las solicitudes y los límites de recursos de los pods.
Aprende más sobre Vertical Pod Autoscaler
y cómo puedes usarlo para escalar los componentes del clúster,
incluidos los addons esenciales para el clúster.
Lee sobre el escalado automático de nodos
El addon resizer te ayuda a cambiar automáticamente el tamaño de los addons a medida que cambia la escala de tu clúster.