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 programar las cargas de trabajo y dimensionar los grupos de nodos de forma adecuada, es fundamental que comprendas la cantidad máxima de volúmenes persistentes que se pueden adjuntar a un nodo de GKE. Si deseas tener un mayor control sobre la programación de cargas de trabajo, en especial cuando usas varios tipos de discos con límites de conexión variables en una sola instancia, puedes usar una etiqueta de nodo para anular los límites de conexión predeterminados.
Este documento está dirigido a los especialistas en almacenamiento que crean y asignan almacenamiento, y a los administradores de GKE que administran la programación de cargas de trabajo y el tamaño de los grupos de nodos. Para obtener más información sobre los roles comunes y las tareas de ejemplo a las que se hace referencia en el contenido de Google Cloud , consulta Tareas y roles comunes de los usuarios 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 servicio de Persistent Disk Google Cloud .
Cuando habilitas el controlador de CSI de Persistent Disk de Compute Engine (PDCSI) en los clústeres de GKE, el controlador de PDCSI calcula y registra el límite de conexión de volúmenes persistentes por nodo en 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 de PDCSI informó límites de conexión inexactos, específicamente un número superior al límite real, no se podrán programar los Pods y quedarán en estado Pending
. Esto puede ocurrir en tipos de máquinas de tercera generación, como C3, que tienen límites de conexión diferentes para Hyperdisks y Persistent Disks.
Información sobre los límites de conexión de volúmenes persistentes
En el caso de 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 la combinación de volúmenes de Persistent Disk y Hyperdisk. 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:
- En el caso de los tipos de máquinas de cuarta generación, como C4, el controlador de 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. El límite de conexión informado suele estar dentro de un rango de 8 a 128 volúmenes persistentes.
- En cambio, para los tipos de máquinas de tercera generación, como C3, el controlador de 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, ya que el límite real puede ser inferior a 128 según el recuento de CPU virtuales.
Puedes anular el límite de adjuntos 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 discos persistentes compatibles, consulta Compatibilidad con series de máquinas.
- Para conocer los límites máximos admitidos de conexión de Hyperdisk según la cantidad de CPU de los 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 el Resumen de los límites de Hyperdisk por VM..
Anula el límite predeterminado de volúmenes persistentes adjuntos
Si tienes requisitos específicos o configuraciones de nodos en los que deseas adjuntar una cantidad específica de volúmenes persistentes a tus nodos, puedes anular el límite predeterminado de volúmenes persistentes adjuntos 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.1698000
y versiones posteriores.1.33.1-gke.1386000
y versiones posteriores.
Grupo de nodos nuevo
Para crear un grupo de nodos nuevo con un límite específico de volúmenes persistentes adjuntos, 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 actual de volúmenes persistentes conectados 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=VALUE
Reinicia el DaemonSet
pdcsi-node
:kubectl rollout restart ds pdcsi-node -n kube-system
El nuevo límite de conexión se aplica después de que los Pods de
pdcsi-node
estén en estadoRunning
.
Reemplaza lo siguiente:
NODE_POOL_NAME
: Es el nombre del grupo de nodos que deseas crear o actualizar.CLUSTER_NAME
: Es el nombre del clúster para el grupo de nodos que deseas crear o actualizar.VALUE
: Es un número entero entre0
y127
para especificar la nueva cantidad de volúmenes persistentes que se pueden adjuntar. Si especificas un valor superior a 127, se ignorará la etiqueta del nodo y el controlador de PDCSI usará el límite predeterminado de volúmenes persistentes adjuntos. 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, comprueba las etiquetas y la capacidad del nodo.
En los siguientes comandos, reemplaza NODE_NAME
por el nombre de un nodo que forme parte del grupo de nodos específico en el que aplicaste la etiqueta de anulación del nodo.
Verifica las etiquetas del nodo:
kubectl get node NODE_NAME --show-labels
El resultado debe incluir la etiqueta
node-restriction.kubernetes.io/gke-volume-attach-limit-override
.Verifica la capacidad del nodo:
kubectl describe node NODE_NAME
El resultado debe incluir la capacidad de
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 Cómo verificar los recursos asignables en un nodo.
¿Qué sigue?
- Obtén más información sobre el almacenamiento de volúmenes persistentes de GKE.
- Obtén información sobre cómo funciona el programador de Kubernetes.