El dispositivo aislado de Google Distributed Cloud (GDC) te permite gestionar tus clústeres de Kubernetes después de crearlos para que puedas adaptarte a los requisitos cambiantes de tus cargas de trabajo de contenedores.
Realizar el mantenimiento de los nodos
Cuando necesites reparar o mantener nodos, primero ponlos en modo de mantenimiento. Al poner los nodos en modo de mantenimiento, se vacían de forma segura sus pods o cargas de trabajo y se excluyen de la programación de pods. En el modo de mantenimiento, puedes trabajar en tus nodos sin riesgo de interrumpir el tráfico de pods.
Cómo funciona
El modo de mantenimiento de GDC es similar a ejecutar kubectl
cordon
y kubectl drain
en un nodo específico. A continuación, te indicamos algunos detalles relevantes sobre el modo de mantenimiento:
- Los nodos especificados se marcan como no programables. Esta acción es lo que hace
kubectl cordon
. - Las intolerancias de nodos se añaden a nodos específicos para indicar que no se pueden programar ni ejecutar pods en los nodos. Esta acción es similar a
kubectl drain
. - Se aplica un tiempo de espera de 20 minutos para asegurarse de que los nodos no se queden esperando a 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 supera 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 una VM que se ejecuta en el nodo, los clústeres de GDC aplican un
NodeSelector
al pod de la instancia de máquina virtual (VMI) y, a continuación, detienen el pod. ElNodeSelector
asegura que el pod de VMI se reinicie en el mismo nodo cuando se quite el nodo del modo de mantenimiento.
Poner un nodo en modo de mantenimiento
Elige los nodos que quieras poner en modo de mantenimiento especificando los intervalos de direcciones IP de los nodos seleccionados en la sección maintenanceBlocks
del archivo de configuración del clúster. Los nodos que elijas deben tener el estado Ready
y funcionar en el clúster.
Para poner los nodos en modo de mantenimiento, sigue estos pasos:
Edita el archivo de configuración del clúster para seleccionar los nodos que quieras poner en modo de mantenimiento.
Puedes editar el archivo de configuración con el editor que quieras o editar el recurso personalizado del clúster directamente ejecutando el siguiente comando:
kubectl -n CLUSTER_NAMESPACE edit cluster CLUSTER_NAME
Haz los cambios siguientes:
- CLUSTER_NAMESPACE: el espacio de nombres del clúster.
- CLUSTER_NAME: el nombre del clúster.
Añade la sección
maintenanceBlocks
al archivo de configuración del clúster para especificar una sola dirección IP o un intervalo de direcciones para los nodos que quieras poner en modo de mantenimiento.En el siguiente ejemplo se muestra cómo seleccionar varios nodos especificando un intervalo 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
Una vez que se aplica la configuración del clúster, este pone los nodos correspondientes en modo de mantenimiento.
Ejecuta el siguiente comando para obtener el estado de los nodos de tu 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
El estado
SchedulingDisabled
indica que un nodo está en modo de mantenimiento.Ejecuta el siguiente comando para obtener el número de nodos en modo de mantenimiento:
kubectl get nodepools
La respuesta tiene un aspecto similar al siguiente:
NAME READY RECONCILING STALLED UNDERMAINTENANCE UNKNOWN np1 3 0 0 1 0
La columna
UNDERMAINTENANCE
de este ejemplo muestra que un nodo está en modo de mantenimiento.Los clústeres también añaden 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
Cambiar el tamaño de los grupos de nodos
Se puede cambiar el tamaño de cualquier clúster de usuarios del entorno de GDC para que se ajuste a los cambios en la carga de trabajo. Para gestionar grupos de nodos en un clúster de usuarios, debes tener el rol Administrador de clúster de usuarios (user-cluster-admin
).
Para escalar un grupo de nodos en un clúster, sigue estos pasos:
Consola
- En el panel de control, selecciona el proyecto en el que se encuentra el clúster que quieres editar.
- En el menú de navegación, selecciona Clusters.
- Selecciona el nombre del clúster al que está asociado el grupo de nodos. Se mostrará la página Detalles del clúster.
- Haz clic en la pestaña Grupos de nodos.
- Selecciona el icono edit Editar del grupo de nodos cuyo tamaño quieras cambiar. Se muestra la petición Editar grupo de nodos.
Actualice el campo Número de nodos para reflejar la nueva cantidad de nodos que se necesitan en el grupo de nodos. Puedes aumentar o reducir el número de nodos para adaptarlo a 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 tiene el estado
Ready
y el número correcto de nodos. El grupo de nodos puede tardar unos minutos en escalarse a las especificaciones que hayas indicado.
API
Abre la especificación de recursos personalizados
Cluster
con la CLI dekubectl
mediante 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 cuyo tamaño quieras cambiar:nodePools: ... - machineTypeName: n2-standard-2-gdc name: nodepool-1 nodeCount: NUMBER_OF_WORKER_NODES
Sustituye
NUMBER_OF_WORKER_NODES
por el número actualizado de nodos de trabajador que se aprovisionarán en el grupo de nodos.Guarda el archivo y cierra el editor.
Para comprobar que el escalado de nodos se ha completado, 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
refleja la cantidad de nodos que has definido para el grupo de nodos. El grupo de nodos puede tardar unos minutos en escalarse según tus especificaciones.
Ver 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.
Consola
En el menú de navegación, selecciona Clusters.
Se muestran todos los clústeres disponibles de la organización, junto con sus estados y otra información:
kubectl
Lista los clústeres de usuarios disponibles en una organización:
kubectl get clusters.cluster.gdc.goog -n platform \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG
El resultado debería ser similar al siguiente:
NAME STATE K8S VERSION user-vm-1 Running 1.25.10-gke.2100 user-test Running 1.26.5-gke.2100
Ver propiedades actualizables
En cada clúster de usuarios, hay un conjunto de propiedades que se pueden cambiar después de crearlo. Solo puede cambiar las propiedades mutables que se encuentran en el spec
de
el recurso personalizado Cluster
. No todas las propiedades de spec
se pueden actualizar después de aprovisionar el clúster. Para ver estas propiedades actualizables, sigue estos pasos:
Consola
En el menú de navegación, selecciona Clusters.
En la lista de clústeres de usuarios, haga clic en el nombre de un clúster para ver sus propiedades.
Las propiedades editables tienen el icono 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 debería ser similar al siguiente:
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.
Para actualizar estos ajustes, usa la consola de GDC o la
kubectl
CLI. Por ejemplo, puedes cambiar el tamaño de un grupo de nodos.
Escalar el tamaño de la dirección IP del servicio de entrada
Puedes escalar 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 de recursos personalizados
Cluster
con la CLIkubectl
mediante 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 ...
Sustituye
INGRESS_SERVICE_IP_SIZE
por el tamaño de la dirección IP del servicio de entrada actualizada.Guarda el archivo y cierra el editor.
No hay un límite establecido en el tamaño de la dirección IP del servicio de entrada. La cantidad de direcciones IP que solicites se asignará en función de tu organización. Si no se puede completar la solicitud, el clúster informa de un error.