Crear clústeres de usuario

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 administran mediante un clúster de administrador.

Después de crear un clúster de administrador, la llamada al comando bmctl create config crea un archivo YAML que puedes editar para definir tu clúster de usuario. Para aplicar la configuración y crear el clúster de usuario, usa el comando bmctl create cluster. Las comprobaciones previas se aplican a los clústeres de usuario que se crearon con el comando bmctl create cluster.

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

Requisitos previos

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

Habilita SELinux

Si deseas habilitar SELinux para proteger tus contenedores, debes asegurarte de que SELinux esté habilitado en el modo Enforced en todas tus máquinas anfitrión. A partir de la versión 1.9.0 o posterior de Google Distributed Cloud, puedes habilitar o inhabilitar SELinux antes o después de la creación o actualización del clúster. SELinux está habilitado de forma predeterminada en Red Hat Enterprise Linux (RHEL). Si SELinux está inhabilitado en tus máquinas anfitrión o no estás seguro, consulta Protege tus contenedores con SELinux para obtener instrucciones sobre cómo habilitarlo.

Google Distributed Cloud admite SELinux solo en los sistemas RHEL.

Crea un archivo de configuración de clúster de usuario

El archivo de configuración que permite crear un clúster de usuario es casi el mismo que se usó para crear un clúster de administrador. La única diferencia es que quitas 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 configuración de clústeres de usuarios, consulta Clústeres de usuarios en las muestras de configuración de clústeres.

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

  1. Crea un archivo de configuración de clúster de usuario 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 para un clúster de usuario 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:

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

      ...
        gcrKeyPath: (path to GCR 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 un tipo de clúster de 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 el ID del proyecto en el campo gkeConnect.projectID. Este proyecto se conoce como el proyecto host de flota.

      ...
      gkeConnect:
         projectID: my-project-123
      ...
      
      • De manera opcional, puedes agregar gkeConnect.location a la especificación del clúster para especificar la región de Google Cloud en la que se ejecutan la flota y los servicios de Connect. Esta membresía regional restringe el tráfico de 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, la creación del clúster fallará.
    • Si la API de GKE On-Prem está habilitada en tu proyecto de Google Cloud, todos los clústeres del proyecto se inscriben en la API de GKE On-Prem de forma automática en la región configurada en clusterOperations.location.

      • Si deseas inscribir todos los clústeres del proyecto en la API de GKE On-Prem, asegúrate de seguir los pasos que se indican en Antes de comenzar para activar y usar la API de GKE On-Prem en el proyecto.

      • Si no deseas inscribir el clúster en la API de GKE On-Prem, incluye esta sección y configura gkeOnPremAPI.enabled como false. Si no deseas inscribir ningún clúster en el proyecto, inhabilita gkeonprem.googleapis.com (el nombre del servicio para la API de GKE On-Prem) en el proyecto. Para obtener instrucciones, consulta Inhabilita los 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 del clúster de administrador y de usuario para las VIP del balanceador de cargas y los grupos de direcciones sean complementarias y no se superpongan con los clústeres existentes. En el siguiente ejemplo, se muestra un par de ejemplo de configuraciones de clústeres de administrador y de usuario, y se especifica el balanceo de cargas 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 del Pod 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 los clústeres de usuario, los valores permitidos para maxPodsPerNode son 32-250. El valor predeterminado si no se especifica, es 110. Este valor no se puede actualizar una vez que se crea el clúster.

      La densidad del Pod también está limitada por los recursos IP disponibles de tu clúster. Para obtener más detalles, consulta Herramientas de redes de Pods.

Crea el clúster de usuario

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

bmctl create cluster -c USER_CLUSTER_NAME --kubeconfig ADMIN_KUBECONFIG

Reemplaza lo siguiente:

  • USER_CLUSTER_NAME especifica 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 configuración de clústeres de usuarios

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