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 scheduler determina dónde colocar los Pods asociados con la carga de trabajo. El programador puede colocar un Pod en cualquier nodo que cumpla con los requisitos de CPU, memoria y recursos personalizados 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 taints de nodo en Google Distributed Cloud
Aunque puedes configurar taints de nodo con el comando kubectl taint
, el uso de 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 un nodo 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 los grupos de nodos creados en la consola de Google Cloud no está disponible).
Configurar taints de nodo
Puedes configurar taints de nodos en un grupo de nodos cuando creas un clúster de usuario o después de que se crea el clúster. 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 establecer un taint o puedes actualizar un grupo de nodos existente y establecer 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 usar la consola de Google Cloud para agregar o actualizar un grupo de nodos.
Configurar taints en un nuevo grupo de nodos
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. 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.
Configurar 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 haz clic 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 el
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.