En esta página, se proporciona una descripción general de taints y tolerancias en Google Distributed Cloud. Cuando programas las cargas de trabajo para que se implementen en tu clúster, los taints de nodo te ayudan a controlar en qué nodos se les permite ejecutar.
Descripción general
Cuando envías una carga de trabajo para que se ejecute en un clúster, el programador determina dónde colocar los pods asociados con la carga de trabajo. El programador es libre de colocar un pod en cualquier nodo que satisfaga los requisitos de recursos personalizados, de memoria y de CPU del pod.
Si tu clúster ejecuta una variedad de cargas de trabajo, es posible que desees ejercer cierto control sobre qué cargas de trabajo se pueden ejecutar en un grupo particular de nodos.
Un taint de nodo te permite marcar un nodo a fin de que el programador evite o impida su uso para ciertos pods. Una característica complementaria, las tolerancias, te permite designar pods que se pueden usar en nodos “tainted”.
Los taints y las tolerancias trabajan en conjunto para garantizar que los Pods no estén programados en nodos inapropiados.
Los taints son pares clave-valor asociados con un efecto. En la siguiente tabla, se enumeran los efectos disponibles:
Efecto | Descripción |
---|---|
NoSchedule |
Los pods que no toleran este taint no están programados en el nodo. Los Pods existentes no se expulsan del nodo. |
PreferNoSchedule |
Kubernetes evita la programación de pods que no toleran este taint en el nodo. |
NoExecute |
El Pod se desaloja del nodo si ya está en ejecución en este y no está programado en el nodo si aún no está en ejecución en él. |
Ventajas de configurar los taints de nodo en Google Distributed Cloud
Aunque puedes configurar taints de nodos con el comando kubectl taint
, usar gkectl
o la consola de Google Cloud para configurar un taint de nodo tiene las siguientes ventajas en comparación con kubectl
:
- Los taints se conservan cuando un nodo se reinicia o se reemplaza.
- Los taints se crean automáticamente cuando se agrega a un grupo de nodos.
- Cuando usas
gkectl
para agregar taints, estos se crean de forma automática durante el ajuste de escala automático del clúster. (en este momento, el ajuste de escala automático para grupos de nodos creados en la consola de Google Cloud no está disponible).
Configura taints de nodo
Puedes establecer taints de nodos en un grupo de nodos cuando creas un clúster de usuario o después de crearlo. En esta sección, se muestra cómo agregar taints a los clústeres que ya se crearon, pero el proceso es similar cuando se crean clústeres nuevos.
Puedes agregar un grupo de nodos nuevo y configurar un taint o puedes actualizar un grupo de nodos existente y configurar un taint. Antes de agregar otro grupo de nodos, verifica que haya suficientes direcciones IP disponibles en el clúster.
Si creaste el clúster en la consola de Google Cloud, puedes usarla para agregar o actualizar un grupo de nodos.
Configura taints en un grupo de nodos nuevo
Console
En la consola, ve a la página Descripción general de los clústeres de Google Kubernetes Engine.
Selecciona el proyecto de Google Cloud en el que se encuentra el clúster de usuario.
En la lista de clústeres, haz clic en el nombre del clúster y, luego, en Ver detalles en el panel Detalles.
Haz clic en
Agregar grupo de nodos.Configura el grupo de nodos:
- Ingresa el nombre del grupo de nodos.
- Es la cantidad de vCPUs para cada nodo del grupo (mínimo 4 por trabajador del clúster de usuario).
- Ingresa el tamaño de memoria en mebibytes (MiB) para cada nodo en el grupo (mínimo 8,192 MiB por nodo trabajador del clúster de usuario y debe ser un múltiplo de 4).
- En el campo Réplicas, ingresa la cantidad de nodos en el grupo (mínimo 3).
Selecciona el Tipo de imagen de SO: Ubuntu Containerd o COS.
Ingresa laTamaño de disco de arranque en gibibytes (GiB) (el valor predeterminado es de 40 GiB).
En la sección Metadatos del grupo de nodos (opcional), haz clic en + Agregar taint. Ingresa la Clave, el Valor y el Efecto para el taint. Repite la acción según sea necesario.
De manera opcional, haz clic en + Agregar etiquetas de Kubernetes (+ Add Kubernetes Labels). Ingresa la Clave y el Valor de la etiqueta. Repite la acción según sea necesario.
Haz clic en Crear.
La consola de Google Cloud muestra el Estado del clúster: cambios en progreso. Haz clic en Mostrar detalles para ver la condición de estado del recurso y los mensajes de estado.
Línea de comandos
En el archivo de configuración del clúster de usuario, completa la sección
nodePools
.Debes especificar los siguientes campos:
nodePools.[i].name
nodePools[i].cpus
nodePools.[i].memoryMB
nodePools.[i].replicas
Los siguientes campos son opcionales: Si no incluyes
nodePools[i].bootDiskSizeGB
onodePools[i].osImageType
, se usan los valores predeterminados.Completa la sección
nodePools[i].taints
. Por ejemplo:nodePools: - name: "my-node-pool" taints: - key: "staging" value: "true" effect: "NoSchedule"
De manera opcional, completa las siguientes secciones:
nodePools[i].labels
nodePools[i].bootDiskSizeGB
nodePools[i].osImageType
nodePools[i].vsphere.datastore
nodePools[i].vsphere.tags
Ejecuta el siguiente comando:
gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
Reemplaza lo siguiente:
[ADMIN_CLUSTER_KUBECONFIG]
es la ruta de acceso del archivo kubeconfig del clúster de administrador.[USER_CLUSTER_CONFIG]
por la ruta de acceso del archivo de configuración del clúster de usuario.
Configura taints en un grupo de nodos existente
Console
En la consola, ve a la página Descripción general de los clústeres de Google Kubernetes Engine.
Selecciona el proyecto de Google Cloud en el que se encuentra el clúster de usuario.
En la lista de clústeres, haz clic en el nombre del clúster y, luego, en Ver detalles en el panel Detalles.
Haz clic en la pestaña Nodos.
Haz clic en el nombre del grupo de nodos que deseas modificar.
Haz clic en
Editar junto a la sección Metadatos del grupo de nodos (opcional) y, luego, en + Agregar taint. Ingresa la Clave, el Valor y el Efecto para el taint. Repite la acción según sea necesario.Haz clic en Listo.
Haz clic en
para volver a la página anterior.En la consola de Google Cloud, se muestra el Estado del clúster: cambios en progreso. Haz clic en Mostrar detalles para ver la condición de estado del recurso y los mensajes de estado.
Línea de comandos
En el archivo de configuración del clúster de usuario, ve a la sección
nodePools
del grupo de nodos que deseas actualizar. .Completa
nodePools[i].taints
. Por ejemplo:nodePools: - name: "my-node-pool" taints: - key: "staging" value: "true" effect: "NoSchedule"
Ejecuta el siguiente comando:
gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
Reemplaza lo siguiente:
[ADMIN_CLUSTER_KUBECONFIG]
es la ruta de acceso del archivo kubeconfig del clúster de administrador.[USER_CLUSTER_CONFIG]
por la ruta de acceso del archivo de configuración del clúster de usuario.
Configura Pods para tolerar un taint
Puedes configurar los Pods para tolerar un taint si incluyes el campo tolerations
en la especificación de los Pods. En el siguiente ejemplo, el Pod se puede programar en un nodo que tenga el taint dedicated=experimental:NoSchedule
:
tolerations:
- key: dedicated
operator: Equal
value: experimental
effect: NoSchedule
Para obtener ejemplos adicionales, consulta Taints y tolerancias.