En esta página se explica cómo crear un clúster independiente, que es un clúster autogestionado que ejecuta cargas de trabajo. Los clústeres independientes no gestionan otros clústeres, por lo que no es necesario ejecutar un clúster de administrador independiente en situaciones con recursos limitados. Además, los clústeres independientes ofrecen dos perfiles de instalación:
- Predeterminado: el perfil predeterminado tiene requisitos de recursos limitados.
- Edge: el perfil Edge ha reducido significativamente los requisitos de recursos del sistema y se recomienda para dispositivos perimetrales con muchas limitaciones de recursos.
Antes de crear un clúster independiente, ten en cuenta el equilibrio entre la reducción de recursos y la seguridad general. Como los clústeres independientes se gestionan solos, ejecutar cargas de trabajo en el mismo clúster aumenta el riesgo de exponer datos administrativos sensibles, como las claves SSH.
Requisitos previos
Antes de crear un clúster independiente, asegúrate de que se cumplan los siguientes requisitos:
- 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 independiente de destino. - La estación de trabajo que ejecuta
bmctl
tiene conectividad de red con el VIP del plano de control del clúster independiente de destino. - La clave SSH que se ha usado para crear el clúster independiente está disponible para el usuario raíz o bien hay acceso de usuario SUDO en todos los nodos del clúster independiente de destino.
- La cuenta de servicio de conexión y registro está configurada para usarse con Connect.
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.
Crear un clúster independiente
Puedes crear un clúster independiente que tenga un solo plano de nodo de control con el comando bmctl
. Este tipo de configuración reduce el consumo de recursos, pero no proporciona alta disponibilidad y el clúster resultante tiene un único punto de fallo.
También puedes crear un clúster independiente de alta disponibilidad. En el modo de alta disponibilidad, si falla un nodo, otros lo sustituirán. Para crear un clúster independiente de alta disponibilidad, debes especificar al menos tres nodos para el plano de control.
El comando bmctl
se puede ejecutar en una estación de trabajo independiente o en uno de los nodos del clúster independiente. Sin embargo, si vas a crear un clúster independiente con el perfil de edge habilitado y tienes configurados los recursos mínimos necesarios, te recomendamos que ejecutes bmctl
en una estación de trabajo independiente.
Inicia sesión en gcloud
Inicia sesión en
gcloud
como usuario:gcloud auth application-default login
Debes tener el rol de propietario o editor de un proyecto 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.
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 al 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)
Crear un archivo de configuración de clúster independiente
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
. En este ejemplo, la bmctl create config
crea automáticamente todas las cuentas de servicio:
bmctl create config -c STANDALONE_CLUSTER_NAME --enable-apis \
--create-service-accounts --project-id=$CLOUD_PROJECT_ID
Haz los cambios siguientes:
- STANDALONE_CLUSTER_NAME con el nombre del clúster independiente que quieras crear.
Ejemplo
El siguiente comando crea un archivo de configuración para un clúster independiente llamado standalone1
asociado al ID de proyecto my-gcp-project
:
bmctl create config -c standalone1 --create-service-accounts --project-id=my-gcp-project
El archivo se escribe en bmctl-workspace/standalone1/standalone1.yaml
.
Como alternativa a la habilitación automática de APIs y a la creación de cuentas de servicio, también puedes proporcionar tus cuentas de servicio si tienes los permisos de gestión de identidades y accesos adecuados.
De esta forma, puedes saltarte la creación automática de la cuenta de servicio en el paso anterior del comando bmctl
:
bmctl create config -c standalone1
Editar el archivo de configuración del clúster
Ahora que tienes un archivo de configuración del clúster, haz los siguientes cambios:
Añade la clave privada SSH para acceder a los nodos del clúster independiente:
# 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 APIs 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
standalone
en lugar deadmin
. Si quieres habilitar el perfil de edge para minimizar el consumo de recursos, especificaprofile: edge
: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: standalone # Edge profile minimizes the resource consumption of Google Distributed Cloud. It is only available for standalone clusters. profile: edge
(Opcional) Cambia la configuración para especificar un plano de control de alta disponibilidad y varios nodos. Especifica 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
Si tienes un número par de nodos temporalmente mientras añades o quitas nodos para realizar tareas de mantenimiento o sustitución, tu implementación mantendrá la alta disponibilidad siempre que tengas quórum.
En el archivo de configuración del clúster, rellene o edite los detalles de la red del clúster:
clusterNetwork.pods.cidrBlocks
: intervalo de direcciones IP en notación de bloque CIDR que usan los pods. El valor inicial recomendado, que se rellena automáticamente en el archivo de configuración de clúster generado, es192.168.0.0/16
.clusterNetwork.services.cidrBlocks
: intervalo de direcciones IP en notación de bloque CIDR que utiliza el servicio. El valor inicial recomendado, que se rellena automáticamente en el archivo de configuración de clúster generado, es10.96.0.0/20
.loadBalancer.vips.controlPlaneVIP
: la dirección IP virtual (VIP) del servidor de la API de Kubernetes del clúster.loadBalancer.vips.ingressVIP
: la dirección IP virtual que se va a usar como dirección externa del proxy de entrada.loadBalancer.addressPools.addresses:
: intervalo de diez direcciones IP para usarlas como direcciones IP externas para servicios de tipo LoadBalancer. Ten en cuenta que este intervalo incluye el VIP de entrada, que es obligatorio para MetalLB. Ninguna otra dirección IP puede solaparse con este intervalo.
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 independientes, los valores permitidos para
maxPodsPerNode
son32-250
para los clústeres de alta disponibilidad y64-250
para los que no lo son. El valor predeterminado si no se especifica es110
. Una vez que se haya creado el clúster, no se podrá 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 independiente con la configuración del clúster.
Usa el comando bmctl
para desplegar el clúster independiente:
bmctl create cluster -c CLUSTER_NAME
Sustituye CLUSTER_NAME por el nombre del clúster que has creado en la sección anterior.
A continuación, se muestra un ejemplo del comando para crear un clúster llamado standalone1
:
bmctl create cluster -c standalone1
Ejemplos de configuraciones de clústeres independientes
Para ver ejemplos de configuraciones de clústeres independientes, consulta Clústeres independientes en la sección Ejemplos de configuración de clústeres.