Un grupo de nodos es un grupo de nodos dentro de un clúster que tienen la misma configuración. Todos los nodos de clústeres de Anthos alojados en Bare Metal deben pertenecer a un grupo de nodos. Existen tres tipos de grupos de nodos en los clústeres de Anthos alojados en Bare Metal: el plano de control, el balanceador de cargas y los 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 de administrar 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 de forma automática la API de Anthos On-Prem para administrar el clúster.
El clúster se creó mediante
bmctl
, pero se configuró para que la administrara 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 el clúster de usuario no está administrado por la API de Anthos On-Prem, usa kubectl
en la estación de trabajo de administrador a fin de 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 (híbridos, independientes y de usuario).
Si planeas usar gcloud CLI, haz lo siguiente en una computadora que tenga la CLI de gcloud instalada:
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 su estado 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 en los que puede estar un nodo. Cada fila de la tabla es la cantidad de nodos por grupo de nodos en cada uno de los estados.
Cuando agregas un nodo, inicialmente tiene el estado Reconciling
mientras se aprovisiona el nodo. Después de que el nodo forma parte del clúster, el estado del nodo cambia a Ready
.
También puedes verificar el estado de los nodos en el clúster si ejecutas el siguiente comando:
kubectl get nodes --kubeconfig=PATH_TO_KUBECONFIG
Consola
En la consola, ve a la página de clústeres de Anthos.
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 Más detalles en el panel Detalles.
Haz clic en la pestaña Nodos.
Se mostrará una lista de grupos de nodos.
CLI de gcloud
Enumera los grupos de nodos en el clúster:
gcloud beta 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
: Es 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 beta 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 para 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: si intentas agregar un grupo de nodo trabajador a un clúster de administrador, se produce un error.
Un clúster solo puede contener un grupo de nodos del plano de control y un solo grupo de nodos del balanceador de cargas. No puedes agregar grupos de nodos del plano de control o de balanceo de cargas adicionales a un clúster.
Para agregar grupos de nodos nuevos a un clúster, debes crear un recurso nodepools.baremetal.cluster.gke.io
nuevo en el clúster. En el siguiente ejemplo, se agrega un manifiesto al grupo de nodos nuevo “machine-learning-pool”. 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
Debes tener en cuenta lo siguiente cuando agregues 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 etiquetas que se agregaron directamente a los nodos. El plano de control no quita los taints y 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 el recurso del grupo de nodos 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 Clústeres de Anthos.
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 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 Nodos dirección 1, ingresa la dirección IP de la máquina de nodo trabajador.
Si tienes más de una máquina de nodo trabajador para agregar, 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 un estado actualizado.
CLI de gcloud
gcloud beta 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
: Es 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,...
: Una lista separada por comas de las etiquetas de Kubernetes (pares clave-valor) aplicadas a cada nodo en el grupo.--node-taints=KEY=VALUE:EFFECT,...
Es una lista separada por comas de taints de Kubernetes aplicados a cada nodo en el 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 paraEFFECT
:NoSchedule
,PreferNoSchedule
,NoExecute
.--validate-only
Especifica esta marca si deseas validar la creación, pero no realizar ningún cambio.
Actualizar un grupo de nodos
kubectl
Para actualizar un grupo de nodos, modifica 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 Anthos.
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 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.Cambie la configuración según sea necesario y haga clic en Guardar.
CLI de gcloud
De manera opcional, enumera los grupos de nodos del clúster para obtener el nombre del grupo de nodos que deseas actualizar.
gcloud beta 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
: Es 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 beta 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,...
: Una lista separada por comas de las etiquetas de Kubernetes (pares clave-valor) aplicadas a cada nodo en el grupo.--node-taints=KEY=VALUE:EFFECT,...
Es una lista separada por comas de taints de Kubernetes aplicados a cada nodo en el 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
,NoExecute
.--validate-only
Especifica esta marca si deseas validar la actualización, pero no realizar ningún cambio.
Por ejemplo:
gcloud beta 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 del 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 Clústeres de Anthos.
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 Más detalles en el panel Detalles.
Haz clic en la pestaña Nodos y, luego, en el grupo de nodos que quieres 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.
CLI de gcloud
gcloud beta 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
: Es 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 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 de un clúster.