En esta página, se describe cómo crear un clúster de administrador con la consola de Google Cloud o Google Cloud CLI (gcloud CLI). Ambos clientes estándar deGoogle 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 administrar el ciclo de vida de tus clústeres locales con Terraform y aplicaciones estándares deGoogle 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 tus clústeres, la API de GKE On-Prem debe almacenar los metadatos sobre el estado de tu clúster en Google Cloud, en la región deGoogle Cloud que especificas cuando creas el clúster. Estos metadatos permiten que la API administre el ciclo de vida del clúster y no incluya datos específicos de la carga de trabajo.
Cuando creas un clúster con un cliente de API de GKE On-Prem, especificas un proyecto deGoogle Cloud . Después de crear 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 crear el clúster.
Si lo prefieres, puedes crear un clúster de administrador si creas un archivo de configuración de clúster de administrador y usas bmctl
, como se describe en Crea un clúster de administrador.
Si deseas usar la consola o gcloud CLI para administrar
el ciclo de vida de los clústeres que se crearon con bmctl
, consulta
Configura clústeres para que los administre la API de GKE On-Prem.
Permisos de IAM
Si no eres propietario de un Google Cloud proyecto, debes tener un propietario del proyecto que te otorgue los siguientes roles:
Si deseas acceder a las páginas de GKE Enterprise y GKE en la consola, también debes tener el rol roles/container.viewer.
Para obtener información sobre cómo otorgar roles, consulta Administración del acceso a proyectos, carpetas y organizaciones.
Acceso a la línea de comandos
Después de crear el clúster, si deseas usar la puerta de enlace de Connect para ejecutar comandos kubectl
en el clúster en computadoras que no sean la estación de trabajo del administrador, instala las siguientes herramientas de línea de comandos en la computadora que planeas usar.
La versión más reciente de la CLI de gcloud
kubectl
para ejecutar comandos en clústeres de Kubernetes. Si necesitas instalarkubectl
, sigue estas instrucciones
Elige el cliente para crear el clúster de administrador
Puedes usar la consola o la gcloud CLI para crear un clúster de administrador que administre la API de GKE On-Prem. Si es la primera vez que instalas Google Distributed Cloud (solo software) en bare metal, es posible que la consola sea más fácil de usar que la CLI de gcloud.
Una vez que te familiarices con la información que debes proporcionar para
crear clústeres, es posible que la gcloud CLI te resulte más conveniente
porque 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
Console
En la consola, ve a la página Crea un clúster de Bare Metal.
Selecciona el proyecto de Google Cloud en el que deseas crear el clúster. El proyecto seleccionado también se usa como el proyecto host de la flota.
En la página Requisitos previos, se muestran los requisitos de la estación de trabajo del administrador y las máquinas de nodo 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 de la estación de trabajo de administrador
Expande esta sección para mostrar los requisitos de hardware, sistema operativo y conectividad de la estación de trabajo del administrador.
Requisitos previos de la máquina del nodo del clúster
Expande esta sección para mostrar los requisitos de hardware, sistema operativo y conectividad para las máquinas de nodos del clúster.
Requisitos de red
Esta sección te ayuda a planificar las direcciones IP que necesitas para un entorno mínimo. De manera opcional, en la sección Dirección IP del nodo y direcciones IP virtuales, puedes proporcionar una dirección IP de nodo inicial y una dirección IP virtual (VIP), y la consola mostrará una tabla de las direcciones IP que necesitas. Estas direcciones IP no se aplican a la configuración del clúster de administrador. Su finalidad es ayudarte a planificar las direcciones IP que necesitas para tu instalación. Puedes descargar la tabla en un archivo CSV y, luego, importarla a una hoja de cálculo o a una herramienta de planificación de direcciones IP para usarla como punto de partida y hacer un seguimiento de las direcciones IP necesarias para tus clústeres.
Revisa los recursos de Google Cloud:
Asegúrate de que las APIs de Google obligatorias estén habilitadas en el proyecto host de la flota. Además, debes habilitar la API de GKE On-Prem:
gcloud services enable --project FLEET_HOST_PROJECT_ID \ gkeonprem.googleapis.com
Reemplaza 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 como se describe en
Prepara el entorno de arranque. Este comando puede crear las cuentas de servicio necesarias con los permisos mínimos de IAM necesarios para crear el clúster de administrador.
Si lo prefieres, puedes configurar las cuentas de servicio de forma manual.
Cuando esté todo listo para comenzar, haz clic en Instalar el entorno de arranque en la barra de navegación de la izquierda.
gcloud CLI
Requisitos previos de hardware, redes y sistema operativo
Crear un clúster de administrador con un cliente de API de GKE On-Prem requiere los mismos requisitos previos de hardware, red y sistema operativo que crear el clúster con bmctl
. Para obtener más información, consulta Requisitos previos de instalación.
APIs de Google obligatorias
Asegúrate de que las APIs de Google obligatorias estén habilitadas en el proyecto host de la flota. Además, debes habilitar la API de GKE On-Prem:
gcloud services enable --project FLEET_HOST_PROJECT_ID \ gkeonprem.googleapis.com
Reemplaza FLEET_HOST_PROJECT_ID
por el ID del proyecto host de la flota.
Cuentas de servicio y permisos obligatorios
Antes de crear el clúster, ejecuta el comando bmctl register bootstrap
en
tu estación de trabajo de administrador como se describe en
Prepara el entorno de arranque. Este comando puede crear las cuentas de servicio necesarias con los permisos mínimos de IAM necesarios para crear el clúster de administrador.
Si lo prefieres, puedes configurar las cuentas de servicio de forma manual.
Planifica las direcciones IP
Antes de crear el clúster de administrador, debes planificar las direcciones IP de tus clústeres. Consulta Planifica tus direcciones IP para ver un ejemplo de cómo asignar direcciones IP a un clúster de administrador con alta disponibilidad (HA) y dos clústeres de usuario con HA. Incluso si usarás la gcloud CLI 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.
Prepara el entorno de arranque
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 de Kubernetes en Docker (tipo) en la estación de trabajo del 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 automáticamente después de que se crea correctamente.
Console
Ingresa un Nombre para el clúster de administrador. Observa que el nombre del clúster de arranque se obtiene anteponiendo 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 región de Google Cloudde la lista. Este parámetro de configuración especifica la región donde se ejecutan las siguientes APIs y servicios:
- API de GKE On-Prem (
gkeonprem.googleapis.com
) - Servicio de flota (
gkehub.googleapis.com
) - Servicio de Connect (
gkeconnect.googleapis.com
)
Este parámetro de configuración también controla la región en la que se almacena lo siguiente:
- Los metadatos del clúster que la API de GKE On-Prem necesita para administrar 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 juntos 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 de
bmctl
debe coincidir con la versión del clúster que creas. Si ya tienes la versión aplicable debmctl
descargada en tu estación de trabajo de administrador, no es necesario que la vuelvas a descargar.
gcloud CLI
Asegúrate de actualizar los componentes:
gcloud components update
Ejecuta el siguiente comando para acceder con tu Cuenta de Google:
gcloud auth login
Muestra una lista de las versiones de clústeres de bare metal 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
Reemplaza
REGION
por la Google Cloud región que usarás cuando crees el clúster. Esta es la región en la que se ejecutan la API de GKE On-Prem y los servicios de la flota y Connect. Especificaus-west1
o alguna otra región compatible.
Crea el clúster de arranque
Ejecuta los siguientes pasos en tu estación de trabajo de administrador. Estos comandos se muestran en la consola.
Configura 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 de
bmctl
en el directorio de trabajo actual.gcloud storage cp gs://anthos-baremetal-release/bmctl/VERSION/linux-amd64/bmctl . chmod a+x ./bmctl
Reemplaza
VERSION
por la versión del clúster de Bare Metal que deseas instalar. Si copiaste el comando de la consola, la versión ya está en el comando.Crea el clúster de arranque. Puedes permitir que
bmctl
cree las cuentas de servicio (CS) requeridas o crear las cuentas de servicio y los archivos de claves por tu cuenta y pasarlos al comandobmctl register bootstrap
.
bmctl
crea las SA
Usa el siguiente comando si deseas que bmctl
cree las cuentas de servicio requeridas con los permisos mínimos necesarios para crear el clúster de administrador. Este comando supone que bmctl
está 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
Reemplaza lo siguiente:
YOUR_PRIVATE_KEY
: Es la ruta de acceso al archivo de clave SSH privada. Creaste la clave SSH cuando configuraste el acceso SSH raíz a los nodos.
Si copiaste el comando que se muestra en la consola, los siguientes campos ya están completados.
ADMIN_CLUSTER_NAME
: Es el nombre de tu clúster de administrador.FLEET_HOST_PROJECT_ID
: Es el 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 | Objetivo | Funciones de IAM |
---|---|---|
anthos-baremetal-gcr | Google Distributed Cloud usa esta cuenta de servicio para descargar imágenes de contenedor de Google Container Registry. | Ninguna |
anthos-baremetal-connect | El agente de Connect usa esta cuenta de servicio para mantener una conexión entre tu clúster y Google Cloud. | roles/gkehub.connect |
anthos-baremetal-register | El agente de Connect usa esta cuenta de servicio para registrar tus clústeres en la flota deGoogle Cloud . | 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 |
Especifica los archivos de claves de SA
Si lo prefieres, puedes pasarle a bmctl
los archivos de claves de la cuenta de servicio que creaste. El siguiente comando usa los nombres de los archivos de claves en Cómo configurar cuentas de servicio de forma manual y supone 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
Reemplaza lo siguiente:
YOUR_PRIVATE_KEY
: Es la ruta de acceso al archivo de clave SSH privada. Creaste la clave SSH cuando configuraste el acceso SSH raíz a los nodos.ADMIN_CLUSTER_NAME
: Es el nombre de tu clúster de administrador.FLEET_HOST_PROJECT_ID
: Es el proyecto en el que se registrará automáticamente el clúster de administrador después de crearlo.
Las siguientes marcas especifican la ruta de acceso a los archivos de claves:
-gcr-service-account-key
: Es la ruta de acceso al archivo de claves de la cuenta de servicio que extrae imágenes de contenedores (anthos-baremetal-gcr
).--gke-agent-service-account-key
: Es la ruta de acceso al archivo de claves de la cuenta de servicio del agente de Connect (anthos-baremetal-connect
).--gke-register-service-account-key
: Es la ruta de acceso al archivo de claves de la cuenta de servicio del agente de Connect que registra el clúster en la flota (anthos-baremetal-register
).--cloud-operation-service-account-key
: Es la ruta de acceso al archivo de claves de la cuenta de servicio para auditar registros y supervisar proyectos (anthos-baremetal-cloud-ops
).
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
En la página Instaar el entorno de arranque, haz clic en Revisar conexión.
Si se realiza de forma correcta, la consola mostrará
Se estableció la conexión.Debes establecer la conexión con el clúster de arranque antes de continuar. Si no se establece la conexión, verifica los argumentos que especificaste para el comando
bmctl register bootstrap
:Asegúrate de que el valor de
--target-cluster-name
coincida con el nombre del clúster de administrador que se muestra en la sección Aspectos 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 inicialización o el ID del proyecto, ingresa
Ctrl-C
para salir debmctl register bootstrap
y vuelve a ejecutar el comando.Haz clic en Siguiente para comenzar a configurar el clúster de administrador. La mayoría de los parámetros de configuración de la consola corresponden a los campos del archivo de configuración del clúster.
En Configuración de nodos, ingresa un valor entre 64 y 250 en Máximo de Pods por nodo, o acepta el valor predeterminado, 110. Después de crear el clúster, no podrás actualizar este valor.
La cantidad máxima de Pods por nodo (denominada densidad de Pods) también está limitada por los recursos IP disponibles de tu clúster. Para obtener más detalles, consulta Herramientas de redes de Pods.
Haz clic en Siguiente.
En la página Redes, define cómo se comunican los nodos y componentes del clúster entre sí y con el plano de control de Kubernetes.
Para obtener información detallada, mantén el puntero sobre el
junto a cada campo.Haz clic en Verificar y crear.
La consola muestra mensajes de estado a medida que verifica la configuración y crea el clúster en tu centro de datos.
Si hay un problema con la configuración, la consola mostrará un mensaje de error que debe ser lo suficientemente claro como para solucionar el problema de configuración y volver a crear el clúster.
gcloud CLI
Antes de crear el clúster de administrador, confirma que el clúster de inicio se haya 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, verifica el nombre del clúster de arranque y el ID del proyecto que especificaste para bmctl register bootstrap
. Si necesitas cambiar el nombre del clúster de inicialización o el ID del proyecto, ingresa 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 especificas en el comando corresponden a los campos del archivo de configuración del clúster de usuario.
Para crear un clúster de administrador con el balanceador de cargas incluido, 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 deseas usar el balanceo de cargas manual, agrega --enable-manual-lb
al comando.
Reemplaza lo siguiente:
ADMIN_CLUSTER_NAME
: Es 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
: Es el proyecto en el que se registrará automáticamente el clúster de administrador después de crearlo. No se puede cambiar el proyecto host de la flota después de crear el clúster.REGION
: Es la Google Cloud región en la que se ejecuta la API de GKE On-Prem. Especificaus-west1
o alguna otra región compatible. No se puede cambiar la región después de crear el clúster. Este parámetro de configuración especifica la región en la que se almacena lo siguiente:- Los metadatos del clúster que la API de GKE On-Prem necesita para administrar 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 juntos identifican de forma única el clúster en Google Cloud.
VERSION
: Es la versión del clúster de Bare Metal. La versión debe coincidir con la versión debmctl
que usaste para ejecutarbmctl register bootstrap
. Para verificar la versión debmctl
, ejecutabmctl version
en la estación de trabajo del administrador.MAX_PODS_PER_NODE
: Para los clústeres de administrador, los valores permitidos son de 32 a 250 y de 64 a 250 para los clústeres que no son de HA. El valor predeterminado si no se incluye--max-pods-per-node
en el comando es 110. Este valor no se puede actualizar después de que se crea el clúster.La cantidad máxima de Pods por nodo (denominada densidad de Pods) también está limitada por los recursos IP disponibles de tu clúster. Para obtener más detalles, consulta Herramientas de redes de Pods.
CONTROL_PLANE_VIP
: Es la IP virtual (VIP) en el balanceador de cargas para el servidor de la API de Kubernetes del clúster. Incluye la VIP del plano de control en la misma subred que los nodos del balanceador de cargas. No la incluyas en los grupos de direcciones del balanceador de cargas.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 puerto443
es el puerto estándar que se usa para las conexiones HTTPS.CONTROL_PLANE_NODE_CONFIG
: Es la 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. Por lo general, tienes una sola máquina si usas una implementación mínima, o tres máquinas si usas una implementación de alta disponibilidad (HA). Especifica una cantidad impar de nodos a fin de tener la mayoría del quórum para la alta disponibilidad. Puedes cambiar estas direcciones cada vez que 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 comienzan con las palabras clave
node-ip
ylabels
. Separa cada segmento con una coma.node-ip
: Es la dirección IP de un nodo del plano de control. Solo puedes especificar unanode-ip
por marca. Si necesitas especificar más de un nodo, vuelve a incluir la marca para cada uno.labels
: Uno o más pares clave-valor adjuntos al nodo.
Ten en cuenta las siguientes reglas de sintaxis:
- Encierra todo el valor entre comillas simples.
- No se permiten espacios en blanco.
- Separa cada par clave=valor en el 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
: Es un rango de direcciones IPv4, en formato CIDR, para los servicios de tu clúster. El rango CIDR debe estar entre /24 y /12, donde /12 proporciona la mayor cantidad de direcciones IP. Te recomendamos que uses un rango en el espacio de direcciones IP para Internet privada, definido en RFC 1918, por ejemplo,10.96.0.0/20
.POD_ADDR_CIDR
: Es un rango de direcciones IPv4, en formato CIDR, que se usará para los Pods en el clúster de usuarios. El rango CIDR debe estar entre /18 y /8; donde /8 proporciona la mayor cantidad de direcciones IP. Te recomendamos que uses un rango en el espacio de direcciones IP para Internet privada, definido 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 Configura el almacenamiento local.
--lvp-share-path
: Es la ruta de la máquina anfitrión en la que se pueden crear subdirectorios. Se crea un PersistentVolume (PV) local para cada subdirectorio.--lvp-share-storage-class
: 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 acceso 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
: es la clase de almacenamiento con la que se crean los PV durante la creación del clúster.
Para obtener una lista completa de las marcas y sus descripciones, consulta la referencia de la gcloud CLI.
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 cadena operation-1679543737105-5f7893fd5bae9-942b3f97-75e59179
es el OPERATION_ID
de la operación de larga duración. Puedes
averiguar 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 bare metal de contenedor de gcloud.
Cómo corregir errores de solicitud preliminar
Antes de crear el clúster, bmctl
ejecuta una serie de verificaciones previas para verificar la configuración. Si hay un 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 falló una verificación previa porque no se pudo acceder al nodo del plano de control. En la estación de trabajo del administrador, verás 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 de administrador, asegúrate de que el proceso
bmctl register bootstrap
siga ejecutándose. Si no es así, vuelve a ejecutar el comando con los mismos argumentos y agrega 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 actualización de los clústeres de administrador de bare-metal del contenedor de gcloud.
Los detalles sobre el proceso de creación del clúster se muestran en tu estación de trabajo de administrador. Si las verificaciones previas se aprueban, verás algo similar 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.
Conéctate 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 del 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 para el clúster.
Si deseas usar tu identidad de Google para acceder al clúster, puedes configurar la puerta de enlace de Connect de la siguiente manera:
En tu estación de trabajo de administrador, configura la variable de entorno
KUBECONFIG
:export KUBECONFIG=$HOME/bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME-kubeconfig
Establece el contexto actual en una variable de entorno:
export CONTEXT="$(kubectl config current-context)"
Ejecuta el siguiente comando
gcloud
. Este comando realiza las siguientes acciones:- Otorga a tu cuenta de usuario el rol
clusterrole/view
de Kubernetes en el clúster. - Configura el clúster para que puedas ejecutar comandos
kubectl
de solo lectura en tu computadora local sin tener que establecer una conexión SSH a la estación de trabajo de administrador.
Reemplaza
GOOGLE_ACCOUNT_EMAIL
por la dirección de correo electrónico asociada con tu Google Cloud cuenta. 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 trunca 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.
- Otorga a tu cuenta de usuario el rol
Con estas políticas de RBAC implementadas, puedes acceder al clúster desde la
consola con tu identidad de Google. Además, puedes ejecutar comandos kubectl
de solo lectura en computadoras que no sean la estación de trabajo del administrador con un kubeconfig
especial que enruta las solicitudes a través de la puerta de enlace de Connect.
Ejecuta el siguiente comando en una computadora que no sea la estación de trabajo de administrador para obtener 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 ADMIN_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID
El resultado es similar a este:
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 de
kubectl
a través de la puerta de enlace de conexión:kubectl get pods -A
¿Qué sigue?
- Borra un clúster de administrador
- Cancela el registro de un clúster no disponible
- Agrega un clúster de usuario
- Administra clústeres desde la consola de Google Cloud