Mantenimiento de clústeres

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. El NodeSelector 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:

  1. 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
  2. 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
    ...
    
  3. 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.

  4. 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.

  5. 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

  1. En el panel, selecciona el proyecto en el que existe el clúster que deseas editar.
  2. En el menú de navegación, selecciona Clústeres.
  3. Selecciona el nombre del clúster con el que está asociado el grupo de nodos. Se muestra la página Detalles del clúster.
  4. Haz clic en la pestaña Grupos de nodos.
  5. Selecciona el ícono de Editar para el grupo de nodos cuyo tamaño deseas cambiar. Aparecerá el mensaje Editar grupo de nodos.
  6. 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.

  7. Haz clic en Guardar.

  8. 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.

    Confirma que tu grupo de nodos esté listo con la consola.

API

  1. Abre la especificación del recurso personalizado Cluster con la CLI de kubectl usando el editor interactivo:

    kubectl edit clusters.cluster.gdc.goog/USER_CLUSTER_NAME -n platform \
          --kubeconfig ORG_ADMIN_CLUSTER_KUBECONFIG
    
  2. 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.

  3. Guarda el archivo y sal del editor.

  4. 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:

    Página de detalles del clúster con estados y otra información de cada clúster de usuario de la organizació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

  1. En el menú de navegación, selecciona Clústeres.

  2. En la lista de clústeres de usuario, haz clic en el nombre de un clúster para ver sus propiedades.

  3. Las propiedades editables tienen un ícono de 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.

  1. Abre la especificación del recurso personalizado de Cluster con la CLI de kubectl usando el editor interactivo:

    kubectl edit clusters.cluster.gdc.goog/USER_CLUSTER_NAME -n platform \
        --kubeconfig ADMIN_CLUSTER_KUBECONFIG
    
  2. 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.

  3. 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.