Mantener clústeres

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

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

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

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

  1. En el panel de control, selecciona el proyecto en el que se encuentra el clúster que quieres editar.
  2. En el menú de navegación, selecciona Clusters.
  3. Selecciona el nombre del clúster al que está asociado el grupo de nodos. Se mostrará la página Detalles del clúster.
  4. Haz clic en la pestaña Grupos de nodos.
  5. Selecciona el icono Editar del grupo de nodos cuyo tamaño quieras cambiar. Se muestra la petición Editar grupo de nodos.
  6. 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.

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

    Confirma que tu grupo de nodos está listo mediante la consola.

API

  1. Abre la especificación de recursos personalizados Cluster con la CLI de kubectl mediante 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 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.

  3. Guarda el archivo y cierra el editor.

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

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

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

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

  3. Las propiedades editables tienen el icono 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.

  1. Abre la especificación de recursos personalizados Cluster con la CLI kubectl mediante 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
    ...
    

    Sustituye INGRESS_SERVICE_IP_SIZE por el tamaño de la dirección IP del servicio de entrada actualizada.

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