Google Distributed Cloud (GDC) aislado te permite administrar tus clústeres de Kubernetes después de la creación con GKE en GDC. Este servicio te permite adaptarte a los requisitos cambiantes de tu carga de trabajo de contenedores.
Antes de comenzar
Para ver y administrar grupos de nodos en un clúster de Kubernetes, debes tener los siguientes roles:
- Administrador del clúster de usuario (
user-cluster-admin
) - Visualizador de nodos del 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 tener los siguientes recursos:
Ubica el nombre del clúster de Kubernetes o pregúntale al administrador de la plataforma cuál es el nombre del clúster.
Accede y genera el archivo kubeconfig para el clúster de Kubernetes si no tienes uno.
Usa la ruta de acceso de kubeconfig del clúster de Kubernetes para reemplazar
KUBERNETES_CLUSTER_KUBECONFIG
en estas instrucciones.
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 y 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 edit cluster KUBERNETES_CLUSTER_NAME \ -n KUBERNETES_CLUSTER_NAMESPACE \ --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG
Reemplaza lo siguiente para el clúster de Kubernetes:
KUBERNETES_CLUSTER_NAME
: el nombre del clústerKUBERNETES_CLUSTER_NAMESPACE
: el espacio de nombres del clúster.KUBERNETES_CLUSTER_KUBECONFIG
: Es la ruta de acceso del archivo kubeconfig.
Después de aplicar la configuración del clúster, este coloca los nodos aplicables en modo de mantenimiento.
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 ...
Obtén el estado de los nodos en 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
Un estado de
SchedulingDisabled
indica que un nodo está en modo de mantenimiento.Obtén la cantidad de nodos en modo de mantenimiento:
kubectl get nodepools --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG
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 de cualquier grupo de nodos de un clúster de KUBERNETES 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 Kubernetes, debes tener el rol de Administrador de clústeres de usuario (user-cluster-admin
).
Este rol no está vinculado a un espacio de nombres.
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 Kubernetes Engine > 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/KUBERNETES_CLUSTER_NAME -n platform \ --kubeconfig MANAGEMENT_API_SERVER
Reemplaza lo siguiente:
KUBERNETES_CLUSTER_NAME
: Es el nombre del clúster que aloja el grupo de nodos.MANAGEMENT_API_SERVER
: Es la ruta de kubeconfig del servidor de la API zonal en la que se aloja el clúster de Kubernetes. Si aún no generaste un archivo kubeconfig para el servidor de la API en tu zona de destino, consulta Accede para obtener más detalles.
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/KUBERNETES_CLUSTER_NAME -n platform -o json \ --kubeconfig MANAGEMENT_API_SERVER | 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.
Cómo mover clústeres en la jerarquía del proyecto
Los proyectos proporcionan una agrupación lógica de las instancias de servicio. Puedes agregar y quitar clústeres de Kubernetes de la jerarquía del proyecto de GDC para agrupar tus servicios de forma adecuada.
Cómo adjuntar un proyecto a un clúster
Cuando creas un clúster desde la consola de GDC, debes adjuntar al menos un proyecto antes de poder implementar correctamente cargas de trabajo de contenedores en él. Si debes agregar proyectos adicionales a un clúster existente, completa los siguientes pasos:
- En el menú de navegación, selecciona Kubernetes Engine > Clústeres.
- Haz clic en el clúster de la lista para abrir la página Detalles del clúster.
- Selecciona Adjuntar proyecto.
- Selecciona los proyectos disponibles que deseas agregar de la lista de proyectos. Haz clic en Guardar.
Desvincula un proyecto de un clúster
Para separar un proyecto de un clúster de Kubernetes existente, completa los siguientes pasos:
- En el menú de navegación, selecciona Kubernetes Engine > Clústeres.
- Haz clic en el clúster de la lista para abrir la página Detalles del clúster.
Haz clic en delete Desvincular para desvincular el proyecto del clúster.
Visualiza todos los clústeres de una organización
Puedes ver todos los clústeres de Kubernetes disponibles en una organización, incluidos sus estados, versiones de Kubernetes y otros detalles. Dado que los clústeres de Kubernetes son un recurso zonal, solo puedes enumerar los clústeres por zona.
Console
En el menú de navegación, selecciona Kubernetes Engine > 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 Kubernetes disponibles en la zona de una organización:
kubectl get clusters.cluster.gdc.goog -n platform \ --kubeconfig MANAGEMENT_API_SERVER
Reemplaza
MANAGEMENT_API_SERVER
por la ruta de acceso al archivo kubeconfig del servidor de la API zonal. Si aún no generaste un archivo kubeconfig para el servidor de la API en la zona de destino, consulta Accede para obtener más detalles.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 Kubernetes, 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 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 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 MANAGEMENT_API_SERVER
Reemplaza
MANAGEMENT_API_SERVER
por la ruta de acceso al archivo kubeconfig del servidor de la API zonal. Si aún no generaste un archivo kubeconfig para el servidor de la API en la zona de destino, consulta Accede para obtener más detalles.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 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.
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 del servicio de entrada después de crear un clúster de Kubernetes.
Abre la especificación del recurso personalizado de
Cluster
con la CLI dekubectl
usando el editor interactivo:kubectl edit clusters.cluster.gdc.goog/KUBERNETES_CLUSTER_NAME -n platform \ --kubeconfig MANAGEMENT_API_SERVER
Reemplaza lo siguiente:
KUBERNETES_CLUSTER_NAME
: Es el nombre del clúster que proporciona la dirección IP.MANAGEMENT_API_SERVER
: Es la ruta de kubeconfig del servidor de la API zonal en la que se aloja el clúster de Kubernetes. Si aún no generaste un archivo kubeconfig para el servidor de la API en tu zona de destino, consulta Accede para obtener más detalles.
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.
Actualiza un clúster de Kubernetes
Puedes realizar una actualización automática o manual de tu clúster de Kubernetes. Para obtener más instrucciones sobre cómo actualizar tu clúster, consulta la sección Actualización del clúster.