En esta página se muestra cómo crear un clúster independiente, que es un clúster autoadministrado que ejecuta cargas de trabajo. Los clústeres independientes no administran otros clústeres, lo que elimina la necesidad de ejecutar un clúster de administrador independiente en situaciones limitadas por los recursos. Además, los clústeres independientes ofrecen dos perfiles de instalación para elegir:
- Predeterminado: El perfil predeterminado tiene requisitos de recursos limitados.
- Perimetral: El perfil perimetral tiene requisitos de recursos del sistema reducidos de forma significativa y se recomienda para dispositivos perimetrales con restricciones de recursos altas.
Antes de crear un clúster independiente, considera la compensación entre la reducción de recursos y la seguridad general. Debido a que los clústeres independientes se administran por su cuenta, ejecutar cargas de trabajo en el mismo clúster aumenta el riesgo de exponer datos administrativos sensibles, como claves SSH.
Requisitos previos
Antes de crear un clúster independiente, asegúrate de lo siguiente:
- Se descarga la versión más reciente de
bmctl
(gs://anthos-baremetal-release/bmctl/1.16.8/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 a la VIP del plano de control del clúster independiente de destino. - La clave SSH que se usa para crear el clúster independiente está disponible para la raíz, o hay acceso de usuario SUDO en todos los nodos del clúster independiente de destino.
- La cuenta de servicio del registro de Connect está configurada para usarse con Connect.
Habilita SELinux
Si deseas habilitar SELinux para proteger tus contenedores, debes asegurarte de que SELinux esté habilitado en el modo Enforced
en todas tus máquinas anfitrión. A partir de GKE en Bare Metal versión 1.9.0 o posterior, puedes habilitar o inhabilitar SELinux antes o después de la creación de un clúster o de sus actualizaciones. SELinux está habilitado de forma predeterminada en Red Hat Enterprise Linux (RHEL) y CentOS. Si SELinux está inhabilitado en tus máquinas anfitrión o no estás seguro, consulta Protege tus contenedores con SELinux a fin de obtener instrucciones para habilitarlo.
GKE en Bare Metal admite SELinux solo en los sistemas RHEL y CentOS.
Crea un clúster independiente
Puedes crear un clúster independiente que tenga un solo plano de nodo de control mediante el comando bmctl
. Este tipo de configuración reduce el consumo de recursos, pero no proporciona alta disponibilidad (HA), y el clúster resultante tiene un punto de falla único.
También puedes crear un clúster independiente con alta disponibilidad. En el modo con alta disponibilidad, si un nodo falla, otros ocuparán su lugar. Si deseas crear un clúster independiente con alta disponibilidad, debes especificar al menos tres nodos para el plano de control.
Por lo general, el comando bmctl
se puede ejecutar en una estación de trabajo independiente o en uno de los nodos del clúster independientes. Sin embargo, si creas un clúster independiente con el perfil perimetral habilitado y tienes configurados los recursos mínimos necesarios, te recomendamos ejecutar bmctl
en una estación de trabajo independiente.
Accede a gcloud
Accede a
gcloud
como usuario:gcloud auth application-default login
Debes tener una función de editor o propietario de proyecto para usar las funciones de habilitación automática de la API y de creación de cuentas de servicio, que se describen a continuación.
También puedes agregar las siguientes funciones de IAM al usuario:
- Administrador de cuenta de servicio
- Administrador de clave de cuenta de servicio
- Administrador de IAM de proyecto
- Lector de Compute
- Administrador de Service Usage
De manera alternativa, si ya tienes una cuenta de servicio con esas funciones, ejecuta el siguiente comando:
export GOOGLE_APPLICATION_CREDENTIALS=JSON_KEY_FILE
Reemplaza JSON_KEY_FILE con la ruta del archivo de claves JSON de tu cuenta de servicio.
Obtén tu ID del proyecto de Google Cloud para usarlo con la creación del clúster:
export CLOUD_PROJECT_ID=$(gcloud config get-value project)
Crea un archivo de configuración de clúster independiente
Después de acceder a gcloud y configurar el proyecto, puedes crear el archivo de configuración del clúster con el comando bmctl
. En este ejemplo, todas las cuentas de servicio se crean de forma automática con el comando bmctl create config
:
bmctl create config -c STANDALONE_CLUSTER_NAME --enable-apis \
--create-service-accounts --project-id=$CLOUD_PROJECT_ID
Reemplaza lo siguiente:
- STANDALONE_CLUSTER_NAME por el nombre del clúster independiente que deseas crear
Ejemplo
El siguiente comando crea un archivo de configuración para un clúster independiente llamado standalone1
asociado con el ID del 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 las API y la creación de cuentas de servicio, también puedes proporcionar tus cuentas de servicio existentes si tienes los permisos de IAM adecuados.
De esta manera puedes omitir la creación automática de cuentas de servicio en el paso anterior en el comando bmctl
:
bmctl create config -c standalone1
Edita el archivo de configuración del clúster
Ahora que tienes un archivo de configuración de clúster, realiza los siguientes cambios:
Agrega 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 del proyecto que especificaste en el comando
bmctl create config
se agrega automáticamente al campogkeConnect.projectID
en el archivo de configuración del clúster. Este proyecto se conoce como el proyecto host de la flota.- Si creaste el archivo de configuración con las funciones de habilitación automática de la API y de creación de cuentas de servicio, puedes omitir este paso.
- Si creaste el archivo de configuración sin usar las funciones automáticas de habilitación de API y de creación de cuentas de servicio, haz referencia a las claves JSON de la cuenta de servicio descargadas en los campos
gkeConnectAgentServiceAccountKeyPath
ygkeConnectRegisterServiceAccountKeyPath
correspondientes del archivo de configuración del clúster.
Cambia la configuración para especificar un tipo de clúster de
standalone
en lugar deadmin
: Si deseas habilitar el perfil perimetral para minimizar el consumo de recursos, especifica elprofile: 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 GKE on Bare Metal. It is only available for standalone clusters. profile: edge
Cambia la configuración para especificar un plano de control de varios nodos y alta disponibilidad (opcional). Especifica un número impar de nodos a fin de tener el mayor quórum 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 una cantidad par de nodos de manera temporal al momento de agregar o quitar nodos para el mantenimiento o el reemplazo, tu implementación mantiene la alta disponibilidad siempre y cuando tengas quórum.
Especifica la densidad del Pod 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 los clústeres independientes, los valores permitidos para
maxPodsPerNode
son32-250
para los clústeres de alta disponibilidad y64-250
para los clústeres que no son HA. El valor predeterminado si no se especifica, es110
. Este valor no se puede actualizar una vez que se crea el clúster.La densidad del Pod también está limitada por los recursos IP disponibles de tu clúster. Para obtener más detalles, consulta Herramientas de redes de Pods.
Crea el clúster independiente con la configuración del clúster
Usa el comando bmctl
para implementar el clúster independiente:
bmctl create cluster -c CLUSTER_NAME
Reemplaza CLUSTER_NAME por el nombre del clúster que creaste 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 configuración de clústeres independientes
Para ver ejemplos de configuración de clústeres independientes, consulta Clústeres independientes en las muestras de configuración de clústeres.