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 instalarkubectl
, 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
En la consola, ve a la página Crear un clúster bare metal.
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
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.
Selecciona la versión de tu clúster de administrador.
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.
- API de GKE On-Prem (
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 debmctl
en tu estación de trabajo de administrador, no es necesario que la vuelvas a descargar.
CLI de gcloud
Asegúrate de actualizar los componentes:
gcloud components update
Ejecuta el siguiente comando para iniciar sesión con tu cuenta de Google:
gcloud auth login
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. Especificaus-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.
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.
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.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 comandobmctl 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:
YOUR_PRIVATE_KEY
: la ruta a tu clave SSH privada. Creaste la clave SSH cuando configuraste el acceso SSH de superusuario a los nodos.
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
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 debmctl register bootstrap
y vuelve a ejecutar el comando.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.
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.
Haz clic en Siguiente.
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.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 Especificaus-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 debmctl
que has usado para ejecutarbmctl register bootstrap
. Puedes consultar la versión debmctl
ejecutandobmctl 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 puerto443
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
ylabels
. Separa cada segmento con una coma.node-ip
: la dirección IP de un nodo del plano de control. Solo puedes especificar unnode-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
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
.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:
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
Define el contexto actual en una variable de entorno:
export CONTEXT="$(kubectl config current-context)"
Ejecuta el siguiente comando
gcloud
. Este comando hace lo siguiente:- Asigna a tu cuenta de usuario el
clusterrole/view
rol 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.
- Asigna a tu cuenta de usuario el
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.
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.
Ahora puedes ejecutar comandos
kubectl
a través de la pasarela de conexión:kubectl get pods -A
Siguientes pasos
- Eliminar un clúster de administradores
- Dar de baja un clúster no disponible
- Añadir un clúster de usuarios
- Gestionar clústeres desde la Google Cloud consola