Crea clústeres de administrador y de usuario de GKE en Bare Metal en las VMs de Compute Engine

En esta página, se muestra cómo crear un clúster de usuario de GKE en Bare Metal y un clúster de administrador en máquinas virtuales (VMs) de Compute Engine. La secuencia de comandos proporcionada crea VM de Compute Engine para los nodos del clúster de administrador y de usuario, y una estación de trabajo de administrador.

La estación de trabajo de administrador aloja las herramientas de la interfaz de línea de comandos (CLI) y los archivos de configuración para aprovisionar clústeres durante la instalación, así como las herramientas de la CLI con el fin de interactuar con los clústeres aprovisionados después de la instalación. La secuencia de comandos instala las herramientas de la CLI en la VM de la estación de trabajo de administrador.

Un clúster de usuario es un clúster de Kubernetes que ejecuta tus cargas de trabajo alojadas en contenedores. Consiste en nodos del plano de control y nodos trabajadores. Los clústeres de usuario deben contener uno o más nodos trabajadores que ejecuten cargas de trabajo de usuarios. Un clúster de administrador es un clúster de Kubernetes que administra uno o más clústeres de usuario, lo que ayuda a crear, actualizar y borrar clústeres de usuario. Un clúster de administrador consta solo de nodos del plano de control. Para obtener más información, consulta Implementación de clústeres de administrador y de usuario.

La secuencia de comandos configura una red de superposición de LAN extensible virtual (VXLAN) entre las VMs y las prepara para la creación del clúster. De manera opcional, la secuencia de comandos crea un clúster de administrador, o puedes crear el clúster de administrador por tu cuenta a fin de obtener información sobre las herramientas que proporciona GKE en Bare Metal para crear clústeres de administrador.

Con la secuencia de comandos proporcionada, puedes probar GKE en Bare Metal con rapidez y sin tener que preparar ningún hardware. Completar los pasos de esta página te proporciona un entorno de pruebas de GKE en Bare Metal que se ejecuta en Compute Engine.

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

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

Para administrar el ciclo de vida de los clústeres, la API de GKE On-Prem debe almacenar metadatos sobre el estado de tu clúster en Google Cloud mediante la región de Google Cloud que especificas cuando creas el clúster. Estos metadatos permiten que la API administre 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, debes especificar un proyecto de Google Cloud. Una vez que se crea el clúster, se registra automáticamente en la flota del proyecto especificado. Este proyecto se conoce como el proyecto host de la flota. No se puede cambiar el proyecto host de la flota después de que se crea el clúster.

Antes de comenzar

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. Make sure that billing is enabled for your Google Cloud project.

  6. Toma nota del ID del proyecto porque lo necesitas para configurar una variable de entorno que se usa en la secuencia de comandos y en los comandos de esta página. Si seleccionaste un proyecto existente, asegúrate de ser propietario o editor del proyecto.
  7. Puedes ejecutar la secuencia de comandos en Cloud Shell o en tu máquina local con Linux o macOS. Si no usas Cloud Shell, haz lo siguiente:
    1. Asegúrate de haber instalado la versión más reciente de Google Cloud CLI, la herramienta de línea de comandos para interactuar con Google Cloud. Si es necesario, actualiza los componentes de gcloud CLI:
      gcloud components update

      Según cómo se haya instalado la CLI de gcloud, es posible que veas el siguiente mensaje: “No puedes realizar esta acción porque el administrador de componentes de gcloud CLI está inhabilitado para esta instalación. Puedes ejecutar el siguiente comando para obtener el mismo resultado en esta instalación:" Sigue las instrucciones para copiar y pegar el comando y actualizar los componentes.

    2. Asegúrate de tener kubectl instalado. Si necesitas instalar kubectl, ejecuta el siguiente comando:
      gcloud components install kubectl

Crea la infraestructura de VM y, de forma opcional, el clúster de administrador

Sigue estos pasos para configurar y ejecutar la secuencia de comandos. La secuencia de comandos que descargas y ejecutas proviene del repositorio anthos-samples. Si quieres obtener más información sobre la secuencia de comandos antes de ejecutarla, consulta la siguiente sección, Acerca de la secuencia de comandos.

  1. Configure las variables de entorno:

    export PROJECT_ID=PROJECT_ID
    export ADMIN_CLUSTER_NAME=ADMIN_CLUSTER_NAME
    export ON_PREM_API_REGION=ON_PREM_API_REGION
    export ZONE=ZONE
    
    • ON_PREM_API_REGION: Es la región de Google Cloud en la que se ejecuta y almacena los metadatos de la API de GKE On-Prem. Especifica us-central1 o alguna otra región compatible.

    • ZONE: Es la zona de Google Cloud en la que se crearán las VM de Compute Engine. Puedes usar us-central1-a o cualquiera de las otras zonas de Compute Engine.

  2. Configura el proyecto y la zona predeterminados:

    gcloud config set project $PROJECT_ID
    gcloud config set compute/zone $ZONE
    

    Si recibes un error PERMISSION_DENIED, vuelve a verificar el ID del proyecto que ingresaste. Si el ID del proyecto es correcto, ejecuta gcloud auth login para acceder a gcloud CLI con la cuenta que tiene acceso al proyecto.

  3. Obtén una lista de las versiones de GKE en Bare Metal que puedes instalar:

    gcloud container bare-metal admin-clusters query-version-config \
        --location=ON_PREM_API_REGION | grep 1.16
    

    Algunas instrucciones de este documento dependen de la API de GKE On-Prem, que admite un subconjunto de versiones disponibles de GKE en Bare Metal.

  4. Selecciona una versión del resultado del comando anterior y establécela en una variable de entorno:

    export BMCTL_VERSION=BMCTL_VERSION
    

    Te recomendamos que selecciones la versión compatible más alta para obtener las funciones y correcciones más recientes de GKE en Bare Metal.

  5. Clona el repositorio anthos-samples y cambia al directorio en el que se encuentra la secuencia de comandos:

    git clone https://github.com/GoogleCloudPlatform/anthos-samples
    cd anthos-samples/anthos-bm-gcp-bash
    
  6. Ejecute la secuencia de comandos:

    bash install_admin_cluster.sh
    
  7. Cuando se te solicite, ingresa un número para elegir el modo de instalación:

    • Ingresa 1 para que la secuencia de comandos configure la infraestructura de VM y, luego, instale el clúster de administrador.
    • Ingresa 2 para que la secuencia de comandos configure solo la infraestructura de la VM.
  8. Cuando se te solicite, confirma la selección.

La secuencia de comandos genera cada comando que ejecuta y el estado. Cuando finaliza, la secuencia de comandos genera lo siguiente en función de si elegiste instalar el clúster de administrador:

Se creó el clúster de administrador

✅ Installation complete. Please check the logs for any errors!!!
✅ If you do not see any errors in the output log, then you now have the following setup:

|---------------------------------------------------------------------------------------------------------|
| VM Name               | L2 Network IP (VxLAN) | INFO                                                    |
|---------------------------------------------------------------------------------------------------------|
| abm-admin-cluster-cp1 | 10.200.0.3            | Has control plane of admin cluster running inside       |
| abm-user-cluster-cp1  | 10.200.0.4            | 🌟 Ready for use as control plane for the user cluster  |
| abm-user-cluster-w1   | 10.200.0.5            | 🌟 Ready for use as worker for the user cluster         |
| abm-user-cluster-w2   | 10.200.0.6            | 🌟 Ready for use as worker for the user cluster         |
|---------------------------------------------------------------------------------------------------------|

Configurar solo VMs

|---------------------------------------------------------------------------------------------------------|
| VM Name               | L2 Network IP (VxLAN) | INFO                                                    |
|---------------------------------------------------------------------------------------------------------|
| abm-admin-cluster-cp1 | 10.200.0.3            | 🌟 Ready for use as control plane for the admin cluster |
| abm-user-cluster-cp1  | 10.200.0.4            | 🌟 Ready for use as control plane for the user cluster  |
| abm-user-cluster-w1   | 10.200.0.5            | 🌟 Ready for use as worker for the user cluster         |
| abm-user-cluster-w2   | 10.200.0.6            | 🌟 Ready for use as worker for the user cluster         |
|---------------------------------------------------------------------------------------------------------|

Acerca de la secuencia de comandos

Para obtener más información sobre install_admin_cluster.sh, haz clic en Acerca de la secuencia de comandos en la línea siguiente.

Acerca de la secuencia de comandos

La secuencia de comandos automatiza los siguientes pasos manuales:

  1. Crea una cuenta de servicio llamada baremetal-gcr y le otorga permisos adicionales a esa cuenta de servicio a fin de evitar necesitar varias cuentas de servicio para diferentes API y servicios.
  2. Habilita las siguientes APIs de Google Cloud:
      anthos.googleapis.com
      anthosaudit.googleapis.com
      anthosgke.googleapis.com
      cloudresourcemanager.googleapis.com
      connectgateway.googleapis.com
      container.googleapis.com
      gkeconnect.googleapis.com
      gkehub.googleapis.com
      gkeonprem.googleapis.com
      iam.googleapis.com
      logging.googleapis.com
      monitoring.googleapis.com
      opsconfigmonitoring.googleapis.com
      serviceusage.googleapis.com
      stackdriver.googleapis.com
      storage.googleapis.com
  3. Crea las siguientes VMs:
    • Una VM para la estación de trabajo de administrador La estación de trabajo de administrador tendrá acceso a todos los demás nodos del clúster mediante SSH.
    • Una VM para el nodo del plano de control del clúster de administrador
    • Dos VMs para los nodos trabajadores del clúster de usuario.
    • Una VM para el nodo del plano de control del clúster de usuario
    La secuencia de comandos también verifica que SSH esté habilitado en todas las VMs.
  4. Crea una red de superposición de LAN extensible virtual (VXLAN) para la conectividad de capa 2 entre las VMs. La VXLAN no es persistente, por lo que si reinicias una instancia de VM, la red se destruirá. La red está configurada para estar en la subred 10.200.0.0/24. La conectividad de capa 2 es un requisito para el balanceador de cargas empaquetado.
  5. Instala las siguientes herramientas en la estación de trabajo de administrador:
    • bmctl
    • kubectl
    • Docker

    La secuencia de comandos también descarga la clave de la cuenta de servicio baremetal-gcr en la estación de trabajo de administrador.

  6. Garantiza que root@10.200.0.x de la estación de trabajo de administrador funcione mediante las siguientes tareas:
    1. Genera una clave SSH nueva en la estación de trabajo de administrador.
    2. Agrega la clave pública a todas las demás VMs en la implementación.
  7. De forma opcional, la secuencia de comandos crea el clúster de administrador con el siguiente archivo de configuración:
      gcloud compute ssh root@"$VM_WS" --zone "${ZONE}" <<EOF
    set -x
    export PROJECT_ID=\$(gcloud config get-value project)
    ADMIN_CLUSTER_NAME=\$(curl http://metadata.google.internal/computeMetadata/v1/instance/attributes/cluster_id -H "Metadata-Flavor: Google")
    BMCTL_VERSION=\$(curl http://metadata.google.internal/computeMetadata/v1/instance/attributes/bmctl_version -H "Metadata-Flavor: Google")
    export ADMIN_CLUSTER_NAME
    export BMCTL_VERSION
    bmctl create config -c \$ADMIN_CLUSTER_NAME
    cat > bmctl-workspace/\$ADMIN_CLUSTER_NAME/\$ADMIN_CLUSTER_NAME.yaml << EOB
    ---
    gcrKeyPath: /root/bm-gcr.json
    sshPrivateKeyPath: /root/.ssh/id_rsa
    gkeConnectAgentServiceAccountKeyPath: /root/bm-gcr.json
    gkeConnectRegisterServiceAccountKeyPath: /root/bm-gcr.json
    cloudOperationsServiceAccountKeyPath: /root/bm-gcr.json
    ---
    apiVersion: v1
    kind: Namespace
    metadata:
      name: cluster-\$ADMIN_CLUSTER_NAME
    ---
    apiVersion: baremetal.cluster.gke.io/v1
    kind: Cluster
    metadata:
      name: \$ADMIN_CLUSTER_NAME
      namespace: cluster-\$ADMIN_CLUSTER_NAME
    spec:
      type: admin
      anthosBareMetalVersion: \$BMCTL_VERSION
      gkeConnect:
        projectID: \$PROJECT_ID
      controlPlane:
        nodePoolSpec:
          clusterName: \$ADMIN_CLUSTER_NAME
          nodes:
          - address: 10.200.0.3
      clusterNetwork:
        pods:
          cidrBlocks:
          - 192.168.0.0/16
        services:
          cidrBlocks:
          - 10.96.0.0/20
      loadBalancer:
        mode: bundled
        ports:
          controlPlaneLBPort: 443
        vips:
          controlPlaneVIP: 10.200.0.48
      clusterOperations:
        # might need to be this location
        location: us-central1
        projectID: \$PROJECT_ID
      storage:
        lvpNodeMounts:
          path: /mnt/localpv-disk
          storageClassName: node-disk
        lvpShare:
          numPVUnderSharedPath: 5
          path: /mnt/localpv-share
          storageClassName: local-shared
      nodeConfig:
        podDensity:
          maxPodsPerNode: 250
    EOB
    
    bmctl create cluster -c \$ADMIN_CLUSTER_NAME
    EOF

    Si elegiste que la secuencia de comandos cree el clúster de administrador, la secuencia de comandos usa SSH para acceder a la estación de trabajo de administrador como usuario raíz. A continuación, la secuencia de comandos ejecuta la herramienta de línea de comandos de bmctl para crear el clúster de administrador. Esta es una de las herramientas que puedes usar para crear clústeres de administrador.

    Cuando GKE en Bare Metal crea clústeres, implementa un clúster de Kubernetes en Docker (tipo) en la estación de trabajo de administrador. Este clúster de arranque aloja los controladores de Kubernetes necesarios para crear clústeres y se usa en la creación del clúster de administrador. Después de la creación, los controladores relevantes se mueven del clúster de arranque al clúster de administrador. Por último, a menos que especifiques lo contrario, el clúster de arranque se quita cuando su creación se completa de forma correcta. El clúster de arranque requiere que Docker extraiga imágenes de contenedor.

Crea el clúster de administrador (opcional)

Si la secuencia de comandos creó el clúster de administrador, pasa a la siguiente sección Verifica el clúster de administrador. De lo contrario, sigue los pasos de esta sección para crear un clúster de arranque y el clúster de administrador.

Antes de crear el clúster de administrador, debes ejecutar el comando bmctl register bootstrap en la estación de trabajo de administrador. Este comando implementa un clúster temporal de Kubernetes en Docker (tipo) en la estación de trabajo de administrador. Este clúster de arranque aloja los controladores de Kubernetes necesarios para crear el clúster de administrador. Cuando crees el clúster de administrador, los controladores del clúster de arranque aprovisionarán nodos, ejecutarán verificaciones previas y registrarán el clúster de administrador en la flota. El clúster de arranque se borra de forma automática después de que se crea el clúster de forma correcta.

Console

  1. En la consola, ve a la página Crea un clúster de GKE en Bare Metal.

    Ir a Crea un clúster de GKE en Bare Metal

  2. Asegúrate de seleccionar PROJECT_ID en la lista de proyectos.

  3. En la barra de navegación izquierda, haz clic en Instalar entorno de arranque.

  4. Ingresa ADMIN_CLUSTER_NAME como el nombre del clúster de administrador. Ten en cuenta que el nombre del clúster de arranque se deriva cuando se antepone bootstrap- al nombre del clúster de administrador.

  5. Selecciona VERSION como la versión del clúster de administrador. La secuencia de comandos descargó esta versión de la herramienta de línea de comandos de bmctl en la estación de trabajo de administrador. La versión de GKE en Bare Metal que instales debe coincidir con la versión bmctl.

  6. En el campo Ubicación de la API de Google Cloud, selecciona ON_PREM_API_REGION de la lista. Esta configuración especifica la región en la que se ejecuta la API de GKE On-Prem y la región en la que se almacena lo siguiente:

    • Los metadatos del clúster que necesita la API de GKE On-Prem para administrar
    • 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 juntos identifican de forma única el clúster en Google Cloud.

Usa los pasos de la siguiente sección en lugar de los que se muestran en la consola para crear el clúster de arranque. Deja la página de la consola que se muestra porque volverás allí para crear el clúster de administrador.

gcloud CLI

Abre una nueva ventana de terminal. Usarás la segunda ventana de la terminal para conectarte a la estación de trabajo de administrador a fin de crear el clúster de arranque. Usarás la primera ventana de la terminal a fin de ejecutar el comando de gcloud CLI para crear el clúster de administrador.

Crea el clúster de arranque

Sigue estos pasos en la estación de trabajo de administrador.

  1. Usa SSH para acceder a la estación de trabajo de administrador como raíz:

    gcloud compute ssh root@abm-ws --zone ZONE
    

    Puedes ignorar cualquier mensaje sobre la actualización de la VM y completar este instructivo. Si planeas conservar las VM como entorno de prueba, es posible que desees actualizar el SO o actualizar a la siguiente versión, como se describe en la documentación de Ubuntu.

  2. Establece tus credenciales de usuario como credenciales predeterminadas de la aplicación (ADC):

    gcloud auth application-default login
    

    Sigue las instrucciones para seleccionar tu Cuenta de Google para ADC.

  3. Crea el clúster de arranque.

    bmctl register bootstrap \
      --ssh-key=/root/.ssh/id_rsa \
      --name=bootstrap-ADMIN_CLUSTER_NAME \
      --project-id=PROJECT_ID
    

Después de que bmctl cree correctamente el clúster de arranque, 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..

Crea el clúster de administrador

Console

  1. En la página Instalar entorno de arranque en la sección Entorno de arranque desde la estación de trabajo de administrador, haz clic en Verificar conexión.

    Si se ejecuta de forma correcta, la consola mostrará Conexión establecida.

    La conexión con el clúster de arranque debe establecerse antes de continuar. Si no se estableció la conexión, verifica los argumentos que especificaste para el comando bmctl register bootstrap:

    • Asegúrate de que el valor de --name coincida con el Nombre de arranque derivado que se muestra en la sección Conceptos básicos del entorno de arranque.

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

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

  2. Haz clic en Herramientas de redes en la barra de navegación izquierda.

  3. En la sección Plano de control, ingresa lo siguiente en el campo IP 1 del nodo del plano de control:

    10.200.0.3
    

    Esta es la dirección IP de la VM abm-admin-cluster-cp en la VXLAN que creó la secuencia de comandos.

  4. En la sección Balanceador de cargas, asegúrate de que esté seleccionada la opción Bundled.

  5. En la sección IP virtuales (VIP), ingresa lo siguiente en el campo VIP del plano de control:

    10.200.0.48
    
  6. Haz clic en Verificar y crear.

    La consola muestra mensajes de estado mientras verifica la configuración y crea el clúster.

gcloud CLI

  1. Asegúrate de que las variables de entorno que definiste antes tengan los valores correctos. Aunque el comando de ejemplo usa marcadores de posición, deben coincidir con las variables de entorno que usó la secuencia de comandos.

    echo $PROJECT_ID
    echo $ADMIN_CLUSTER_NAME
    echo $ON_PREM_API_REGION
    echo $BMCTL_VERSION
    
  2. Confirma que el clúster de arranque se haya registrado como miembro de la flota:

    gcloud container fleet memberships list \
      --project=PROJECT_ID
    

    Si el clúster de arranque no aparece en la lista, verifica el nombre del clúster de arranque y el ID del proyecto que especificaste en bmctl register bootstrap. Si necesitas cambiar el nombre del clúster de arranque o el ID del proyecto, ingresa Ctrl-C para salir de bmctl register bootstrap y volver a ejecutar el comando.

  3. Crea el clúster de administrador con el balanceador de cargas en paquetes:

    gcloud container bare-metal admin-clusters create ADMIN_CLUSTER_NAME \
      --project=PROJECT_ID \
      --location=ON_PREM_API_REGION \
      --version=BMCTL_VERSION \
      --max-pods-per-node=110 \
      --control-plane-vip=10.200.0.48 \
      --control-plane-load-balancer-port=443 \
      --control-plane-node-configs node-ip=10.200.0.3 \
      --island-mode-service-address-cidr-blocks=10.96.0.0/20 \
      --island-mode-pod-address-cidr-blocks=192.168.0.0/16 \
      --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
    

    En el comando anterior, ocurre lo siguiente:

    • --control-plane-vip: Se establece en 10.200.0.48. Esta es la IP virtual (VIP) en el balanceador de cargas del servidor de la API de Kubernetes del clúster.

    • --control-plane-node-configs: node-ip se establece en 10.200.0.3. Esta es la dirección IP de la VM abm-admin-cluster-cp en la VXLAN creada por la secuencia de comandos.

    Para obtener una lista completa de las marcas y sus descripciones, consulta la referencia de la CLI de gcloud.

    El resultado del comando es similar al 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 string operation-1679543737105-5f7893fd5bae9-942b3f97-75e59179 es la OPERATION_ID de la operación de larga duración. Para averiguar el estado de la operación, ejecuta el siguiente comando en otra ventana de terminal:

    gcloud container bare-metal operations describe OPERATION_ID \
      --project=PROJECT_ID \
      --location=ON_PREM_API_REGION
    

Los detalles sobre el proceso de creación del clúster se muestran en tu estación de trabajo de administrador. Antes de crear el clúster, bmctl ejecuta una serie de comprobaciones preliminares para comprobar la configuración. Si se aprueban las comprobaciones preliminares, verás algo como 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.

Verifica el clúster de administrador

Puedes encontrar el archivo kubeconfig del clúster de administrador en la estación de trabajo de administrador en el directorio bmctl-workspace de la cuenta raíz. Para verificar tu implementación, completa los siguientes pasos.

  1. Si la secuencia de comandos creó el clúster de administrador, usa SSH para acceder a la estación de trabajo de administrador como raíz:

    gcloud compute ssh root@abm-ws --zone ZONE
    

    Puedes ignorar cualquier mensaje sobre la actualización de la VM y completar este instructivo. Si planeas conservar las VM como entorno de prueba, es posible que desees actualizar el SO o actualizar a la siguiente versión, como se describe en la documentación de Ubuntu.

  2. Establece la variable de entorno KUBECONFIG con la ruta de acceso al archivo de configuración del clúster para ejecutar los comandos de kubectl en el clúster.

    export clusterid=ADMIN_CLUSTER_NAME
    export KUBECONFIG=$HOME/bmctl-workspace/$clusterid/$clusterid-kubeconfig
    kubectl get nodes
    

    El resultado es similar al siguiente:

    NAME                   STATUS   ROLES                  AGE   VERSION
    abm-admin-cluster-cp   Ready    control-plane,master   91m   v1.24.2-gke.1900
    
  3. Establece el contexto actual en una variable de entorno:

    export CONTEXT="$(kubectl config current-context)"
    
  4. Ejecuta el siguiente comando gcloud: Este comando realiza las siguientes acciones:

    • Otorga a tu cuenta de usuario la función clusterrole/cluster-admin de Kubernetes en el clúster.
    • Configura el clúster para que puedas ejecutar comandos kubectl en tu computadora local sin tener que establecer una conexión SSH a la estación de trabajo de administrador.
    • Te permite acceder al clúster en la consola mediante tu identidad de Google.

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

    gcloud container fleet memberships generate-gateway-rbac  \
        --membership=ADMIN_CLUSTER_NAME \
        --role=clusterrole/cluster-admin \
        --users=YOUR_EMAIL_ADDRESS \
        --project=PROJECT_ID \
        --kubeconfig=$KUBECONFIG \
        --context=$CONTEXT\
        --apply
    

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

    Validating input arguments.
    Specified Cluster Role is: clusterrole/cluster-admin
    Generated RBAC policy is:
    --------------------------------------------
    ...
    
    Applying the generate RBAC policy to cluster with kubeconfig: /root/bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME-kubeconfig, context: ADMIN_CLUSTER_NAME-admin@ADMIN_CLUSTER_NAME
    Writing RBAC policy for user: YOUR_EMAIL_ADDRESS to cluster.
    Successfully applied the RBAC policy to cluster.
    
  5. Cuando termines de explorar, ingresa exit para salir de la estación de trabajo de administrador.

  6. Ejecuta el siguiente comando en tu computadora local para obtener la entrada de kubeconfig que puede acceder al clúster a través de la puerta de enlace de conexión:

    gcloud container fleet memberships get-credentials ADMIN_CLUSTER_NAME
    

    El resultado es similar al siguiente:

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

    kubectl get nodes
    

    El resultado es similar al siguiente:

    NAME                   STATUS   ROLES                  AGE   VERSION
    abm-admin-cluster-cp   Ready    control-plane,master   94m   v1.24.2-gke.1900
    

En GKE en Bare Metal 1.16 y versiones posteriores, el clúster se inscribe de forma automática en la API de GKE On-Prem. Esto te permite usar gcloud CLI y la consola para actualizar el clúster de administrador.

Crea el clúster de usuario

Cuando la secuencia de comandos creó la L2 VXLAN para las VM, asignó las siguientes direcciones IP en la red 10.200.0.0/24. Usarás estas direcciones IP cuando establezcas la configuración de la red y del grupo de nodos para el clúster de usuario.

Nombre de VM IP de la red Descripción del nodo
abm-admin-cluster-cp1 10.200.0.3 Nodo del plano de control para el clúster de administrador
abm-user-cluster-cp1 10.200.0.4 Nodo del plano de control para el clúster de usuario
abm-user-cluster-w1 10.200.0.5 Nodo trabajador para el clúster de usuario
abm-user-cluster-w2 10.200.0.6 Otro nodo trabajador para el clúster de usuario

Puedes usar la consola de Google Cloud, Google Cloud CLI o Terraform para crear el clúster de usuario.

Console

Sigue estos pasos para crear un clúster de usuario en la consola:

  1. En la consola, ve a la página Crea un clúster de GKE en Bare Metal.

    Ir a Crea un clúster de GKE en Bare Metal

  2. Asegúrate de que el proyecto de Google Cloud en el que creaste el clúster de administrador esté seleccionado.

  3. En Elige tu tipo de clúster, selecciona Crear un clúster de usuario para un clúster de administrador existente.

  4. Haz clic en Siguiente.

Conceptos básicos del clúster

  1. Ingresa un nombre para el clúster de usuario o usa el predeterminado.

  2. Asegúrate de que esté seleccionado el clúster de administrador recién creado. Puedes usar los valores predeterminados para el resto de la configuración en esta página.

  3. Haz clic en Herramientas de redes en la barra de navegación izquierda.

Redes

  1. En la sección Plano de control, ingresa lo siguiente en el campo IP 1 del nodo del plano de control:

    10.200.0.4
    

    Esta es la dirección IP de la VM abm-user-cluster-cp1 en la VXLAN creada por la secuencia de comandos.

  2. En la sección Balanceador de cargas, usa el balanceador de cargas predeterminado, Bundled with MetalLB.

  3. En la sección Nuevo grupo de direcciones, ingresa el siguiente rango de direcciones IP en el campo Rango de direcciones IP 1:

    10.200.0.51-10.200.0.70
    
  4. Haz clic en Listo.

  5. En la sección IP virtuales, ingresa la siguiente dirección IP en el campo VIP del plano de control:

    10.200.0.50
    
  6. Ingresa la siguiente dirección IP para la VIP de Ingress:

    10.200.0.51
    
  7. Usa las direcciones IP predeterminadas en la sección CIDR de servicio y Pod.

  8. Haz clic en grupo predeterminado en la barra de navegación izquierda.

Crear un grupo de nodos

Tu clúster debe tener al menos un grupo de nodos para los nodos trabajadores. Un grupo de nodos es una plantilla para los grupos de nodos trabajadores que se crearon en este clúster.

Ingresa la siguiente dirección IP en el campo Dirección de nodos 1:

10.200.0.5

Esta es la dirección IP de la VM abm-user-cluster-w1 en la VXLAN creada por la secuencia de comandos.

Crea el clúster

  1. Haz clic en Verificar y crear para crear el clúster de usuario.

    La creación del clúster de usuario tarda 15 minutos o más. La consola muestra mensajes de estado mientras verifica la configuración y crea el clúster.

    Si hay un problema con la configuración, la consola muestra un mensaje de error que debería ser lo suficientemente claro como para que lo soluciones y, luego, intentes crear el clúster.

    Si deseas ver información adicional sobre el proceso de creación, haz clic en Mostrar detalles para mostrar un panel lateral. Haz clic en para cerrar el panel de detalles.

    Cuando se cree el clúster, se mostrará Cluster status: running.

    Clúster de capturas de pantalla listo

  2. Después de crear el clúster, haz clic en Clústeres para volver a la página Clústeres.

gcloud CLI

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

gcloud container bare-metal clusters create

Después de crear el clúster, debes crear al menos un grupo de nodos con el siguiente comando:

gcloud container bare-metal node-pools create

Para crear el clúster de usuario, haz lo siguiente:

  1. Asegúrate de que las variables de entorno que definiste antes tengan los valores correctos. Aunque el comando de ejemplo usa marcadores de posición, deben coincidir con las variables de entorno que usó la secuencia de comandos.

    echo $PROJECT_ID
    echo $ADMIN_CLUSTER_NAME
    echo $ON_PREM_API_REGION
    echo $BMCTL_VERSION
    
  2. Ejecuta el siguiente comando para crear el clúster de usuario. Reemplaza lo siguiente:

    • USER_CLUSTER_NAME: Es el nombre del clúster.

    • Asegúrate de que --admin-users esté configurado como la dirección de correo electrónico asociada a tu Cuenta de Google para que puedas administrar el clúster.

    El resto de los valores de marca se completaron de forma automática. Desplázate si es necesario para verificar que la marca --admin-cluster-membership tenga el valor correcto para el nombre del clúster de administrador, que es el último segmento en el nombre de membresía especificado por completo.

    gcloud container bare-metal clusters create USER_CLUSTER_NAME \
      --project=PROJECT_ID \
      --admin-cluster-membership=projects/PROJECT_ID/locations/global/memberships/ADMIN_CLUSTER_NAME \
      --location=ON_PREM_API_REGION \
      --version=BMCTL_VERSION \
      --admin-users=YOUR_EMAIL_ADDRESS \
      --metal-lb-address-pools='pool=lb-pool-1,manual-assign=True,addresses=10.200.0.51-10.200.0.70' \
      --control-plane-node-configs='node-ip=10.200.0.4' \
      --control-plane-vip=10.200.0.50 \
      --control-plane-load-balancer-port=443 \
      --ingress-vip=10.200.0.51 \
      --island-mode-service-address-cidr-blocks=10.96.0.0/20 \
      --island-mode-pod-address-cidr-blocks=192.168.0.0/16 \
      --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
    

En la siguiente lista, se describen las marcas:

  • --project: El ID del proyecto en el que se registrará el clúster de usuario. Este proyecto se conoce como el proyecto host de la flota.

  • --admin-cluster-membership: El nombre del clúster de administrador especificado por completo que identifica el clúster de administrador en la flota.

  • --location: Es la región de Google Cloud en la que la API de GKE On-Prem ejecuta y almacena sus metadatos.

  • --version: Es la versión de GKE en Bare Metal.

  • --admin-users: Incluye tu dirección de correo electrónico para que se te otorguen las políticas de control de acceso basado en funciones (RBAC) de Kubernetes que te brindan acceso administrativo completo al clúster.

  • --metal-lb-address-pools: Es la configuración del grupo de direcciones para el balanceador de cargas agrupado de MetalLB. El rango de direcciones IP debe estar en la red 10.200.0.0/24 que creó la secuencia de comandos. El rango de direcciones no debe contener las direcciones IP asignadas a las VM ni la VIP del plano de control. Sin embargo, ten en cuenta que la VIP de entrada debe estar en este rango de direcciones.

  • --control-plane-node-configs: Es la configuración del nodo del plano de control para el clúster de usuario. El valor de node-ip es 10.200.0.4, que es la dirección IP que la secuencia de comandos asignó a la VM abm-user-cluster-cp1.

  • --control-plane-vip: Es la IP virtual del plano de control. El valor 10.200.0.50 está en la red 10.200.0.0/24 que creó la secuencia de comandos, pero no se superpone con el rango de direcciones IP que se usó para los grupos de direcciones del balanceador de cargas de MetalLB.

  • --control-plane-load-balancer-port: Es el puerto en el que el balanceador de cargas entrega el plano de control. Aunque puedes configurar otro valor, el puerto 443 es el estándar que se usa para las conexiones HTTPS.

  • --ingress-vip: La IP virtual para el servicio de entrada Esta dirección IP debe estar en el rango de direcciones IP que se usa para los grupos de direcciones del balanceador de cargas de MetalLB.

  • --island-mode-service-address-cidr-blocks: Es un rango de direcciones IP, en formato CIDR, que se usará para los servicios en el clúster de usuario. En el comando de ejemplo, se usó 10.96.0.0/20, que es el valor predeterminado que proporciona la consola. El rango CIDR debe estar entre /24 y /12, en el que /12 proporciona la mayor cantidad de direcciones IP. Te recomendamos que uses un rango en el espacio de direcciones IP para Internet privada, como se define en RFC 1918.

  • --island-mode-pod-address-cidr-blocks: Es un rango de direcciones IP, en formato CIDR, que se usará para los Pods en el clúster de usuario. En el comando de ejemplo, se usó 192.168.0.0/16, que es el valor predeterminado que proporciona la consola. El rango CIDR debe estar entre /18 y /8, en el que /8 proporciona la mayor cantidad de direcciones IP. Te recomendamos que uses un rango en el espacio de direcciones IP para Internet privada, como se define en RFC 1918.

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

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

  • --lvp-node-mounts-config-path: Esta es la ruta de la máquina anfitrión en la que se pueden descubrir los discos activados. Se crea un PersistentVolume (PV) local para cada activación.

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

Después de ejecutar el comando, verás un resultado como el siguiente:

Waiting for operation [projects/PROJECT_ID/locations/ON_PREM_API_REGION/operations/operation-1678304606537-5f668bde5c57e-341effde-b612ff8a] to complete...

En el resultado de ejemplo, la string operation-1678304606537-5f668bde5c57e-341effde-b612ff8a es la OPERATION_ID de la operación de larga duración.

Para averiguar el estado de la operación, copia el OPERATION_ID de tu resultado en el siguiente comando. Abre otra ventana de terminal y ejecuta el comando.

gcloud container bare-metal operations describe OPERATION_ID \
    --project=PROJECT_ID \
    --location=ON_PREM_API_REGION

La creación del clúster tarda alrededor de 15 minutos o más. Mientras se crea el clúster, puedes ejecutar el comando anterior de vez en cuando para obtener el estado actual.

Cuando se cree el clúster, verás un resultado como el siguiente:

Created Anthos cluster on bare metal [https://gkeonprem.googleapis.com/v1/projects/PROJECT_ID/locations/ON_PREM_API_REGION/bareMetalClusters/USER_CLUSTER_NAME].

Crear un grupo de nodos

Después de crear el clúster de forma correcta, ejecuta el siguiente comando para crear un grupo de nodos. Reemplaza NODE_POOL_NAME por un nombre para el grupo de nodos y asegúrate de que el marcador de posición de la marca --cluster todavía esté configurado con el nombre del clúster de usuario.

gcloud container bare-metal node-pools create NODE_POOL_NAME \
  --cluster=USER_CLUSTER_NAME \
  --project=PROJECT_ID \
  --location=ON_PREM_API_REGION \
  --node-configs='node-ip=10.200.0.5'
  • -node-configs: El valor asignado a node-ip es la dirección IP de la VM abm-user-cluster-w1 en la VXLAN creada por la secuencia de comandos.

Después de ejecutar el comando, verás un resultado como el siguiente:

Waiting for operation [projects/PROJECT_ID/locations/ON_PREM_API_REGION/operations/operation-1678308682052-5f669b0d132cb-6ebd1c2c-816287a7] to complete...

La creación del grupo de nodos tarda alrededor de 5 minutos o menos. Cuando se cree el grupo de nodos, verás un resultado como el siguiente:

Created node pool in Anthos cluster on bare metal [https://gkeonprem.googleapis.com/v1/projects/PROJECT_ID/locations/ON_PREM_API_REGION/bareMetalClusters/USER_CLUSTER_NAME/bareMetalNodePools/NODE_POOL_NAME].

Otros comandos del clúster de usuario

Además de crear clústeres, hay otros comandos de gcloud CLI que puedes ejecutar, por ejemplo:

  • Para generar una lista de los clústeres de usuario, haz lo siguiente:
gcloud container bare-metal clusters list \
    --project=PROJECT_ID \
    --location=ON_PREM_API_REGION
  • Para describir un clúster de usuario, haz lo siguiente:
gcloud container bare-metal clusters describe USER_CLUSTER_NAME \
    --project=PROJECT_ID \
    --location=ON_PREM_API_REGION

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

Otros comandos del grupo de nodos

Además de crear grupos de nodos, hay otros comandos de gcloud CLI que puedes ejecutar, por ejemplo:

  • Para enumerar los grupos de nodos, haz lo siguiente:
gcloud container bare-metal node-pools list \
    --cluster=USER_CLUSTER_NAME \
    --project=PROJECT_ID \
    --location=ON_PREM_API_REGION
  • Para describir un grupo de nodos, haz lo siguiente:
gcloud container bare-metal node-pools describe NODE_POOL_NAME \
    --cluster=USER_CLUSTER_NAME \
    --project=PROJECT_ID \
    --location=ON_PREM_API_REGION

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

Terraform

Puedes usar la siguiente muestra de configuración básica para crear un clúster de usuario con el balanceador de cargas agrupado de MetalLB. Para obtener más información, consulta la documentación de referencia de google_gkeonprem_bare_metal_cluster.

  1. En el directorio en el que clonaste anthos-samples, cambia al directorio en el que se encuentra la muestra de Terraform:

    cd anthos-samples/anthos-onprem-terraform/abm_user_cluster_metallb
    

    En la muestra, se proporciona un archivo de variables de ejemplo para pasar a main.tf.

  2. Crea una copia del archivo terraform.tfvars.sample:

    cp terraform.tfvars.sample terraform.tfvars
    
    
    project_id          = "PROJECT_ID"
    region              = "ON_PREM_API_REGION"
    admin_cluster_name  = "ADMIN_CLUSTER_NAME"
    bare_metal_version  = "VERSION"
    admin_user_emails   = ["YOUR_EMAIL_ADDRESS", "ADMIN_2_EMAIL_ADDRESS"]
    cluster_name        = "abm-user-cluster-metallb"
    control_plane_ips   = ["10.200.0.4"]
    worker_node_ips     = ["10.200.0.5", "10.200.0.6"]
    control_plane_vip   = "10.200.0.50"
    ingress_vip         = "10.200.0.51"
    lb_address_pools    = [
        { name = "lbpool_1", addresses = ["10.200.0.51-10.200.0.70"] }
    ]
    
  3. Modifica los valores de los parámetros en terraform.tfvars y guarda el archivo.

    En la siguiente lista, se describen las variables:

    • project_id: El ID del proyecto en el que se registrará el clúster de usuario. Este proyecto se conoce como el proyecto host de la flota.

    • region: Es la región de Google Cloud que configuraste al comienzo del instructivo. Ejecuta echo $ON_PREM_API_REGION para obtener el valor.

    • admin_cluster_name: Es el nombre del clúster de administrador que configuraste al comienzo de este instructivo. Ejecuta echo $ADMIN_CLUSTER_NAME para obtener el valor.

    • bare_metal_version: Es la versión de GKE en Bare Metal para el clúster de usuario. Para usar la misma versión que usaste en el clúster de administrador, ejecuta echo $BMCTL_VERSION para obtener el valor. Si lo prefieres, puedes especificar una versión que no sea más de una versión secundaria anterior a la versión del clúster de administrador. La versión del clúster de usuario no puede ser superior a la versión del clúster de administrador.

    • cluster_name: Puedes usar el nombre en el archivo TVARS del clúster de usuario o especificar el nombre que desees. No se puede cambiar el nombre después de crear el clúster.

    • admin_user_emails: Una lista de direcciones de correo electrónico de los usuarios a los que se les otorgarán privilegios de administrador en el clúster. Asegúrate de agregar tu dirección de correo electrónico para que puedas administrar el clúster.

      Cuando se crea el clúster, la API de GKE On-Prem aplica las políticas de control de acceso basado en funciones (RBAC) de Kubernetes al clúster para otorgar a los usuarios administradores la función clusterrole/cluster-admin de Kubernetes, que proporciona acceso completo a todos los recursos del clúster en todos los espacios de nombres. Esto también permite a los usuarios acceder a la consola mediante su identidad de Google.

    Usa los valores predeterminados definidos en terraform.tvars para las variables restantes. La secuencia de comandos usó estos valores cuando creó las VMs y el clúster de administrador.

    • control_plane_ips: Una lista de una o más direcciones IPv4 para los nodos del plano de control. Usa el valor predeterminado, que es la dirección IP que la secuencia de comandos asignó a la VM abm-user-cluster-cp1.

    • worker_node_ips: Es una lista de una o más direcciones IPv4 para las máquinas de nodos trabajadores. Usa los valores predeterminados, que son las direcciones IP que la secuencia de comandos asignó a las VM abm-user-cluster-w1 y abm-user-cluster-w2.

    • control_plane_vip: La IP virtual (VIP) del plano de control. Usa el valor predeterminado, 10.200.0.50, que está en la red 10.200.0.0/24 que creó la secuencia de comandos. Ten en cuenta que esta dirección IP no se superpone con el rango de direcciones IP que se usa para los grupos de direcciones del balanceador de cargas de MetalLB.

    • ingress_vip: La dirección IP virtual que se configurará en el balanceador de cargas para el proxy de entrada. Usa el valor predeterminado, 10.200.0.51, que está en la red 10.200.0.0/24 que creó la secuencia de comandos. Ten en cuenta que esta dirección IP se encuentra en el rango de direcciones IP que se usa para los grupos de direcciones del balanceador de cargas de MetalLB.

    • lb_address_pools: Es una lista de mapas que definen los grupos de direcciones para el balanceador de cargas de MetalLB. Usa el valor predeterminado.

  4. Guarda los cambios en terraform.tfvars.

  5. Inicializa y crea terraform plan:

    terraform init
    

    Terraform instala las bibliotecas necesarias, como el proveedor de Google Cloud.

  6. Revisa la configuración y realiza cambios si es necesario:

    terraform plan
    
  7. Aplica el plan de Terraform para crear el clúster de usuario:

    terraform apply
    

    La creación del clúster de usuario tarda 15 minutos o más. Puedes ver el clúster en la consola de Google Cloud en la página Clústeres de GKE.

Conéctate al clúster de usuario

Cuando creas un clúster de usuario con la consola o gcloud CLI, este se configura con las mismas políticas de control de acceso basado en funciones (RBAC) de Kubernetes que configuraste para el clúster de administrador cuando ejecutaste gcloud container fleet memberships generate-gateway-rbac. Estas políticas de RBAC te permiten conectarte al clúster mediante tu Google Cloud Identity, que es la dirección de correo electrónico asociada con tu cuenta de Google Cloud. Estas políticas de RBAC te permiten acceder a la consola sin ninguna configuración adicional.

Conéctate al clúster en la consola

Si usaste gcloud CLI o Terraform para crear el clúster de usuario, ve a la página Clústeres de GKE en la consola:

Ir a los clústeres de GKE

Asegúrate de que el proyecto en el que creaste el clúster de usuario esté seleccionado. Deberías ver el clúster de administrador y de usuario en la lista.

Observa que el clúster de usuario tiene Bare metal: User en la columna Type. Esto indica que la API de GKE On-Prem administra el clúster.

Si usaste la secuencia de comandos para crear el clúster de administrador, tiene Externo en la columna Tipo. Esto indica que la API de GKE On-Prem no administra el clúster. Puedes configurar el clúster de administrador para que lo gestione la API de GKE On-Prem después de crearlo.

Lista de clústeres de capturas de pantalla

Para acceder a un clúster, haz lo siguiente:

  1. Haz clic en el vínculo del nombre del clúster y, en el panel lateral, haz clic en Login.

  2. Selecciona Usa tu identidad de Google para acceder

  3. Haz clic en Login.

Repite los mismos pasos para acceder al clúster de administrador.

Lista de clústeres de capturas de pantalla

Conéctate al clúster en la línea de comandos

La API de GKE On-Prem configura las políticas de RBAC por ti como creador del clúster de usuario. Estas políticas te permiten ejecutar comandos kubectl en tu escritorio local mediante la puerta de enlace de conexión kubeconfig.

En una computadora local:

  1. Obtén la entrada kubeconfig que puede acceder al clúster a través de la puerta de enlace de conexión.

    gcloud container fleet memberships get-credentials USER_CLUSTER_NAME
    

    El resultado es similar al siguiente:

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

    kubectl get nodes
    

    El resultado es similar al siguiente:

    NAME                  STATUS   ROLES                  AGE     VERSION
    abm-user-cluster-cp   Ready    control-plane,master   14m     v1.24.2-gke.1900
    abm-user-cluster-w1   Ready    worker                 8m28s   v1.24.2-gke.1900
    

Agrega otro grupo de nodos al clúster de usuario

Console

  1. En la consola, ve a la página Clústeres de GKE.

    Ir a los clústeres de GKE

  2. En la lista de clústeres, haz clic en el nombre del clúster y, luego, en Más detalles en el panel Detalles.

  3. Haz clic en la pestaña Nodos.

  4. Haz clic en Agregar grupo de nodos.

  5. Ingresa un nombre para el grupo de nodos.

  6. En el campo Dirección de nodos 1, ingresa la siguiente dirección IP:

    10.200.0.6
    

    Esta es la dirección IP de la VM abm-user-cluster-w2 que creó la secuencia de comandos.

  7. Haz clic en Create.

  8. Vuelve a hacer clic en la pestaña Nodos si es necesario.

  9. El nuevo grupo de nodos muestra el estado Conciliando.

  10. Haz clic en en la esquina superior derecha para ver el estado de la creación del grupo de nodos. Es posible que debas actualizar la página para ver el estado actualizado en la lista de grupos de nodos.

gcloud CLI

Ejecuta el siguiente comando para crear otro grupo de nodos. Reemplaza NODE_POOL_NAME_2 por un nombre para el grupo de nodos y asegúrate de que el marcador de posición de la marca --cluster todavía esté configurado con el nombre del clúster de usuario.

gcloud container bare-metal node-pools create NODE_POOL_NAME_2 \
  --cluster=USER_CLUSTER_NAME \
  --project=PROJECT_ID \
  --location=ON_PREM_API_REGION \
  --node-configs='node-ip=10.200.0.6'
  • -node-configs: El valor asignado a node-ip es la dirección IP de la VM abm-user-cluster-w2 en la VXLAN creada por la secuencia de comandos.

Terraform

Si creaste el clúster con Terraform, este se creó con dos nodos, por lo que no hay VM adicionales en VXLAN disponibles para agregar otro nodo. Para obtener información sobre cómo agregar grupos de nodos, consulta la documentación de referencia de google_gkeonprem_bare_metal_cluster.

También puedes verificar el nodo nuevo con kubectl. Primero, debes ejecutar el comando gcloud container fleet memberships get-credentials, como se mostró antes para recuperar la configuración del clúster:

kubectl get nodes

El resultado es similar al siguiente:

NAME                  STATUS   ROLES                  AGE     VERSION
abm-user-cluster-cp   Ready    control-plane,master   24m   v1.24.2-gke.1900
abm-user-cluster-w1   Ready    worker                 18m   v1.24.2-gke.1900
abm-user-cluster-w2   Ready    worker                 52s   v1.24.2-gke.1900

Limpia

En las siguientes secciones, se incluyen instrucciones para quitar los clústeres y las VM que creaste con esta guía.

Borra el clúster de usuario

Console

  1. En la consola, ve a la página Clústeres de GKE.

    Ir a los clústeres de GKE

  2. En la lista de clústeres, haz clic en el clúster de usuario.

  3. En el panel Detalles, haz clic en Más detalles.

  4. Cerca de la parte superior de la ventana, haz clic en Borrar.

  5. Cuando se te solicite confirmar, ingresa el nombre del clúster y haz clic en Confirmar.

  6. Haz clic en en la esquina superior derecha para ver el estado de la eliminación. Es posible que debas actualizar la página para actualizar la lista de clústeres.

gcloud CLI

Ejecuta el siguiente comando para borrar el clúster:

gcloud container bare-metal clusters delete USER_CLUSTER_NAME \
  --project=PROJECT_ID \
  --location=ON_PREM_API_REGION \
  --force

La marca --force te permite borrar un clúster que tenga grupos de nodos. Sin la marca --force, primero debes borrar los grupos de nodos y, luego, borrar el clúster.

Para obtener información sobre otras marcas, consulta gcloud container bare-metal clusters delete.

Terraform

Ejecuta el siguiente comando:

terraform destroy

Espera a que se borre el clúster de usuario antes de borrar el clúster de administrador y las VM.

Borra el clúster de administrador y las VMs

  1. Da de baja el clúster de administrador de la API de GKE On-Prem:

    gcloud container bare-metal admin-clusters unenroll ADMIN_CLUSTER_NAME \
        --project=PROJECT_ID \
        --location=ON_PREM_API_REGION
    
  2. Conéctate a la estación de trabajo de administrador:

    gcloud compute ssh root@abm-ws --zone ZONE
    
  3. Borra el clúster de administrador:

    bmctl reset -c ADMIN_CLUSTER_NAME
    

    bmctl cancela el registro del clúster de la flota y, luego, lo borra. Espera a que se borre el clúster antes de borrar las VMs.

  4. Sal de la estación de trabajo de administrador.

  5. Enumera todas las VM que tienen abm en su nombre:

    gcloud compute instances list | grep 'abm'
    
  6. Verifica que estés de acuerdo con borrar todas las VM que contengan abm en el nombre.

    Después de verificar, puedes borrar las VM de abm mediante la ejecución del siguiente comando:

    gcloud compute instances list --format="value(name)" | \
      grep 'abm'  | \
      xargs gcloud --quiet compute instances delete --zone ZONE
    
  7. Borra la cuenta de servicio:

    gcloud iam service-accounts delete baremetal-gcr@PROJECT_ID.iam.gserviceaccount.com
    

    Cuando se te solicite confirmación, ingresa y.

    ¿Qué sigue?