Crear clústeres de usuario

En GKE en Bare Metal, los clústeres de usuario ejecutan tus cargas de trabajo y, en una arquitectura de varios clústeres, un clúster de administrador crea y administra los clústeres de usuario.

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.15.11/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 de clúster administrador tienen conectividad de red a todos los nodos en el 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 GKE en Bare Metal versión 1.9.0 o posterior, puedes habilitar o inhabilitar SELinux antes o después de la creación de un clúster o de sus actualizaciones. SELinux está habilitado de forma predeterminada en Red Hat Enterprise Linux (RHEL) y CentOS. Si SELinux está inhabilitado en tus máquinas anfitrión o no estás seguro, consulta Protege tus contenedores con SELinux a fin de obtener instrucciones para habilitarlo.

GKE en Bare Metal admite SELinux solo en los sistemas RHEL y CentOS.

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

El archivo de configuración para crear un clúster de usuario es casi el mismo que el que se usa 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 lo siguiente a fin de 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. Para ello, especifica el ID del proyecto en el campo gkeConnect.projectID. Este proyecto se conoce como el proyecto host de la flota.

      ...
      gkeConnect:
         projectID: my-project-123
      ...
      
    • 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 los grupos de direcciones y las VIP del balanceador de cargas sean complementarias y no se superpongan con los clústeres existentes. A continuación, se muestra un par de configuraciones de configuración de clúster de usuario y administrador, que especifican 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 de clúster de usuario son los mismos que los de la configuración 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.