En este documento, se explica cómo funcionan los límites de conexión de volúmenes persistentes para los discos persistentes y los hiperdiscos de Compute Engine en los nodos de Google Kubernetes Engine (GKE). Para la programación adecuada de las cargas de trabajo y el ajuste de tamaño del grupo de nodos, es fundamental que comprendas la cantidad máxima de volúmenes persistentes que se pueden conectar a un nodo de GKE. Si deseas tener un mayor control sobre la programación de las cargas de trabajo, en especial cuando usas varios tipos de discos con diferentes límites de conexión en una sola instancia, puedes usar una etiqueta de nodo para anular los límites de conexión predeterminados.
Este documento está destinado a especialistas en almacenamiento que crean y asignan almacenamiento, y a administradores de GKE que administran la programación de cargas de trabajo y el ajuste de tamaño del grupo de nodos. Para obtener más información sobre los roles comunes y las tareas de ejemplo a las que se hace referencia en Cloud de Confiance by S3NS el contenido, consulta Roles de usuario y tareas comunes de GKE Enterprise.
Descripción general
En GKE, cuando solicitas un PersistentVolume (PV) con el controlador CSI de Persistent Disk de Compute Engine (pd.csi.storage.gke.io), se aprovisiona un volumen de almacenamiento en bloque desde el Cloud de Confiance servicio de Persistent Disk.
Cuando habilitas el controlador CSI de Persistent Disk de Compute Engine (PDCSI) en clústeres de GKE, el controlador PDCSI calcula y comunica el límite de conexión de volúmenes persistentes por nodo al kubelet. Según esta información, el programador de Kubernetes toma decisiones de programación para garantizar que no programe demasiados Pods que requieran volúmenes persistentes en un nodo que haya alcanzado su capacidad de conexión. Si el controlador PDCSI informó límites de conexión inexactos, más específicamente, un número superior al límite real, no se programarán los Pods y se quedarán en estado Pending. Esto puede suceder en tipos de máquinas de tercera generación, como C3, que tienen diferentes límites de conexión para hiperdiscos y discos persistentes.
Comprende los límites de conexión de volúmenes persistentes
Para las generaciones de máquinas anteriores a la cuarta, el controlador PDCSI de Compute Engine establece un límite de conexión de volúmenes persistentes agregado de 128 discos (127 discos de datos más un disco de arranque) en todos los tipos de máquinas. El límite de conexión se aplica a los volúmenes de Persistent Disk y Hyperdisk combinados. En el caso de Hyperdisk, el límite de conexión está determinado por el tipo de máquina subyacente de Compute Engine, la cantidad de CPU virtuales que tiene la máquina y el tipo específico de Hyperdisk.
Por ejemplo:
- Para los tipos de máquina de cuarta generación, como C4, el controlador PDCSI informa con precisión un límite de conexión predeterminado a Kubernetes que se calcula en función del recuento de CPU virtuales del nodo. Por lo general, el límite de conexión informado se encuentra dentro de un rango de 8 a 128 volúmenes persistentes.
- Por el contrario, para los tipos de máquinas de tercera generación, como C3, el controlador PDCSI informa un límite de conexión predeterminado a Kubernetes como el límite fijo de 128 discos, lo que puede provocar una falla en la programación de Pods porque el límite real puede ser inferior a 128 según el recuento de CPU virtuales.
Puedes anular el límite de conexión predeterminado con una etiqueta de nodo.
Consulta los siguientes recursos útiles en la documentación de Compute Engine:
- Para conocer las generaciones disponibles de máquinas de Compute Engine, consulta la tabla en la sección Terminología de Compute Engine.
- Para obtener la lista de tipos de máquinas y sus tipos de Persistent Disk compatibles, consulta Compatibilidad con series de máquinas.
- Para conocer los límites máximos de conexión de Hyperdisk admitidos en función de diferentes recuentos de CPU de diferentes tipos de Hyperdisk, consulta Cantidad máxima de volúmenes de Hyperdisk por VM.
- Para comprender cómo se aplican los límites de conexión de Hyperdisk a un nodo, consulta Resumen de los límites de Hyperdisk por VM..
Anula el límite de conexión de volúmenes persistentes predeterminado
Si tienes requisitos o configuraciones de nodos específicos en los que deseas conectar una cantidad específica de volúmenes persistentes a tus nodos, puedes anular el límite de conexión de volúmenes persistentes predeterminado para un grupo de nodos con la siguiente etiqueta de nodo: node-restriction.kubernetes.io/gke-volume-attach-limit-override: VALUE.
Puedes usar esta etiqueta de nodo en las siguientes versiones de GKE:
1.32.4-gke.1698000y versiones posteriores1.33.1-gke.1386000y versiones posteriores
Grupo de nodos nuevo
Para crear un grupo de nodos nuevo con un límite de conexión de volúmenes persistentes específico, ejecuta el siguiente comando:
gcloud container node-pools create NODE_POOL_NAME \
--cluster=CLUSTER_NAME \
--node-labels=node-restriction.kubernetes.io/gke-volume-attach-limit-override=VALUE
Grupo de nodos existente
Para modificar el límite de conexión de volúmenes persistentes actual de un grupo de nodos existente, sigue estos pasos:
Actualiza el límite de conexión en el grupo de nodos:
gcloud container node-pools update NODE_POOL_NAME \ --cluster=CLUSTER_NAME \ --node-labels=node-restriction.kubernetes.io/gke-volume-attach-limit-override=VALUEReinicia el DaemonSet
pdcsi-node:kubectl rollout restart ds pdcsi-node -n kube-systemEl nuevo límite de conexión se aplica después de que los Pods
pdcsi-nodeestén en estadoRunning.
Reemplaza lo siguiente:
NODE_POOL_NAME: Es el nombre del grupo de nodos que quieres crear o actualizar.CLUSTER_NAME: Es el nombre del clúster para el grupo de nodos que quieres crear o actualizar.VALUE: Es un número entero entre0y127para especificar la nueva cantidad de volúmenes persistentes que se pueden conectar. Si especificas un valor superior a 127, se ignora la etiqueta de nodo y el controlador PDCSI usa el límite de conexión de volúmenes persistentes predeterminado. El límite predeterminado es 128 para las máquinas de tercera generación y un valor basado en el recuento de CPU virtuales para las máquinas de cuarta generación.
Verifica la anulación
Para verificar si la anulación se aplicó correctamente, revisa las etiquetas y la capacidad del nodo.
En los siguientes comandos, reemplaza NODE_NAME por el nombre de un nodo que forma parte del grupo de nodos específico en el que aplicaste la etiqueta de nodo de anulación.
Verifica las etiquetas del nodo:
kubectl get node NODE_NAME --show-labelsEl resultado debe incluir la etiqueta
node-restriction.kubernetes.io/gke-volume-attach-limit-override.Verifica la capacidad del nodo:
kubectl describe node NODE_NAMEEl resultado debe incluir la capacidad
attachable-volumes-gce-pd, que debe coincidir con el valor de anulación que estableciste para el grupo de nodos. Para obtener más información, consulta Verifica los recursos asignables en un nodo.
¿Qué sigue?
- Obtén información sobre el almacenamiento de volúmenes persistentes de GKE.
- Obtén información sobre cómo funciona el programador de Kubernetes.