Crea clústeres independientes

En esta página se muestra cómo crear un clúster independiente, que es un clúster autoadministrado que ejecuta cargas de trabajo. Los clústeres independientes no administran otros clústeres, lo que elimina la necesidad de ejecutar un clúster de administrador independiente en situaciones limitadas por los recursos. Además, los clústeres independientes ofrecen dos perfiles de instalación para elegir:

  • Predeterminado: El perfil predeterminado tiene requisitos de recursos limitados.
  • Perimetral: El perfil perimetral tiene requisitos de recursos del sistema reducidos de forma significativa y se recomienda para dispositivos perimetrales con restricciones de recursos altas.

Antes de crear un clúster independiente, considera la compensación entre la reducción de recursos y la seguridad general. Debido a que los clústeres independientes se administran por su cuenta, ejecutar cargas de trabajo en el mismo clúster aumenta el riesgo de exponer datos administrativos sensibles, como claves SSH.

Requisitos previos

Antes de crear un clúster independiente, asegúrate de lo siguiente:

  • Se descarga la versión más reciente de bmctl (gs://anthos-baremetal-release/bmctl/1.16.8/linux-amd64/bmctl) de Cloud Storage.
  • La estación de trabajo que ejecuta bmctl tiene conectividad de red con todos los nodos del clúster independiente de destino.
  • La estación de trabajo que ejecuta bmctl tiene conectividad de red a la VIP del plano de control del clúster independiente de destino.
  • La clave SSH que se usa para crear el clúster independiente está disponible para la raíz, o hay acceso de usuario SUDO en todos los nodos del clúster independiente de destino.
  • La cuenta de servicio del registro de Connect está configurada para usarse 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 clúster independiente

Puedes crear un clúster independiente que tenga un solo plano de nodo de control mediante el comando bmctl. Este tipo de configuración reduce el consumo de recursos, pero no proporciona alta disponibilidad (HA), y el clúster resultante tiene un punto de falla único.

También puedes crear un clúster independiente con alta disponibilidad. En el modo con alta disponibilidad, si un nodo falla, otros ocuparán su lugar. Si deseas crear un clúster independiente con alta disponibilidad, debes especificar al menos tres nodos para el plano de control.

Por lo general, el comando bmctl se puede ejecutar en una estación de trabajo independiente o en uno de los nodos del clúster independientes. Sin embargo, si creas un clúster independiente con el perfil perimetral habilitado y tienes configurados los recursos mínimos necesarios, te recomendamos ejecutar bmctl en una estación de trabajo independiente.

Accede a gcloud

  1. Accede a gcloud como usuario:

    gcloud auth application-default login
    

    Debes tener una función de editor o propietario de proyecto para usar las funciones de habilitación automática de la API y de creación de cuentas de servicio, que se describen a continuación.

    También puedes agregar las siguientes funciones de IAM al usuario:

    • Administrador de cuenta de servicio
    • Administrador de clave de cuenta de servicio
    • Administrador de IAM de proyecto
    • Lector de Compute
    • Administrador de Service Usage

    De manera alternativa, si ya tienes una cuenta de servicio con esas funciones, ejecuta el siguiente comando:

    export GOOGLE_APPLICATION_CREDENTIALS=JSON_KEY_FILE
    

    Reemplaza JSON_KEY_FILE con la ruta del archivo de claves JSON de tu cuenta de servicio.

  2. Obtén tu ID del proyecto de Google Cloud para usarlo con la creación del clúster:

    export CLOUD_PROJECT_ID=$(gcloud config get-value project)
    

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

Después de acceder a gcloud y configurar el proyecto, puedes crear el archivo de configuración del clúster con el comando bmctl. En este ejemplo, todas las cuentas de servicio se crean de forma automática con el comando bmctl create config:

bmctl create config -c STANDALONE_CLUSTER_NAME --enable-apis \
    --create-service-accounts --project-id=$CLOUD_PROJECT_ID

Reemplaza lo siguiente:

  • STANDALONE_CLUSTER_NAME por el nombre del clúster independiente que deseas crear

Ejemplo

El siguiente comando crea un archivo de configuración para un clúster independiente llamado standalone1 asociado con el ID del proyecto my-gcp-project:

bmctl create config -c standalone1 --create-service-accounts --project-id=my-gcp-project

El archivo se escribe en bmctl-workspace/standalone1/standalone1.yaml.

Como alternativa a la habilitación automática de las API y la creación de cuentas de servicio, también puedes proporcionar tus cuentas de servicio existentes si tienes los permisos de IAM adecuados. De esta manera puedes omitir la creación automática de cuentas de servicio en el paso anterior en el comando bmctl:

bmctl create config -c standalone1

Edita el archivo de configuración del clúster

Ahora que tienes un archivo de configuración de clúster, realiza los siguientes cambios:

  1. Agrega la clave privada SSH para acceder a los nodos del clúster independiente:

    # bmctl configuration variables. Because this section is valid YAML but not a valid Kubernetes
    # resource, this section can only be included when using bmctl to
    # create the initial admin/hybrid cluster. Afterwards, when creating user clusters by directly
    # applying the cluster and node pool resources to the existing cluster, you must remove this
    # section.
    gcrKeyPath: bmctl-workspace/.sa-keys/my-gcp-project-anthos-baremetal-gcr.json
    sshPrivateKeyPath: /path/to/your/ssh_private_key
    gkeConnectAgentServiceAccountKeyPath: bmctl-workspace/.sa-keys/my-gcp-project-anthos-baremetal-connect.json
    gkeConnectRegisterServiceAccountKeyPath: bmctl-workspace/.sa-keys/my-gcp-project-anthos-baremetal-register.json
    cloudOperationsServiceAccountKeyPath: bmctl-workspace/.sa-keys/my-gcp-project-anthos-baremetal-cloud-ops.json
    
  2. Registra tus clústeres en una flota. El ID del proyecto que especificaste en el comando bmctl create config se agrega automáticamente al campo gkeConnect.projectID en el archivo de configuración del clúster. Este proyecto se conoce como el proyecto host de la flota.

    • Si creaste el archivo de configuración con las funciones de habilitación automática de la API y de creación de cuentas de servicio, puedes omitir este paso.
    • Si creaste el archivo de configuración sin usar las funciones automáticas de habilitación de API y de creación de cuentas de servicio, haz referencia a las claves JSON de la cuenta de servicio descargadas en los campos gkeConnectAgentServiceAccountKeyPath y gkeConnectRegisterServiceAccountKeyPath correspondientes del archivo de configuración del clúster.
  3. Cambia la configuración para especificar un tipo de clúster de standalone en lugar de admin: Si deseas habilitar el perfil perimetral para minimizar el consumo de recursos, especifica el profile: edge:

    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: standalone
      # Edge profile minimizes the resource consumption of GKE on Bare Metal. It is only available for standalone clusters.
      profile: edge
    
  4. Cambia la configuración para especificar un plano de control de varios nodos y alta disponibilidad (opcional). Especifica un número impar de nodos a fin de tener el mayor quórum para la alta disponibilidad:

      # Control plane configuration
      controlPlane:
        nodePoolSpec:
          nodes:
          # Control plane node pools. Typically, this is either a single machine
          # or 3 machines if using a high availability deployment.
          - address: 10.200.0.4
          - address: 10.200.0.5
          - address: 10.200.0.6
    

    Si tienes una cantidad par de nodos de manera temporal al momento de agregar o quitar nodos para el mantenimiento o el reemplazo, tu implementación mantiene la alta disponibilidad siempre y cuando tengas quórum.

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

    En los clústeres independientes, los valores permitidos para maxPodsPerNode son 32-250 para los clústeres de alta disponibilidad y 64-250 para los clústeres que no son HA. 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 independiente con la configuración del clúster

Usa el comando bmctl para implementar el clúster independiente:

bmctl create cluster -c CLUSTER_NAME

Reemplaza CLUSTER_NAME por el nombre del clúster que creaste en la sección anterior.

A continuación, se muestra un ejemplo del comando para crear un clúster llamado standalone1:

bmctl create cluster -c standalone1

Ejemplos de configuración de clústeres independientes

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