Crear un clúster de administrador con clientes de la API de GKE On-Prem

En esta página se describe cómo crear un clúster de administrador mediante la Google Cloud consola o la interfaz de línea de comandos de Google Cloud (gcloud CLI). Ambos clientes estándarGoogle Cloud usan la API de GKE On-Prem para crear el clúster.

¿Qué es la API de GKE On-Prem?

La API de GKE On-Prem es una API alojada en Google Cloudque te permite gestionar el ciclo de vida de tus clústeres on-premise mediante Terraform y aplicaciones estándar deGoogle Cloud . La API GKE On-Prem se ejecuta en la infraestructura de Google Cloud. Terraform, la consola y la CLI de gcloud son clientes de la API y la usan para crear clústeres en tu centro de datos.

Para gestionar el ciclo de vida de tus clústeres, la API de GKE On-Prem debe almacenar metadatos sobre el estado de tu clúster en Google Cloud, usando la regiónGoogle Cloud que especifiques al crear el clúster. Estos metadatos permiten que la API gestione el ciclo de vida del clúster y no incluyen datos específicos de la carga de trabajo.

Cuando creas un clúster con un cliente de la API de GKE On-Prem, especificas unGoogle Cloud proyecto. Una vez creado el clúster, se registra automáticamente en la flota del proyecto especificado. Este proyecto se denomina proyecto host de la flota. El proyecto host de la flota no se puede cambiar después de crear el clúster.

Si lo prefieres, puedes crear un clúster de administrador creando un archivo de configuración de clúster de administrador y usando bmctl, tal como se describe en Crear un clúster de administrador.

Si quieres usar la consola o la CLI de gcloud para gestionar el ciclo de vida de los clústeres que se crearon con bmctl, consulta Configurar clústeres para que los gestione la API GKE On-Prem.

Permisos de gestión de identidades y accesos

Si no eres el Google Cloud propietario del proyecto, debes pedirle a uno que te conceda los siguientes roles:

Si quieres acceder a las páginas de Google Kubernetes Engine en la consola, también debes tener el rol roles/container.viewer.

Para obtener información sobre cómo conceder los roles, consulta el artículo Gestionar acceso a proyectos, carpetas y organizaciones.

Acceso a la línea de comandos

Una vez creado el clúster, si quieres usar la pasarela de conexión para ejecutar comandos kubectl en el clúster desde ordenadores que no sean la estación de trabajo del administrador, instala las siguientes herramientas de línea de comandos en el ordenador que quieras usar.

  • La versión más reciente de gcloud CLI.

  • kubectl para ejecutar comandos en clústeres de Kubernetes. Si necesitas instalar kubectl, sigue estas instrucciones.

Elegir el cliente para crear el clúster de administradores

Puedes usar la consola o la CLI de gcloud para crear un clúster de administrador gestionado por la API de GKE On-Prem. Si es la primera vez que instalas Google Distributed Cloud (solo software) en hardware desnudo, puede que te resulte más fácil usar la consola que la interfaz de línea de comandos de gcloud.

Cuando te hayas familiarizado con la información que debes proporcionar para crear clústeres, puede que te resulte más práctico usar la CLI de gcloud, ya que puedes guardar el comando con sus argumentos en un archivo de texto. Si usas una herramienta de CI/CD, como Cloud Build, puedes usar los comandos gcloud para crear un clúster y especificar la marca --impersonate-service-account para automatizar la creación.

Requisitos previos

Consola

  1. En la consola, ve a la página Crear un clúster bare metal.

    Ir a Crear un clúster de metal desnudo

  2. Selecciona el Google Cloud proyecto en el que quieras crear el clúster. El proyecto seleccionado también se usa como proyecto host de la flota.

En la página Requisitos previos se muestran los requisitos de tu estación de trabajo de administrador y de los nodos del clúster. El planificador de direcciones IP de la sección Requisitos de red te ayuda a planificar las direcciones IP necesarias para una instalación mínima de un clúster de administrador y un clúster de usuario.

Requisitos previos de la estación de trabajo de administrador

Despliega esta sección para ver los requisitos de hardware, sistema operativo y conectividad de tu estación de trabajo de administrador.

Requisitos previos de los equipos de los nodos de clúster

Despliega esta sección para ver los requisitos de hardware, sistema operativo y conectividad de las máquinas de los nodos del clúster.

Requisitos de red

En esta sección se explica cómo planificar las direcciones IP que necesitas para un entorno mínimo. En la sección Direcciones IP de nodo y virtuales, puedes proporcionar una dirección IP de nodo inicial y una dirección IP virtual (VIP). La consola mostrará una tabla con las direcciones IP que necesitas. Estas direcciones IP no se aplican a la configuración del clúster de administrador. Se trata de una guía para ayudarte a planificar las direcciones IP que necesitas para tu instalación. Puede descargar la tabla en un archivo CSV e importarla a una hoja de cálculo o a una herramienta de planificación de direcciones IP para usarla como punto de partida para hacer un seguimiento de las direcciones IP necesarias para sus clústeres.

Revisa los recursos de Google Cloud:

Asegúrate de que todas las APIs de Google necesarias estén habilitadas en el proyecto host de la flota. Además, debes habilitar la API GKE On-Prem:

gcloud services enable --project FLEET_HOST_PROJECT_ID \
  gkeonprem.googleapis.com

Sustituye FLEET_HOST_PROJECT_ID por el ID del proyecto host de la flota.

Antes de crear el clúster, ejecuta el comando bmctl register bootstrap en tu estación de trabajo de administrador, tal como se describe en Preparar el entorno de arranque. Este comando puede crear las cuentas de servicio necesarias con los permisos de gestión de identidades y accesos mínimos necesarios para crear el clúster de administrador. Si lo prefieres, puedes configurar cuentas de servicio manualmente.

Cuando lo tengas todo listo, haz clic en Instalar entorno de bootstrap en la barra de navegación de la izquierda.

CLI de gcloud

Requisitos previos de hardware, redes y sistema operativo

Para crear un clúster de administrador con un cliente de la API de GKE On-Prem, se deben cumplir los mismos requisitos de hardware, redes y sistema operativo que para crear el clúster con bmctl. Para obtener más información, consulta los requisitos previos de instalación.

APIs de Google obligatorias

Asegúrate de que todas las APIs de Google necesarias estén habilitadas en el proyecto host de la flota. Además, debes habilitar la API GKE On-Prem:

gcloud services enable --project FLEET_HOST_PROJECT_ID \
  gkeonprem.googleapis.com

Sustituye FLEET_HOST_PROJECT_ID por el ID del proyecto host de la flota.

Cuentas de servicio y permisos necesarios

Antes de crear el clúster, ejecuta el comando bmctl register bootstrap en tu estación de trabajo de administrador, tal como se describe en Preparar el entorno de arranque. Este comando puede crear las cuentas de servicio necesarias con los permisos de gestión de identidades y accesos mínimos necesarios para crear el clúster de administrador. Si lo prefieres, puedes configurar cuentas de servicio manualmente.

Plan de direcciones IP

Antes de crear el clúster de administrador, debes planificar las direcciones IP de tus clústeres. Consulte Planificar las direcciones IP para ver un ejemplo de cómo asignar direcciones IP a un clúster de administradores de alta disponibilidad y a dos clústeres de usuarios de alta disponibilidad. Aunque vayas a usar la CLI de gcloud para crear el clúster de administrador, te recomendamos que sigas los pasos de la consola que se indican en esta sección para usar el planificador de direcciones IP.

Preparar el entorno de arranque

Antes de crear el clúster de administrador, debes ejecutar el comando bmctl register bootstrap en tu estación de trabajo de administrador. Este comando despliega un clúster de Kubernetes en Docker (kind) en la estación de trabajo del administrador. Este clúster de bootstrap aloja los controladores de Kubernetes necesarios para crear el clúster de administrador. Cuando creas el clúster de administrador, los controladores del clúster de arranque aprovisionan nodos, ejecutan comprobaciones previas y registran el clúster de administrador en la flota. El clúster de arranque se elimina automáticamente después de que se haya creado correctamente.

Consola

  1. Introduce un nombre para el clúster de administrador. Ten en cuenta que el nombre del clúster de arranque se obtiene añadiendo el prefijo bootstrap- al nombre del clúster de administrador.

  2. Selecciona la versión de tu clúster de administrador.

  3. En el campo Ubicación de la API de Google Cloud, selecciona la Google Cloud región de la lista. Este ajuste especifica la región en la que se ejecutan las siguientes APIs y servicios:

    • API de GKE On-Prem (gkeonprem.googleapis.com)
    • Servicio de flota (gkehub.googleapis.com)
    • Conectar servicio (gkeconnect.googleapis.com)

    Este ajuste también controla la región en la que se almacenan los siguientes elementos:

    • Los metadatos del clúster que necesita la API de GKE On-Prem para gestionar el ciclo de vida del clúster
    • Los datos de Cloud Logging y Cloud Monitoring de los componentes del sistema
    • El registro de auditoría de administrador creado por los registros de auditoría de Cloud

    El nombre, el proyecto y la ubicación del clúster identifican de forma única el clúster en Google Cloud.

  4. La consola muestra los comandos que debes ejecutar en tu estación de trabajo de administrador. La herramienta de línea de comandos bmctl debe coincidir con la versión del clúster que estés creando. Si ya has descargado la versión aplicable de bmctl en tu estación de trabajo de administrador, no es necesario que la vuelvas a descargar.

CLI de gcloud

  1. Asegúrate de actualizar los componentes:

    gcloud components update
    
  2. Ejecuta el siguiente comando para iniciar sesión con tu cuenta de Google:

    gcloud auth login
    
  3. Lista de las versiones de clúster de metal desnudo disponibles que puedes instalar:

    La versión de bmctl que descargues para crear el entorno de arranque debe coincidir con la versión que instalarás en el clúster de administrador.

    gcloud container bare-metal admin-clusters query-version-config \
      --location=REGION
    

    Sustituye REGION por la Google Cloud región que usarás al crear el clúster. Es la región en la que se ejecutan la API de GKE On-Prem y los servicios Fleet y Connect. Especifica us-west1 u otra región admitida.

Crear el clúster de arranque

Sigue estos pasos en tu estación de trabajo de administrador. Estos comandos se muestran en la consola.

  1. Define tus credenciales de usuario como credenciales predeterminadas de la aplicación (ADC):

    gcloud auth application-default login
    

    Sigue las indicaciones para seleccionar tu cuenta de Google para ADC.

  2. Si es necesario, descarga la herramienta de línea de comandos bmctl en el directorio de trabajo actual.

    gcloud storage cp gs://anthos-baremetal-release/bmctl/VERSION/linux-amd64/bmctl .
    chmod a+x ./bmctl
    

    Sustituye VERSION por la versión del clúster de Bare Metal que quieras instalar. Si has copiado el comando de la consola, la versión ya está en el comando.

  3. Crea el clúster de arranque. Puedes dejar que bmctl cree las cuentas de servicio (SA) necesarias o crear las cuentas de servicio y los archivos de claves por tu cuenta y pasárselos al comando bmctl register bootstrap.

bmctl crea SAs

Usa el siguiente comando si quieres que bmctl cree las cuentas de servicio necesarias con los permisos mínimos requeridos para crear el clúster de administrador. Este comando presupone que bmctl se encuentra en el directorio de trabajo actual.

./bmctl register bootstrap \
  --ssh-key=YOUR_PRIVATE_KEY \
  --target-cluster-name=ADMIN_CLUSTER_NAME \
  --project-id=FLEET_HOST_PROJECT_ID

Haz los cambios siguientes:

Si has copiado el comando que se muestra en la consola, los siguientes campos ya se habrán rellenado automáticamente.

  • ADMIN_CLUSTER_NAME: el nombre de tu clúster de administrador.

  • FLEET_HOST_PROJECT_ID: proyecto en el que se registrará automáticamente el clúster de administrador después de crearlo.

El comando bmctl register bootstrap crea las siguientes cuentas de servicio. Las claves de la cuenta de servicio se almacenan en el directorio bmctl-workspace/.sa-keys.

Cuenta de servicio Finalidad Roles de gestión de identidades y accesos
anthos-baremetal-gcr Google Distributed Cloud usa esta cuenta de servicio para descargar imágenes de contenedor de Artifact Registry. Ninguno
anthos-baremetal-connect Connect Agent usa esta cuenta de servicio para mantener una conexión entre tu clúster y Google Cloud. roles/gkehub.connect
anthos-baremetal-register Connect Agent usa esta cuenta de servicio para registrar tus clústeres en laGoogle Cloud flota. roles/gkehub.admin
anthos-baremetal-cloud-ops El agente de Stackdriver usa esta cuenta de servicio para exportar registros y métricas de clústeres a Cloud Logging y Cloud Monitoring. roles/logging.logWriter
roles/monitoring.metricWriter
roles/stackdriver.resourceMetadata.writer
roles/opsconfigmonitoring.resourceMetadata.writer
roles/monitoring.dashboardEditor
roles/monitoring.viewer
roles/serviceusage.serviceUsageViewer
roles/kubernetesmetadata.publisher

Especificar archivos de claves de SA

Si lo prefieres, puedes transferir bmctl los archivos de clave de cuenta de servicio que hayas creado. El siguiente comando usa los nombres de los archivos de claves de Configurar cuentas de servicio manualmente y da por hecho que bmctl y los archivos de claves están en el directorio de trabajo actual.

./bmctl register bootstrap \
  --ssh-key=YOUR_PRIVATE_KEY \
  --target-cluster-name=ADMIN_CLUSTER_NAME \
  --project-id=FLEET_HOST_PROJECT_ID \
  --gcr-service-account-key=anthos-baremetal-gcr.json \
  --gke-agent-service-account-key=connect-agent.json \
  --gke-register-service-account-key=connect-register.json \
  --cloud-operation-service-account-key=anthos-baremetal-cloud-ops.json

Haz los cambios siguientes:

  • YOUR_PRIVATE_KEY: la ruta a tu clave SSH privada. Creaste la clave SSH al configurar el acceso SSH de superusuario a los nodos.

  • ADMIN_CLUSTER_NAME: el nombre de tu clúster de administrador.

  • FLEET_HOST_PROJECT_ID: proyecto en el que se registrará automáticamente el clúster de administrador después de crearlo.

Las siguientes marcas especifican la ruta de los archivos de claves:

  • -gcr-service-account-key: la ruta al archivo de claves de la cuenta de servicio que extrae imágenes de contenedor (anthos-baremetal-gcr).

  • --gke-agent-service-account-key: ruta al archivo de claves de la cuenta de servicio del agente de Connect (anthos-baremetal-connect).

  • --gke-register-service-account-key: ruta al archivo de claves de la cuenta de servicio del agente de conexión que registra el clúster en la flota (anthos-baremetal-register).

  • --cloud-operation-service-account-key: la ruta al archivo de claves de la cuenta de servicio para auditar registros y monitorizar proyectos (anthos-baremetal-cloud-ops).

Una vez que bmctl haya creado el clúster de arranque correctamente, verás un resultado similar al siguiente:

[2023-03-22 17:35:24+0000] Waiting for the temporary cluster to be registered... OK
[2023-03-22 17:35:37+0000] Please go to https://console.cloud.google.com/home/dashboard?project=example-project-12345 to create the cluster
[2023-03-22 17:35:37+0000] Waiting for preflight checks and cluster to run..

Crear el clúster de administrador

Consola

  1. En la página Install bootstrap environment (Instalar entorno de bootstrap), haz clic en Check Connection (Comprobar conexión).

    Si se realiza correctamente, la consola mostrará Conexión establecida.

    La conexión con el clúster de arranque debe establecerse antes de continuar. Si no se establece la conexión, comprueba los argumentos que has especificado en el comando bmctl register bootstrap:

    • Comprueba que el valor de --target-cluster-name coincida con el nombre del clúster de administrador que se muestra en la sección Pasos básicos del entorno de arranque.

    • Asegúrate de que el valor de --project-id coincida con el ID del proyecto que has seleccionado en la consola.

    Si necesitas cambiar el nombre del clúster de arranque o el ID del proyecto, introduce Ctrl-C para salir de bmctl register bootstrap y vuelve a ejecutar el comando.

  2. Haz clic en Siguiente para empezar a configurar el clúster de administrador. La mayoría de los ajustes de la consola corresponden a los campos del archivo de configuración del clúster.

  3. En Configuración de nodos, introduce un valor entre 64 y 250 en Máximo de pods por nodo o acepta el valor predeterminado, 110. Una vez creado el clúster, no puedes actualizar este valor.

    El número máximo de pods por nodo (denominado densidad de pods) también está limitado por los recursos de IP disponibles de tu clúster. Para obtener más información, consulta Redes de pods.

  4. Haz clic en Siguiente.

  5. En la página Networking (Redes), define cómo se comunican entre sí los nodos y los componentes del clúster, así como con el plano de control de Kubernetes.

    Para obtener información detallada, mantén el puntero sobre el icono situado junto a cada campo.

  6. Haz clic en Verificar y crear.

    La consola muestra mensajes de estado a medida que verifica los ajustes y crea el clúster en tu centro de datos.

    Si hay algún problema con la configuración, la consola mostrará un mensaje de error que debería ser lo suficientemente claro para que puedas solucionar el problema de configuración e intentar crear el clúster de nuevo.

CLI de gcloud

Antes de crear el clúster de administrador, confirma que el clúster de arranque se ha registrado como miembro de la flota:

gcloud container fleet memberships list \
  --project=FLEET_HOST_PROJECT_ID

Si el clúster de arranque no aparece en la lista, comprueba el nombre y el ID de proyecto que has especificado en bmctl register bootstrap. Si necesitas cambiar el nombre del clúster de arranque o el ID del proyecto, introduce Ctrl-C para salir de bmctl register bootstrap y vuelve a ejecutar el comando.

Usa el siguiente comando para crear un clúster de administrador:

gcloud container bare-metal admin-clusters create

La mayoría de las marcas que especifiques en el comando corresponden a los campos del archivo de configuración del clúster de usuarios.

Para crear un clúster de administrador con el balanceador de carga agrupado, sigue estos pasos:

gcloud container bare-metal admin-clusters create ADMIN_CLUSTER_NAME \
  --project=FLEET_HOST_PROJECT_ID \
  --location=REGION \
  --version=VERSION \
  --max-pods-per-node=MAX_PODS_PER_NODE \
  --control-plane-vip=CONTROL_PLANE_VIP \
  --control-plane-load-balancer-port=CONTROL_PLANE_LOAD_BALANCER_PORT \
  --control-plane-node-configs 'CONTROL_PLANE_NODE_CONFIG' \
  --island-mode-service-address-cidr-blocks=SERVICE_ADDR_CIDR \
  --island-mode-pod-address-cidr-blocks=POD_ADDR_CIDR \
  --lvp-share-path=/mnt/localpv-share \
  --lvp-share-storage-class=local-shared \
  --lvp-node-mounts-config-path=/mnt/localpv-disk \
  --lvp-node-mounts-config-storage-class=local-disks

Si quieres usar el balanceo de carga manual, añade --enable-manual-lb al comando.

Haz los cambios siguientes:

  • ADMIN_CLUSTER_NAME: el nombre de tu clúster de administrador. El nombre no se puede cambiar después de crear el clúster.

  • FLEET_HOST_PROJECT_ID: proyecto en el que se registrará automáticamente el clúster de administrador después de crearlo. El proyecto host de la flota no se puede cambiar después de crear el clúster.

  • REGION: la región en la que se ejecuta la API de GKE On-Prem. Google Cloud Especifica us-west1 u otra región admitida. La región no se puede cambiar después de crear el clúster. Este ajuste especifica la región en la que se almacenan los siguientes elementos:

    • Los metadatos del clúster que necesita la API de GKE On-Prem para gestionar el ciclo de vida del clúster
    • Los datos de Cloud Logging y Cloud Monitoring de los componentes del sistema
    • El registro de auditoría de administrador creado por los registros de auditoría de Cloud

    El nombre, el proyecto y la ubicación del clúster identifican de forma única el clúster en Google Cloud.

  • VERSION: la versión del clúster de Bare Metal. La versión debe coincidir con la versión de bmctl que has usado para ejecutar bmctl register bootstrap. Puedes consultar la versión de bmctl ejecutando bmctl version en la estación de trabajo del administrador.

  • MAX_PODS_PER_NODE : en los clústeres de administrador, los valores permitidos son de 32 a 250 y de 64 a 250 en los clústeres que no son de alta disponibilidad. El valor predeterminado si --max-pods-per-node no se incluye en el comando es 110. Después de crear el clúster, este valor no se puede actualizar.

    El número máximo de pods por nodo (denominado densidad de pods) también está limitado por los recursos de IP disponibles de tu clúster. Para obtener más información, consulta Redes de pods.

  • CONTROL_PLANE_VIP: la IP virtual (VIP) del balanceador de carga del servidor de la API de Kubernetes del clúster. Incluye el VIP del plano de control en la misma subred que los nodos del balanceador de carga. No incluyas la IP virtual del plano de control en los grupos de direcciones del balanceador de carga.

  • CONTROL_PLANE_LOAD_BALANCER_PORT: puerto en el que el balanceador de carga sirve el plano de control. Aunque puedes configurar otro valor, el puerto 443 es el puerto estándar que se usa para las conexiones HTTPS.

  • CONTROL_PLANE_NODE_CONFIG: dirección IPv4 de un nodo del plano de control. Los nodos del plano de control ejecutan la carga de trabajo del sistema. Especifica esta marca para cada nodo del plano de control. Normalmente, tienes una sola máquina si usas un despliegue mínimo o tres máquinas si usas un despliegue de alta disponibilidad. Especifica un número impar de nodos para tener un quórum mayoritario para la alta disponibilidad. Puedes cambiar estas direcciones cada vez que actualices o actualices el clúster.

    El valor de la marca tiene el siguiente formato:

    'node-ip=CP_IP_ADDRESS_1,labels=CP_KEY_1.1=CP_VALUE_1.1;CP_KEY_1.2=CP_VALUE_1.2;...' \
    

    El valor tiene segmentos que empiezan por las palabras clave node-ip y labels. Separa cada segmento con una coma.

    • node-ip: la dirección IP de un nodo del plano de control. Solo puedes especificar un node-ip por cada marca. Si necesitas especificar más de un nodo, incluye la marca de nuevo para cada nodo.

    • labels: uno o varios pares clave-valor asociados al nodo.

    Ten en cuenta las siguientes reglas de sintaxis:

    • Escribe todo el valor entre comillas simples.
    • No se permiten espacios.
    • Separa cada par clave=valor del segmento labels con un punto y coma.

    Por ejemplo:

    --control-plane-node-configs 'node-ip=192.0.2.1' \
    --control-plane-node-configs 'node-ip=192.0.2.2,labels=key2.1=value2.1' \
    --control-plane-node-configs 'node-ip=192.0.2.3,labels=key3.1=value3.1;key3.2=value3.2' \
    
  • SERVICE_ADDR_CIDR: un intervalo de direcciones IPv4 en formato CIDR para los servicios de tu clúster. El intervalo CIDR debe estar entre /24 y /12, donde /12 proporciona el mayor número de direcciones IP. Te recomendamos que uses un intervalo del espacio de direcciones IP para redes privadas, tal como se define en RFC 1918, por ejemplo, 10.96.0.0/20.

  • POD_ADDR_CIDR: intervalo de direcciones IPv4 en formato CIDR que se usará para los pods del clúster de usuarios. El intervalo CIDR debe estar entre /18 y /8, donde /8 proporciona el mayor número de direcciones IP. Te recomendamos que uses un intervalo del espacio de direcciones IP para redes privadas, tal como se define en RFC 1918, por ejemplo, 192.168.0.0/16.

Debes especificar las siguientes marcas de almacenamiento. El comando de ejemplo incluye valores típicos. Para obtener más información, consulta Configurar el almacenamiento local.

  • --lvp-share-path: es la ruta de la máquina host en la que se pueden crear subdirectorios. Se crea un PersistentVolume (PV) local para cada subdirectorio.

  • --lvp-share-storage-class: es el StorageClass que se usa para crear volúmenes persistentes. StorageClass se crea durante la creación del clúster.

  • --lvp-node-mounts-config-path: es la ruta de la máquina host en la que se pueden detectar los discos montados. Se crea un PersistentVolume (PV) local para cada montaje.

  • --lvp-node-mounts-config-storage: la clase de almacenamiento con la que se crean los PVs durante la creación del clúster.

Para ver una lista completa de las marcas y sus descripciones, consulta la referencia de la herramienta de línea de comandos gcloud.

La salida del comando es similar a la siguiente:

Waiting for operation [projects/example-project-12345/locations/us-west1/operations/operation-1679543737105-5f7893fd5bae9-942b3f97-75e59179] to complete.

En el resultado de ejemplo, la cadena operation-1679543737105-5f7893fd5bae9-942b3f97-75e59179 es el OPERATION_ID de la operación de larga duración. Puedes consultar el estado de la operación con el siguiente comando:

gcloud container bare-metal operations describe OPERATION_ID \
  --project=FLEET_HOST_PROJECT_ID \
  --location=REGION

Para obtener más información, consulta operaciones de gcloud container bare-metal.

Corregir errores de comprobación

Antes de crear el clúster, bmctl ejecuta una serie de comprobaciones previas para verificar la configuración. Si hay algún problema con la configuración, el comando gcloud ... create se cierra con un error similar al siguiente:

ERROR: (gcloud.container.bare-metal.admin-clusters.create) Invalid resource state for "projects/694677185633/locations/us-west1/bareMetalAdminClusters/abm-cluster-1": cluster preflight checks failed

Por ejemplo, supongamos que una comprobación previa ha fallado porque no se ha podido acceder al nodo del plano de control. En la estación de trabajo del administrador, verá algo similar a lo siguiente:

[2023-03-27 20:34:38+0000] Waiting for preflight check job to finish... OK
[2023-03-27 20:35:58+0000] - Validation Category: machines and network
[2023-03-27 20:35:58+0000]    - [PASSED] pod-cidr
[2023-03-27 20:35:58+0000]    - [FAILED] node-network (log: bmctl-workspace/log/register-bootstrap-20230327-201548/node-network)
[2023-03-27 20:35:58+0000]        - Failed to connect to the host via ssh: ssh: connect to host 10.100.0.5 port 22: Connection timed out
[2023-03-27 20:35:58+0000] Flushing logs... OK
[2023-03-27 20:35:58+0000] Error polling the preflight check abm-cluster-mar-27 in the cluster-abm-cluster-mar-27: preflight check failed
  1. En la estación de trabajo del administrador, comprueba que el proceso bmctl register bootstrap sigue en ejecución. Si no es así, vuelve a ejecutar el comando con los mismos argumentos y añade la marca --reuse-bootstrap-cluster=true.

  2. Ejecuta gcloud ... update para corregir la dirección IP no válida:

    gcloud container bare-metal admin-clusters update ADMIN_CLUSTER_NAME \
      --project=FLEET_HOST_PROJECT_ID \
      --location=REGION \
      --control-plane-node-configs 'node-ip=NEW_NODE_ID_ADDRESS'
    

    Para obtener más información, consulta gcloud container bare-metal admin-clusters update.

Los detalles sobre el proceso de creación del clúster se muestran en tu estación de trabajo de administrador. Si las comprobaciones preparatorias se completan correctamente, verás algo parecido a lo siguiente:

[2023-03-22 23:12:47+0000] Waiting for cluster kubeconfig to become ready OK
[2023-03-22 23:15:47+0000] Writing kubeconfig file
[2023-03-22 23:15:47+0000] kubeconfig of cluster being created is present at bmctl-workspace/abm-cluster-1/abm-cluster-1-kubeconfig
[2023-03-22 23:15:47+0000] Please restrict access to this file as it contains authentication credentials of your cluster.
[2023-03-22 23:15:47+0000] Waiting for cluster to become ready OK
[2023-03-22 23:20:17+0000] Please run
[2023-03-22 23:20:17+0000] kubectl --kubeconfig bmctl-workspace/abm-cluster-1/abm-cluster-1-kubeconfig get nodes
[2023-03-22 23:20:17+0000] to get cluster nodes status.
[2023-03-22 23:20:17+0000] Waiting for node pools to become ready OK
[2023-03-22 23:20:37+0000] Waiting for metrics to become ready in GCP OK
[2023-03-22 23:25:38+0000] Waiting for cluster API provider to install in the created admin cluster OK
[2023-03-22 23:25:48+0000] Moving admin cluster resources to the created admin cluster
[2023-03-22 23:25:51+0000] Waiting for node update jobs to finish OK
[2023-03-22 23:27:41+0000] Flushing logs... OK
[2023-03-22 23:27:41+0000] Deleting membership... OK
[2023-03-22 23:27:42+0000] Deleting bootstrap cluster.

Conectarse al clúster de administrador

El comando bmctl register bootstrap crea un archivo kubeconfig para el clúster de administrador en tu estación de trabajo de administrador. El directorio en el que se encuentra kubeconfig y el nombre de archivo se basan en el nombre del clúster de administrador de la siguiente manera:

bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME-kubeconfig

Debes restringir el acceso a este kubeconfig porque contiene credenciales de autenticación del clúster.

Si quieres usar tu identidad de Google para iniciar sesión en el clúster, puedes configurar la pasarela de conexión de la siguiente manera:

  1. En tu estación de trabajo de administrador, define la variable de entorno KUBECONFIG:

    export KUBECONFIG=$HOME/bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME-kubeconfig
    
  2. Define el contexto actual en una variable de entorno:

    export CONTEXT="$(kubectl config current-context)"
    
  3. Ejecuta el siguiente comando gcloud. Este comando hace lo siguiente:

    • Asigna a tu cuenta de usuario el clusterrole/viewrol de Kubernetes en el clúster.
    • Configura el clúster para que puedas ejecutar comandos kubectl de solo lectura en tu ordenador local sin tener que conectarte por SSH a la estación de trabajo del administrador.

    Sustituye GOOGLE_ACCOUNT_EMAIL por la dirección de correo asociada a tu cuenta Google Cloud . Por ejemplo: --users=alex@example.com.

    gcloud container fleet memberships generate-gateway-rbac  \
        --membership=ADMIN_CLUSTER_NAME \
        --role=clusterrole/view \
        --users=GOOGLE_ACCOUNT_EMAIL \
        --project=FLEET_HOST_PROJECT_ID \
        --kubeconfig=$KUBECONFIG \
        --context=$CONTEXT\
        --apply
    

    El resultado de este comando es similar al siguiente, que se ha truncado para facilitar la lectura:

    Validating input arguments.
    Specified Cluster Role is: clusterrole/view
    Generated RBAC policy is:
    --------------------------------------------
    ...
    
    Writing RBAC policy for user: GOOGLE_ACCOUNT_EMAIL to cluster.
    Successfully applied the RBAC policy to cluster.
    

Con estas políticas de RBAC, puedes iniciar sesión en el clúster desde la consola con tu identidad de Google. Además, puedes ejecutar comandos de solo lectura kubectl en ordenadores que no sean la estación de trabajo del administrador mediante un kubeconfig especial que enruta las solicitudes a través de la pasarela de conexión.

  1. Ejecuta el siguiente comando en un ordenador que no sea la estación de trabajo del administrador para obtener la entrada kubeconfig que puede acceder al clúster a través de la pasarela de conexión.

    gcloud container fleet memberships get-credentials ADMIN_CLUSTER_NAME \
        --project=FLEET_HOST_PROJECT_ID
    

    El resultado debería ser similar al siguiente:

    Starting to build Gateway kubeconfig...
    Current project_id: FLEET_HOST_PROJECT_ID
    A new kubeconfig entry "connectgateway_FLEET_HOST_PROJECT_ID_global_ADMIN_CLUSTER_NAME" has been generated and set as the current context.
    
  2. Ahora puedes ejecutar comandos kubectl a través de la pasarela de conexión:

    kubectl get pods -A
    

Siguientes pasos