En Google Distributed Cloud, los clústeres híbridos desempeñan el doble papel de clúster de administrador y de clúster de usuario. Ejecutan cargas de trabajo y, al mismo tiempo, gestionan otros clústeres y a sí mismos.
Los clústeres híbridos eliminan la necesidad de ejecutar un clúster de administrador independiente en escenarios con recursos limitados y pueden proporcionar una fiabilidad de alta disponibilidad. En un clúster híbrido de alta disponibilidad, si falla un nodo, otros ocuparán su lugar.
Los clústeres híbridos se diferencian de los clústeres independientes en que también pueden gestionar otros clústeres. Los clústeres independientes no pueden crear ni gestionar otros clústeres.
Sin embargo, al crear clústeres híbridos, hay un equilibrio entre la flexibilidad y la seguridad. Como los clústeres híbridos se gestionan solos, ejecutar cargas de trabajo en el mismo clúster aumenta el riesgo de que se expongan datos administrativos sensibles, como las claves SSH.
Puedes crear un clúster híbrido con un plano de control de alta disponibilidad (HA) mediante el comando bmctl
. El comando bmctl
se puede ejecutar en una estación de trabajo independiente o en uno de los nodos del clúster híbrido.
Requisitos previos
- Se descarga la versión más reciente de
bmctl
(gs://anthos-baremetal-release/bmctl/1.33.100-gke.89/linux-amd64/bmctl
) de Cloud Storage. - La estación de trabajo que ejecuta
bmctl
tiene conectividad de red con todos los nodos del clúster híbrido de destino. - La estación de trabajo que ejecuta
bmctl
tiene conectividad de red con el VIP del plano de control del clúster híbrido de destino. - La clave SSH utilizada para crear el clúster híbrido está disponible para el usuario root o hay acceso de usuario SUDO en todos los nodos del clúster híbrido de destino.
- La cuenta de servicio de registro de Connect se ha configurado para usarla con Connect.
Consulta la guía de inicio rápido de Google Distributed Cloud para ver instrucciones detalladas sobre cómo crear un clúster híbrido.
Habilitar SELinux
Si quieres habilitar SELinux para proteger tus contenedores, debes asegurarte de que
SELinux esté habilitado en modo Enforced
en todas tus máquinas host. A partir de la versión 1.9.0 de Google Distributed Cloud, puedes habilitar o inhabilitar SELinux antes o después de crear o actualizar un clúster. SELinux está habilitado de forma predeterminada en Red Hat Enterprise Linux (RHEL). Si SELinux está inhabilitado en tus máquinas host o no lo tienes claro, consulta el artículo Protege tus contenedores mediante SELinux para obtener instrucciones sobre cómo habilitarlo.
Google Distributed Cloud solo admite SELinux en sistemas RHEL.
Inicia sesión en gcloud y crea un archivo de configuración de clúster
Inicia sesión en gcloud CLI como usuario con
gcloud auth application-default login
:gcloud auth application-default login
Para usar las funciones de habilitación automática de APIs y de creación de cuentas de servicio, que se describen en las siguientes secciones, debes tener el rol de propietario o editor de un proyecto.
También puedes añadir los siguientes roles de gestión de identidades y accesos al usuario:
- Administrador de cuentas de servicio
- Administrador de claves de cuentas de servicio
- Administrador de gestión de identidades y accesos de proyectos
- Lector de Compute
- Administrador del uso del servicio
Si ya tienes una cuenta de servicio con esos roles, ejecuta el siguiente comando:
export GOOGLE_APPLICATION_CREDENTIALS=JSON_KEY_FILE
Sustituye
JSON_KEY_FILE
por la ruta del archivo de clave JSON de tu cuenta de servicio.Obtén el ID de tu proyecto Google Cloud para usarlo al crear un clúster:
export CLOUD_PROJECT_ID=$(gcloud config get-value project)
Crea el archivo de configuración del clúster con bmctl
.
Una vez que hayas iniciado sesión en la CLI de gcloud y hayas configurado tu proyecto, puedes crear el archivo de configuración del clúster con el comando bmctl
.
Para crear un archivo de configuración de clúster, sigue estos pasos:
Ejecuta el siguiente comando para crear el archivo de configuración del clúster, todas las cuentas de servicio necesarias y todas las APIs obligatorias:
bmctl create config -c CLUSTER_NAME</var> --enable-apis \ --create-service-accounts --project-id=CLOUD_PROJECT_ID
Haz los cambios siguientes:
CLUSTER_NAME
: el nombre del clúster que vas a crear.CLOUD_PROJECT_ID
: el ID de tu proyecto de Google Cloud .
De forma predeterminada, el archivo de configuración se escribe en
bmctl-workspace/CLUSTER_NAME/CLUSTER_NAME.yaml
.Si ya has habilitado las APIs y creado cuentas de servicio, puedes crear archivos de configuración sin habilitar las APIs ni crear cuentas de servicio. Tampoco es obligatorio usar la marca
--project-id
. Sin embargo, tendrás que especificar las credenciales en el archivo de configuración manualmente.Para obtener más información sobre las opciones de comandos, consulta create config.
Editar el archivo de configuración del clúster
Ahora que tienes un archivo de configuración de clúster, edítalo para hacer los siguientes cambios:
Proporciona la clave privada SSH para acceder a los nodos del clúster híbrido:
# bmctl configuration variables. Because this section is valid YAML but not a valid Kubernetes # resource, this section can only be included when using bmctl to # create the initial admin/hybrid cluster. Afterwards, when creating user clusters by directly # applying the cluster and node pool resources to the existing cluster, you must remove this # section. gcrKeyPath: bmctl-workspace/.sa-keys/my-gcp-project-anthos-baremetal-gcr.json sshPrivateKeyPath: /path/to/your/ssh_private_key gkeConnectAgentServiceAccountKeyPath: bmctl-workspace/.sa-keys/my-gcp-project-anthos-baremetal-connect.json gkeConnectRegisterServiceAccountKeyPath: bmctl-workspace/.sa-keys/my-gcp-project-anthos-baremetal-register.json cloudOperationsServiceAccountKeyPath: bmctl-workspace/.sa-keys/my-gcp-project-anthos-baremetal-cloud-ops.json
Registra tus clústeres en una flota. El ID de proyecto que has especificado en el comando
bmctl create config
se añade automáticamente al campogkeConnect.projectID
del archivo de configuración del clúster. Este proyecto se denomina proyecto del host de la flota.- Si has creado el archivo de configuración mediante las funciones de habilitación automática de APIs y de creación de cuentas de servicio, puedes saltarte este paso.
- Si has creado el archivo de configuración sin usar las funciones de habilitación automática de la API y de creación de cuentas de servicio, haz referencia a las claves JSON de la cuenta de servicio descargada en los campos
gkeConnectAgentServiceAccountKeyPath
ygkeConnectRegisterServiceAccountKeyPath
correspondientes del archivo de configuración del clúster.
Cambia la configuración para especificar el tipo de clúster
hybrid
en lugar deadmin
:spec: # Cluster type. This can be: # 1) admin: to create an admin cluster. This can later be used to create user clusters. # 2) user: to create a user cluster. Requires an existing admin cluster. # 3) hybrid: to create a hybrid cluster that runs admin cluster components and user workloads. # 4) standalone: to create a cluster that manages itself, runs user workloads, but does not manage other clusters. type: hybrid
Cambia la configuración para especificar un plano de control de alta disponibilidad con varios nodos. Quieres especificar un número impar de nodos para poder tener un quórum mayoritario para la alta disponibilidad:
# Control plane configuration controlPlane: nodePoolSpec: nodes: # Control plane node pools. Typically, this is either a single machine # or 3 machines if using a high availability deployment. - address: 10.200.0.4 - address: 10.200.0.5 - address: 10.200.0.6
Especifica la densidad de pods de los nodos del clúster:
.... # NodeConfig specifies the configuration that applies to all nodes in the cluster. nodeConfig: # podDensity specifies the pod density configuration. podDensity: # maxPodsPerNode specifies at most how many pods can be run on a single node. maxPodsPerNode: 250 ....
En el caso de los clústeres híbridos, los valores permitidos para
maxPodsPerNode
son32-250
para los clústeres de alta disponibilidad y64-250
para los que no lo son. Si no se especifica, el valor predeterminado demaxPodsPerNode
es110
. Una vez creado el clúster, no se puede actualizar este valor.La densidad de pods también está limitada por los recursos de IP disponibles de tu clúster. Para obtener más información, consulta Redes de pods.
Crea el clúster híbrido con la configuración del clúster
Usa el comando bmctl
para crear el clúster:
bmctl create cluster -c CLUSTER_NAME
Sustituye CLUSTER_NAME
por el nombre que usaste cuando creaste el archivo de configuración del clúster en la sección anterior.
A continuación, se muestra un ejemplo del comando para crear un clúster llamado hybrid1
:
bmctl create cluster -c hybrid1
Ejemplos de configuraciones de clústeres híbridos
Para ver ejemplos de configuraciones de clústeres híbridos, consulta Clústeres híbridos en la sección Ejemplos de configuración de clústeres.