Crear clústeres de usuarios

En Google Distributed Cloud, los clústeres de usuario ejecutan tus cargas de trabajo y, en una arquitectura de varios clústeres, los clústeres de usuario se crean y gestionan mediante un clúster de administrador.

Una vez que hayas creado un clúster de administrador, al llamar al comando bmctl create config, se creará un archivo YAML que podrás editar para definir tu clúster de usuario. Para aplicar la configuración y crear el clúster de usuarios, usa el comando bmctl create cluster. Las comprobaciones previas se aplican a los clústeres de usuarios creados con el comando bmctl create cluster.

Mantener las cargas de trabajo fuera del clúster de administrador protege los datos administrativos sensibles, como las claves SSH almacenadas en el clúster de administrador, de los usuarios que no necesitan acceder a esa información. Además, mantener los clústeres de usuarios separados entre sí proporciona una buena seguridad general para tus cargas de trabajo.

Requisitos previos

  • Se descarga la versión más reciente de bmctl (gs://anthos-baremetal-release/bmctl/1.33.100-gke.89/linux-amd64/bmctl) de Cloud Storage.
  • Un clúster de administración operativo con acceso al servidor de la API del clúster (el controlPlaneVIP).
  • Los nodos del clúster de administrador tienen conectividad de red con todos los nodos del clúster de usuario de destino.
  • La estación de trabajo que ejecuta bmctl tiene conectividad de red con todos los nodos de los clústeres de usuario de destino.
  • La estación de trabajo del administrador puede establecer una conexión SSH con cada uno de los nodos del clúster de usuarios.
  • La cuenta de servicio de Connect-register está configurada en el clúster de administrador para usarla con Connect.

Habilitar SELinux

Si quieres habilitar SELinux para proteger tus contenedores, debes asegurarte de que SELinux esté habilitado en modo Enforced en todas tus máquinas host. A partir de la versión 1.9.0 de Google Distributed Cloud, puedes habilitar o inhabilitar SELinux antes o después de crear o actualizar un clúster. SELinux está habilitado de forma predeterminada en Red Hat Enterprise Linux (RHEL). Si SELinux está inhabilitado en tus máquinas host o no lo tienes claro, consulta el artículo Protege tus contenedores mediante SELinux para obtener instrucciones sobre cómo habilitarlo.

Google Distributed Cloud solo admite SELinux en sistemas RHEL.

Crear un archivo de configuración de clúster de usuarios

El archivo de configuración para crear un clúster de usuarios es casi exactamente igual que el que se usa para crear un clúster de administrador. La única diferencia es que debes quitar la sección de configuración de credenciales locales para que la configuración sea una colección válida de recursos de Kubernetes. La sección de configuración se encuentra en la parte superior del archivo, en la sección bmctl configuration variables. Para ver ejemplos de configuraciones de clústeres de usuario, consulta la sección Clústeres de usuario de los ejemplos de configuración de clústeres.

De forma predeterminada, los clústeres de usuarios heredan sus credenciales del clúster de administrador que los gestiona. Puedes anular de forma selectiva algunas o todas estas credenciales.

  1. Crea un archivo de configuración de clúster de usuarios con el comando bmctl create config:

    bmctl create config -c USER_CLUSTER_NAME
    

    Por ejemplo, ejecuta el siguiente comando para crear un archivo de configuración de un clúster de usuarios llamado user1:

    bmctl create config -c user1
    

    El archivo se escribe en bmctl-workspace/user1/user1.yaml. La ruta genérica al archivo es bmctl-workspace/CLUSTER NAME/CLUSTER_NAME.yaml.

  2. Edita el archivo de configuración con los siguientes cambios:

    • Elimina las rutas de los archivos de credenciales locales de la configuración:

      ...
        gcrKeyPath: (path to Artifact Registry service account key)
        sshPrivateKeyPath: (path to SSH private key, used for node access)
        gkeConnectAgentServiceAccountKeyPath: (path to Connect agent service account key)
        gkeConnectRegisterServiceAccountKeyPath: (path to Hub registration service account key)
        cloudOperationsServiceAccountKeyPath: (path to Cloud Operations service account key)
      ...
      
    • Cambia la configuración para especificar el tipo de clúster user en lugar de admin:

      ...
      spec:
        # Cluster type. This can be:
        #   1) admin:  to create an admin cluster. This can later be used to create
        #   user clusters.
        #   2) user:   to create a user cluster. Requires an existing admin cluster.
        #   3) hybrid: to create a hybrid cluster that runs admin cluster
        #   components and user workloads.
        #   4) standalone: to create a cluster that manages itself, runs user
        #   workloads, but does not manage other clusters.
        type: user
      ...
      
    • Registra tus clústeres en una flota especificando tu ID de proyecto en el campo gkeConnect.projectID. Este proyecto se denomina proyecto del host de la flota.

      ...
      gkeConnect:
         projectID: my-project-123
      ...
      
      • De forma opcional, puedes añadir gkeConnect.location a la especificación del clúster para especificar la región Google Cloud en la que se ejecutan los servicios Fleet y Connect. Esta pertenencia regional restringe el tráfico del servicio de flota a tu región. Si incluyes gkeConnect.location en la especificación del clúster, la región que especifiques debe ser la misma que la región configurada en clusterOperations.location. Si las regiones no son las mismas, no se podrá crear el clúster.
    • Si la API de GKE On-Prem está habilitada en tuGoogle Cloud proyecto, todos los clústeres del proyecto se registran en la API de GKE On-Prem automáticamente en la región configurada en clusterOperations.location.

      • Si quieres registrar todos los clústeres del proyecto en la API GKE On-Prem, sigue los pasos que se indican en la sección Antes de empezar para activar y usar la API GKE On-Prem en el proyecto.

      • Si no quieres registrar el clúster en la API GKE On-Prem, incluye esta sección y asigna el valor false a gkeOnPremAPI.enabled. Si no quieres registrar ningún clúster en el proyecto, inhabilita gkeonprem.googleapis.com (el nombre del servicio de la API de GKE On-Prem) en el proyecto. Para obtener instrucciones, consulta Inhabilitar servicios.

    • Especifica la dirección IP del nodo del plano de control.

      ...
      # Sample control plane config
      controlPlane:
       nodePoolSpec:
         nodes:
         - address: 10.200.0.20
      ...
      
    • Asegúrate de que las especificaciones de los clústeres de administrador y de usuario de las IPs virtuales del balanceador de carga y los grupos de direcciones sean complementarias y no se solapen con los clústeres actuales. En el siguiente ejemplo se muestra un par de configuraciones de clústeres de administrador y de usuario, en las que se especifican el balanceo de carga y los grupos de direcciones:

      ...
      # Sample admin cluster config for load balancer and address pools
        loadBalancer:
          vips:
            controlPlaneVIP: 10.200.0.49
            ingressVIP: 10.200.0.50
          addressPools:
          - name: pool1
            addresses:
            - 10.200.0.50-10.200.0.70
      ...
      ...
      # Sample user cluster config for load balancer and address pools
      loadBalancer:
          vips:
            controlPlaneVIP: 10.200.0.71
            ingressVIP: 10.200.0.72
          addressPools:
          - name: pool1
            addresses:
            - 10.200.0.72-10.200.0.90
      ...
      

      El resto de los archivos de configuración del clúster de usuario son los mismos que los del clúster de administrador.

    • Especifica la densidad de pods de los nodos del clúster:

      ...
      # NodeConfig specifies the configuration that applies to all nodes in the cluster.
      nodeConfig:
        # podDensity specifies the pod density configuration.
        podDensity:
          # maxPodsPerNode specifies at most how many pods can be run on a single node.
          maxPodsPerNode: 110
      ...
      

      En el caso de los clústeres de usuarios, los valores permitidos para maxPodsPerNode son 32-250. Si no se especifica ningún valor, se utiliza 110 de forma predeterminada. Una vez creado el clúster, no se puede actualizar este valor.

      La densidad de pods también está limitada por los recursos de IP disponibles de tu clúster. Para obtener más información, consulta Redes de pods.

Crear el clúster de usuarios

Ejecuta el comando bmctl para aplicar la configuración del clúster de usuarios y crear el clúster:

bmctl create cluster -c USER_CLUSTER_NAME --kubeconfig ADMIN_KUBECONFIG

Haz los cambios siguientes:

  • USER_CLUSTER_NAME: el nombre del clúster creado en la sección anterior.
  • ADMIN_KUBECONFIG: la ruta al archivo kubeconfig del clúster de administrador.

Por ejemplo, para un clúster de usuarios llamado user1 y un archivo kubeconfig de clúster de administrador con la ruta kubeconfig bmctl-workspace/admin/admin-kubeconfig, el comando sería el siguiente:

bmctl create cluster -c user1 --kubeconfig bmctl-workspace/admin/admin-kubeconfig

Ejemplos de configuraciones de clústeres de usuarios

Para ver ejemplos de configuraciones de clústeres de usuarios, consulta Clústeres de usuarios en los ejemplos de configuración de clústeres.