Google Distributed Cloud (GDC) air-gapped te permite gestionar tus clústeres de Kubernetes después de crearlos con GKE en GDC. Este servicio te permite adaptarte a los requisitos cambiantes de tus cargas de trabajo de contenedores.
Antes de empezar
Para ver y gestionar grupos de nodos en un clúster de Kubernetes, debes tener los siguientes roles:
- Administrador de clústeres de usuario (
user-cluster-admin
) - Lector de nodos de clúster de usuario (
user-cluster-node-viewer
)
Estos roles no están vinculados a un espacio de nombres.
Para ejecutar comandos en un clúster de Kubernetes, asegúrate de que tienes los siguientes recursos:
Busca el nombre del clúster de Kubernetes o pregunta a tu administrador de la plataforma cuál es.
Inicia sesión y genera el archivo kubeconfig del clúster de Kubernetes si no tienes uno.
Usa la ruta kubeconfig del clúster de Kubernetes para sustituir
KUBERNETES_CLUSTER_KUBECONFIG
en estas instrucciones.
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 y cargas de trabajo, y se excluyen los nodos 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 edit cluster KUBERNETES_CLUSTER_NAME \ -n KUBERNETES_CLUSTER_NAMESPACE \ --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG
Sustituye lo siguiente en el clúster de Kubernetes:
KUBERNETES_CLUSTER_NAME
: el nombre del clúster.KUBERNETES_CLUSTER_NAMESPACE
: el espacio de nombres del clúster.KUBERNETES_CLUSTER_KUBECONFIG
: la ruta del archivo kubeconfig.
Una vez que se aplica la configuración del clúster, este pone los nodos correspondientes en modo de mantenimiento.
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 ...
Obtén el estado de los nodos de tu clúster:
kubectl get nodes -n KUBERNETES_CLUSTER_NAME \ --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG
La respuesta es similar a la siguiente:
NAME STATUS ROLES AGE VERSION user-gdc-01 Ready master 2d22h v1.23.5-gke.1502 user-gdc-04 Ready none 2d22h v1.23.5-gke.1502 user-gdc-05 Ready,SchedulingDisabled none 2d22h v1.23.5-gke.1502 user-gdc-06 Ready none 2d22h v1.23.5-gke.1502
El estado
SchedulingDisabled
indica que un nodo está en modo de mantenimiento.Obtener el número de nodos en modo de mantenimiento:
kubectl get nodepools --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG
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 del grupo de nodos de cualquier clúster de KUBERNETES 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 Kubernetes, debes tener el rol Administrador de clúster de usuario (user-cluster-admin
).
Este rol no está vinculado a un espacio de nombres.
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 Kubernetes Engine > Clústeres.
- 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/KUBERNETES_CLUSTER_NAME -n platform \ --kubeconfig MANAGEMENT_API_SERVER
Haz los cambios siguientes:
KUBERNETES_CLUSTER_NAME
: el nombre del clúster que aloja el grupo de nodos.MANAGEMENT_API_SERVER
: ruta kubeconfig del servidor de la API zonal donde se aloja el clúster de Kubernetes. Si aún no has generado un archivo kubeconfig para el servidor de la API en tu zona de destino, consulta la sección Iniciar sesión para obtener más información.
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/KUBERNETES_CLUSTER_NAME -n platform -o json \ --kubeconfig MANAGEMENT_API_SERVER | 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.
Mover clústeres en la jerarquía de proyectos
Los proyectos proporcionan una agrupación lógica de instancias de servicio. Puedes añadir y quitar clústeres de Kubernetes de la jerarquía de proyectos de GDC para agrupar tus servicios de forma adecuada.
Adjuntar un proyecto a un clúster
Cuando creas un clúster desde la consola de GDC, debes adjuntar al menos un proyecto para poder desplegar cargas de trabajo de contenedores en él. Si tienes que añadir más proyectos a un clúster, sigue estos pasos:
- En el menú de navegación, selecciona Kubernetes Engine > Clústeres.
- En la lista de clústeres, haz clic en el que quieras para abrir la página Detalles del clúster.
- Selecciona Adjuntar proyecto.
- Selecciona los proyectos disponibles que quieras añadir de la lista de proyectos. Haz clic en Guardar.
Desvincular un proyecto de un clúster
Para separar un proyecto de un clúster de Kubernetes, sigue estos pasos:
- En el menú de navegación, selecciona Kubernetes Engine > Clústeres.
- En la lista de clústeres, haz clic en el que quieras para abrir la página Detalles del clúster.
Haz clic en delete Desasociar para que el proyecto se desasocie del clúster.
Ver todos los clústeres de una organización
Puede ver todos los clústeres de Kubernetes disponibles en una organización, incluidos sus estados, versiones de Kubernetes y otros detalles. Como los clústeres de Kubernetes son un recurso zonal, solo puedes enumerar los clústeres por zona.
Consola
En el menú de navegación, selecciona Kubernetes Engine > Clústeres.
Se muestran todos los clústeres disponibles de la organización, junto con sus estados y otra información:
kubectl
Lista de los clústeres de Kubernetes disponibles en una zona de una organización:
kubectl get clusters.cluster.gdc.goog -n platform \ --kubeconfig MANAGEMENT_API_SERVER
Sustituye
MANAGEMENT_API_SERVER
por la ruta de kubeconfig del servidor de la API zonal. Si aún no has generado un archivo kubeconfig para el servidor de la API en tu zona de destino, consulta Iniciar sesión para obtener más información.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 Kubernetes, 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 Kubernetes Engine > Clústeres.
En la lista de clústeres de Kubernetes, haz 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 MANAGEMENT_API_SERVER
Sustituye
MANAGEMENT_API_SERVER
por la ruta de kubeconfig del servidor de la API zonal. Si aún no has generado un archivo kubeconfig para el servidor de la API en tu zona de destino, consulta Iniciar sesión para obtener más información.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 GDC air-gapped 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, GDC 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 Kubernetes.
Abre la especificación de recursos personalizados
Cluster
con la CLIkubectl
mediante el editor interactivo:kubectl edit clusters.cluster.gdc.goog/KUBERNETES_CLUSTER_NAME -n platform \ --kubeconfig MANAGEMENT_API_SERVER
Haz los cambios siguientes:
KUBERNETES_CLUSTER_NAME
: nombre del clúster que proporciona la dirección IP.MANAGEMENT_API_SERVER
: ruta kubeconfig del servidor de la API zonal donde se aloja el clúster de Kubernetes. Si aún no has generado un archivo kubeconfig para el servidor de la API en tu zona de destino, consulta la sección Iniciar sesión para obtener más información.
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.
Actualizar un clúster de Kubernetes
Puedes actualizar tu clúster de Kubernetes de forma automática o manual. Para obtener más instrucciones sobre cómo actualizar tu clúster, consulta la sección Actualización de clústeres.