Un grupo de nodos es un grupo de nodos dentro de un clúster que tiene la misma configuración. Todos los nodos en GKE en Bare Metal deben pertenecer a un grupo de nodos. Existen tres tipos de grupos de nodos en GKE en Bare Metal: plano de control, balanceador de cargas y grupos de nodo trabajador.
En esta página, se describe cómo verificar el estado de los grupos de nodo trabajador y cómo agregar, actualizar y quitar grupos de nodo trabajador.
Elige una herramienta para administrar los grupos de nodos
La forma en la que administras los grupos de nodos depende del tipo de clúster y de los clústeres de usuario, si la API de Anthos On-Prem administra el clúster. La API de Anthos On-Prem administra un clúster de usuario si se cumple una de las siguientes condiciones:
El clúster se creó en la consola de Google Cloud o con Google Cloud CLI (gcloud CLI), que configura automáticamente la API de Anthos On-Prem para administrar el clúster.
El clúster se creó con
bmctl
, pero se configuró para que lo administre la API de Anthos local.
Si la API de Anthos On-Prem administra un clúster de usuario, puedes usar la consola o gcloud CLI para administrar los grupos de nodos. Si la API de Anthos local no administra el clúster de usuario, usa kubectl
en la estación de trabajo de administrador para administrar los grupos de nodos. También puedes usar kubectl
a fin de administrar grupos de nodos para todos los tipos de clústeres que pueden contener grupos de nodo trabajador (clústeres híbridos, independientes y de usuario).
Si planeas usar gcloud CLI, haz lo siguiente en una computadora que tenga instalada la gcloud CLI:
Accede con tu Cuenta de Google.
gcloud auth login
Actualiza los componentes, como se indica a continuación:
gcloud components update
Verifica el estado del nodo
Antes de agregar o quitar grupos de nodos, verifica el estado de los nodos y sus respectivos grupos de nodos.
kubectl
Con kubectl
, puedes obtener el estado de los nodos en un espacio de nombres específico o en todo el clúster. En el siguiente ejemplo, se muestra el estado de los grupos de nodos en el espacio de nombres del clúster cluster-abm-cluster
:
kubectl get nodepools.baremetal.cluster.gke.io -n cluster-abm-cluster
El sistema muestra resultados similares al siguiente:
NAME READY RECONCILING STALLED UNDERMAINTENANCE UNKNOWN
abm-cluster 3 0 0 0 0
default-pool 2 0 0 0 0
backup-pool 3 0 0 0 0
Cada columna de la tabla indica los diferentes estados que puede tener un nodo. Cada fila de la tabla es la cantidad de nodos por grupo de nodos en cada uno de los estados de los nodos.
Cuando agregas un nodo, inicialmente tiene un estado de Reconciling
mientras se aprovisiona. Después de que el nodo sea parte del clúster, su estado cambia a Ready
.
También puedes verificar el estado de los nodos del clúster mediante la ejecución del siguiente comando:
kubectl get nodes --kubeconfig=PATH_TO_KUBECONFIG
Consola
En la consola, ve a la página de clústeres de GKE Enterprise.
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 su nombre y luego haz clic en Más detalles en el panel Detalles.
Haz clic en la pestaña Nodos.
Se muestra una lista de grupos de nodos.
gcloud CLI
Obtén una lista de los grupos de nodos del clúster:
gcloud container bare-metal node-pools list \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION
Reemplaza lo siguiente:
USER_CLUSTER_NAME
: Es el nombre del clúster de usuario que contiene los grupos de nodos.FLEET_HOST_PROJECT_ID
: El ID del proyecto en el que se creó el clúster.LOCATION
: Es la ubicación de Google Cloud asociada con el clúster de usuario.
Describe un grupo de nodos:
gcloud container bare-metal node-pools describe NODE_POOL_NAME \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION
Reemplaza
NODE_POOL_NAME
por el nombre del grupo de nodos.
Si necesitas más información sobre cómo diagnosticar clústeres, consulta Crea instantáneas para diagnosticar clústeres.
Agrega un nuevo grupo de nodos
kubectl
Ten en cuenta las siguientes reglas cuando agregues un grupo de nodos a un clúster:
Un clúster de administrador puede contener un grupo de nodos del balanceador de cargas y un grupo de nodos del plano de control, pero no puede contener un grupo de nodo trabajador: intentar agregar un grupo de nodo trabajador a un clúster de administrador produce un error.
Un clúster puede contener solo un grupo de nodos del plano de control y un solo grupo de nodos del balanceador de cargas. No puedes agregar grupos de nodos de balanceo de cargas o planos de control adicionales a un clúster.
Para agregar grupos de nodos nuevos a un clúster, crea un recurso nodepools.baremetal.cluster.gke.io
nuevo en el clúster. En el siguiente
ejemplo, se agrega un grupo de nodos nuevo llamado “machine-learning-pool” al manifiesto. El grupo de nodos nuevo consta de dos nodos con direcciones IP 10.200.0.7
y 10.200.0.8
:
apiVersion: baremetal.cluster.gke.io/v1
kind: NodePool
metadata:
name: machine-learning-pool
namespace: cluster-abm-cluster
spec:
clusterName: abm-cluster
nodes:
- address: 10.200.0.7
- address: 10.200.0.8
taints:
- key: TAINT_KEY
value: TAINT_VALUE
effect: NoSchedule
labels:
key1: LABEL_1
key2: LABEL_2
Almacena la configuración en un archivo llamado machine-learning-pool.yaml
y aplica la configuración al clúster con el siguiente comando:
kubectl apply -f machine-learning-pool.yaml
Se deben tener en cuenta los siguientes hechos cuando se agrega un grupo de nodos a un clúster:
Las configuraciones
NodePool.spec.taints
yNodePool.spec.labels
se concilian a los nodos. Se quitan todos los taints y las etiquetas que se agregan directamente a los nodos. El plano de control no quita los taints ni las etiquetas que agregas directamente durante el proceso de sincronización. Para omitir este paso de conciliación, puedes anotar el nodo conbaremetal.cluster.gke.io/label-taint-no-sync
.El recurso del grupo de nodos debe crearse en el mismo espacio de nombres que el clúster asociado, y este debe hacer referencia al nombre del clúster en el campo
spec.clusterName
.
Consola
En la consola de Google Cloud, ve a la página de clústeres de GKE Enterprise.
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 su nombre y luego haz clic en Más detalles en el panel Detalles.
Haz clic en
Agregar grupo de nodos.Ingresa un nombre para el grupo de nodos.
En el campo Dirección de nodos 1, ingresa la dirección IP de la máquina de nodos trabajadores.
Si tienes que agregar más de una máquina de nodo trabajador, haz clic en
Agregar dirección.De manera opcional, agrega etiquetas de Kubernetes o taints de Kubernetes.
Haz clic en Crear.
El estado del grupo de nodos se muestra en la pestaña Nodos. Es posible que debas actualizar la página para ver el estado actualizado.
gcloud CLI
gcloud container bare-metal node-pools create NODE_POOL_NAME \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION \ --node-configs-from-file=NODE_POOL_CONFIG
Reemplaza lo siguiente:
NODE_POOL_NAME
: Es el nombre que elijas para el grupo de nodos. El nombre debe cumplir con los siguientes requisitos:- Contener 40 caracteres como máximo.
- Contener solo caracteres alfanuméricos en minúscula o un guiones (
-
). - Comenzar con un carácter alfabético
- Terminar con un carácter alfanumérico
USER_CLUSTER_NAME
: Es el nombre del clúster de usuario.FLEET_HOST_PROJECT_ID
: El ID del proyecto en el que se creó el clúster.LOCATION
: Es la ubicación de Google Cloud que especificaste cuando creaste el clúster.NODE_POOL_CONFIG
: Es la ruta de acceso de un archivo de configuración que describe el grupo de nodos. Por ejemplo:nodeConfigs: - nodeIP: 10.200.0.10 labels: key1: value1 key2: value2 - nodeIP: 10.200.0.11 labels: key3: value3 key4: value4
De manera opcional, puedes especificar lo siguiente:
--node-labels=KEY=VALUE,...
: Es una lista separada por comas de etiquetas de Kubernetes (pares clave-valor) aplicadas a cada nodo del grupo.--node-taints=KEY=VALUE:EFFECT,...
Una lista separada por comas de taints de Kubernetes
se aplica a cada nodo del grupo. Los taints son pares clave-valor asociados con un efecto. Los taints se usan con tolerancias para la programación de Pods. Especifica una de las siguientes opciones para EFFECT
: NoSchedule
, PreferNoSchedule
o NoExecute
.
--validate-only
: Especifica esta marca si deseas validar la actualización, pero no realizar ningún cambio.
Actualizar un grupo de nodos
kubectl
Actualizas un grupo de nodos si modificas el recurso nodepools.baremetal.cluster.gke.io
en el clúster. Puedes actualizar el recurso directamente con kubectl edit
o puedes actualizar el archivo YAML y usar kubectl apply
.
Consola
En la consola, ve a la página de clústeres de GKE Enterprise.
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 su nombre y luego haz clic en Más detalles en el panel Detalles.
Haz clic en la pestaña Nodos.
En la lista, haz clic en el grupo de nodos que deseas actualizar.
En la página Detalles del grupo de nodos, haz clic en
Editar.Cambia la configuración según sea necesario y haz clic en Guardar.
gcloud CLI
De manera opcional, enumera los grupos de nodos en el clúster para obtener el nombre del grupo de nodos que deseas actualizar.
gcloud container bare-metal node-pools list \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION
Reemplaza lo siguiente:
USER_CLUSTER_NAME
: Es el nombre del clúster de usuario que contiene los grupos de nodos.FLEET_HOST_PROJECT_ID
: El ID del proyecto en el que se creó el clúster.LOCATION
: Es la ubicación de Google Cloud asociada con el clúster de usuario.
Ejecuta el siguiente comando:
gcloud container bare-metal node-pools update NODE_POOL_NAME \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION \ --node-configs-from-file=NODE_CONFIG_FILE
Reemplaza lo siguiente:
NODE_POOL_NAME
por el nombre del grupo de nodosNODE_CONFIG_FILE
: Es la ruta de acceso de un archivo de configuración que describe el grupo de nodos. Por ejemplo:
nodeConfigs: - nodeIP: 10.200.0.10 labels: key1: value1 - nodeIP: 10.200.0.11
De manera opcional, puedes especificar lo siguiente:
--node-labels=KEY=VALUE,...
: Es una lista separada por comas de etiquetas de Kubernetes (pares clave-valor) aplicadas a cada nodo del grupo.--node-taints=KEY=VALUE:EFFECT,...
Una lista separada por comas de taints de Kubernetes que se aplica a cada nodo del grupo. Los taints son pares clave-valor asociados con un efecto. Los taints se usan con tolerancias para la programación de Pods. Especifica una de las siguientes opciones para EFFECT:NoSchedule
,PreferNoSchedule
oNoExecute
.--validate-only
: Especifica esta marca si deseas validar la actualización, pero no realizar ningún cambio.
Por ejemplo:
gcloud container bare-metal node-pools create default-pool \ --cluster=user-cluster-1 \ --location=us-west1 \ --node-configs-from-file=node-pool-config.yaml \ --node-taints=key1=val1:NoSchedule,key2=val2:NoExecute
Quita un grupo de nodos
kubectl
Quita los grupos de nodos con kubectl delete
. Por ejemplo, para quitar el grupo de nodos que se agregó en la sección anterior, machine-learning-pool
, usa el siguiente comando:
kubectl delete nodepool machine-learning-pool -n cluster-abm-cluster
Ten en cuenta que los grupos de nodos del plano de control y los grupos de nodos del balanceador de cargas son fundamentales para la función de un clúster y, por lo tanto, no se pueden quitar de un clúster.
Consola
En la consola de Google Cloud, ve a la página de clústeres de GKE Enterprise.
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 su nombre y luego haz clic en Más detalles en el panel Detalles.
Haz clic en la pestaña Nodos y, luego, en el grupo de nodos que deseas borrar.
Haz clic en
Borrar.En el cuadro de diálogo de confirmación, ingresa el nombre del grupo de nodos y haz clic en Confirmar.
gcloud CLI
gcloud container bare-metal node-pools delete NODE_POOL_NAME \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION
Reemplaza lo siguiente:
NODE_POOL_NAME
por el nombre del grupo de nodosUSER_CLUSTER_NAME
: Es el nombre del clúster de usuario que contiene los grupos de nodos.FLEET_HOST_PROJECT_ID
: El ID del proyecto en el que se creó el clúster.LOCATION
: Es la ubicación de Google Cloud asociada con el clúster de usuario.
Si quitas un grupo de nodos trabajadores de un clúster puede provocar interrupciones del Pod. Si se aplica un PodDisruptionBudget (PDB), es posible que se te impida quitar un grupo de nodos. Para obtener más información sobre las políticas de interrupción de Pods, consulta Quita los nodos que bloquea el presupuesto de interrupción de Pods.
¿Qué sigue?
Si los requisitos de la carga de trabajo cambian después de crear los grupos de nodos, puedes actualizar un grupo de nodo trabajador para agregar o quitar nodos. Para agregar o quitar nodos de un grupo de nodos trabajadores, consulta Agrega o quita nodos en un clúster.