El dispositivo aislado de Google Distributed Cloud (GDC) te permite administrar tus clústeres de Kubernetes después de la creación para que puedas adaptarte a los requisitos cambiantes de tu carga de trabajo de contenedores.
Realiza el mantenimiento del nodo
Cuando necesites reparar o mantener nodos, primero debes ponerlos en modo de mantenimiento. La ubicación de nodos en modo de mantenimiento desvía de forma segura sus Pods o cargas de trabajo y excluye los nodos de la programación de Pods. En el modo de mantenimiento, puedes trabajar en tus nodos sin correr el riesgo de interrumpir el tráfico de los pods.
Cómo funciona
El modo de mantenimiento de GDC es similar a ejecutar kubectl
cordon
y kubectl drain
para un nodo específico. Estos son algunos detalles que son relevantes para el modo de mantenimiento:
- Los nodos especificados se marcan como no programables. Esta es la acción que realiza
kubectl cordon
. - Se agregan taints de nodo a los nodos especificados para indicar que no se puede programar ni ejecutar ningún Pod en los nodos. Esta acción es similar a
kubectl drain
. - Se aplica un tiempo de espera de 20 minutos para garantizar que los nodos no se detengan a la espera de que finalicen los Pods. Es posible que los Pods no finalicen si están configurados para tolerar todos los taints o si tienen finalizadores. Los clústeres de GDC intentan finalizar todos los Pods, pero si se excede el tiempo de espera, el nodo se pone en modo de mantenimiento. Este tiempo de espera evita que los Pods en ejecución bloqueen las actualizaciones.
- Si tienes una carga de trabajo basada en VM que se ejecuta en el nodo, los clústeres de GDC aplican un
NodeSelector
al Pod de instancia de máquina virtual (VMI) y, luego, el Pod se detiene. ElNodeSelector
garantiza que el pod de VMI se reinicie en el mismo nodo cuando el nodo se quita del modo de mantenimiento.
Coloca un nodo en modo de mantenimiento
Elige los nodos que deseas poner en modo de mantenimiento especificando rangos de direcciones IP para los nodos seleccionados en la sección maintenanceBlocks
del archivo de configuración del clúster. Los nodos que elijas deben estar en estado Ready
y funcionar en el clúster.
Para poner los nodos en modo de mantenimiento, realiza lo siguiente:
Edita el archivo de configuración del clúster para seleccionar los nodos que deseas poner en modo de mantenimiento.
Puedes editar el archivo de configuración con el editor que prefieras o puedes editar el recurso personalizado del clúster de forma directa si ejecutas el siguiente comando:
kubectl -n CLUSTER_NAMESPACE edit cluster CLUSTER_NAME
Reemplaza lo siguiente:
- CLUSTER_NAMESPACE: el espacio de nombres del clúster.
- CLUSTER_NAME: el nombre del clúster
Agrega la sección
maintenanceBlocks
al archivo de configuración del clúster a fin de especificar una sola dirección IP o un rango de direcciones para los nodos que deseas poner en modo de mantenimiento.En el siguiente ejemplo, se muestra cómo seleccionar varios nodos mediante la especificación de un rango de direcciones IP:
... metadata: name: my-cluster namespace: cluster-my-cluster spec: maintenanceBlocks: cidrBlocks: - 172.16.128.1-172.16.128.64 ...
Guarda y aplica la configuración actualizada del clúster:
kubectl apply -f my-cluster.yaml
Después de aplicar la configuración del clúster, este coloca los nodos aplicables en modo de mantenimiento.
Ejecuta el siguiente comando para obtener el estado de los nodos del clúster:
kubectl get nodes -n CLUSTER_NAME
La respuesta es similar a la siguiente:
NAME STATUS ROLES AGE VERSION user-gdch-01 Ready master 2d22h v1.23.5-gke.1502 user-gdch-04 Ready none 2d22h v1.23.5-gke.1502 user-gdch-05 Ready,SchedulingDisabled none 2d22h v1.23.5-gke.1502 user-gdch-06 Ready none 2d22h v1.23.5-gke.1502
Un estado de
SchedulingDisabled
indica que un nodo está en modo de mantenimiento.Ejecuta el siguiente comando para obtener la cantidad de nodos en el modo de mantenimiento:
kubectl get nodepools
La respuesta es similar al siguiente resultado:
NAME READY RECONCILING STALLED UNDERMAINTENANCE UNKNOWN np1 3 0 0 1 0
La columna
UNDERMAINTENANCE
en esta muestra que un nodo está en modo de mantenimiento.Los clústeres también agregan los siguientes taints a los nodos cuando se ponen en modo de mantenimiento:
baremetal.cluster.gke.io/maintenance:NoExecute
baremetal.cluster.gke.io/maintenance:NoSchedule
Cambia el tamaño de los grupos de nodos
Se puede cambiar el tamaño del grupo de nodos de cualquier clúster de usuario en el entorno de GDC para que se escale con los cambios en la carga de trabajo. Para administrar grupos de nodos en un clúster de usuario, debes tener el rol de administrador del clúster de usuario (user-cluster-admin
).
Para ajustar la escala de un grupo de nodos en un clúster existente, completa los siguientes pasos:
Console
- En el panel, selecciona el proyecto en el que existe el clúster que deseas editar.
- En el menú de navegación, selecciona Clústeres.
- Selecciona el nombre del clúster con el que está asociado el grupo de nodos. Se muestra la página Detalles del clúster.
- Haz clic en la pestaña Grupos de nodos.
- Selecciona el ícono de edit Editar para el grupo de nodos cuyo tamaño deseas cambiar. Aparecerá el mensaje Editar grupo de nodos.
Actualiza el campo Cantidad de nodos para reflejar la nueva cantidad de nodos requeridos en el grupo de nodos. Puedes aumentar o disminuir la cantidad de nodos para satisfacer los requisitos de tu carga de trabajo.
Haz clic en Guardar.
Vuelve a la pestaña Grupos de nodos de tu clúster y confirma que el grupo de nodos redimensionado tenga el estado
Ready
y la cantidad correcta de nodos. El grupo de nodos puede tardar unos minutos en ajustarse según tus especificaciones.
API
Abre la especificación del recurso personalizado
Cluster
con la CLI dekubectl
usando el editor interactivo:kubectl edit clusters.cluster.gdc.goog/USER_CLUSTER_NAME -n platform \ --kubeconfig ORG_ADMIN_CLUSTER_KUBECONFIG
Actualiza el campo
nodeCount
del grupo de nodos al que se le cambiará el tamaño:nodePools: ... - machineTypeName: n2-standard-2-gdc name: nodepool-1 nodeCount: NUMBER_OF_WORKER_NODES
Reemplaza
NUMBER_OF_WORKER_NODES
por la cantidad actualizada de nodos trabajadores que se aprovisionarán en el grupo de nodos.Guarda el archivo y sal del editor.
Para verificar que se completó el ajuste de escala de nodos, consulta la configuración del grupo de nodos:
kubectl get clusters.cluster.gdc.goog/USER_CLUSTER_NAME -n platform -o json \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG | jq .status.workerNodePoolStatuses
Confirma que el número
readyNodes
refleje la cantidad de nodos que estableciste para el grupo de nodos. El grupo de nodos puede tardar unos minutos en ajustarse según tus especificaciones.
Visualiza todos los clústeres de una organización
Puedes ver todos los clústeres de usuario disponibles en una organización, incluidos sus estados, versiones de Kubernetes y otros detalles.
Console
En el menú de navegación, selecciona Clústeres.
Se muestran todos los clústeres disponibles en la organización con sus estados y otra información:
kubectl
Enumera los clústeres de usuario disponibles en una organización:
kubectl get clusters.cluster.gdc.goog -n platform \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG
El resultado es similar a este:
NAME STATE K8S VERSION user-vm-1 Running 1.25.10-gke.2100 user-test Running 1.26.5-gke.2100
Cómo ver las propiedades que se pueden actualizar
Para cada clúster de usuario, hay un conjunto de propiedades disponibles para cambiar después de su creación. Solo puedes cambiar las propiedades mutables que se encuentran en el spec
del recurso personalizado Cluster
. No todas las propiedades de spec
son aptas para actualizarse después de que se aprovisiona el clúster. Para ver estas propiedades actualizables, completa los siguientes pasos:
Console
En el menú de navegación, selecciona Clústeres.
En la lista de clústeres de usuario, haz clic en el nombre de un clúster para ver sus propiedades.
Las propiedades editables tienen un ícono de edit Editar.
kubectl
Consulta la lista de propiedades de la especificación
Cluster
y los valores válidos correspondientes a cada propiedad:kubectl explain clusters.cluster.gdc.goog.spec \ --kubeconfig ORG_ADMIN_CLUSTER_KUBECONFIG
El resultado es similar a este:
KIND: Cluster VERSION: cluster.gdc.goog/v1 RESOURCE: spec <Object> DESCRIPTION: <empty> FIELDS: clusterNetwork <Object> The cluster network configuration. If unset, the default configurations with pod and service CIDR sizes are used. Optional. Mutable. initialVersion <Object> The GDCH version information of the user cluster during cluster creation. Optional. Default to use the latest applicable version. Immutable. loadBalancer <Object> The load balancer configuration. If unset, the default configuration with the ingress service IP address size is used. Optional. Mutable. nodePools <[]Object> The list of node pools for the cluster worker nodes. Optional. Mutable. releaseChannel <Object> The release channel a cluster is subscribed to. When a cluster is subscribed to a release channel, GDCH maintains the cluster versions for users. Optional. Mutable.
Actualiza estos parámetros de configuración con la consola de GDC o la CLI de
kubectl
. Por ejemplo, puedes cambiar el tamaño de un grupo de nodos.
Ajusta el tamaño de la dirección IP del servicio de entrada
Puedes ajustar el tamaño de la dirección IP de tu servicio de entrada después de crear un clúster de usuario.
Abre la especificación del recurso personalizado de
Cluster
con la CLI dekubectl
usando el editor interactivo:kubectl edit clusters.cluster.gdc.goog/USER_CLUSTER_NAME -n platform \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG
Actualiza el campo
ingressServiceIPSize
al nuevo tamaño de la dirección IP:... spec: ... loadBalancer: ingressServiceIPSize: INGRESS_SERVICE_IP_SIZE ...
Reemplaza
INGRESS_SERVICE_IP_SIZE
por el tamaño de la dirección IP del servicio de entrada actualizado.Guarda el archivo y sal del editor.
No hay un límite establecido para el tamaño de la dirección IP del servicio de entrada. La cantidad de direcciones IP que solicitas se completa según tu organización. Si no se puede satisfacer la solicitud, el clúster informa un error.