En este documento, se muestra cómo crear un clúster de administrador para Google Distributed Cloud. El clúster de administrador gestiona los clústeres de usuario que ejecutan tus cargas de trabajo.
Para obtener más detalles sobre el clúster de administrador, consulta la descripción general de la instalación.
Descripción general del procedimiento
Estos son los pasos principales que se deben seguir para crear un clúster de administrador:
- Preparar una estación de trabajo de administrador
- Esta máquina tiene las herramientas necesarias para crear clústeres nuevos.
- Completa los archivos de configuración.
- Especifica los detalles de tu clúster de administrador nuevo mediante la finalización y validación de un archivo de configuración del clúster de administrador, un archivo de configuración de credenciales y, posiblemente, un archivo de bloque de IP.
- Importa imágenes de SO a vSphere y, luego, envía imágenes de contenedores al registro privado.
- Ejecuta
gkectl prepare
.
- Crea un clúster de administrador.
- Usa
gkectl
para crear un clúster de administrador nuevo como se especifica en los archivos de configuración completos. Cuando Google Distributed Cloud crea un clúster de administrador, implementa un clúster de Kubernetes en Docker (tipo) para alojar de manera temporal los controladores de Kubernetes necesarios para crear el clúster de administrador. Este clúster transitorio se denomina clúster de arranque. El administrador administrador crea y actualiza los clústeres de usuario sin usar un clúster de arranque.
- Verifica que el clúster de administrador esté en ejecución.
- Usa
kubectl
para ver los nodos del clúster.
Al final de este procedimiento, tendrás un clúster de administrador en ejecución que puedes usar para crear y administrar clústeres de usuarios.
Si usas los Controles del servicio de VPC, es posible que veas errores cuando ejecutes algunos comandos de gkectl
, como "Validation Category: GCP - [UNKNOWN] GCP
service: [Stackdriver] could not get GCP services"
. Para evitar estos errores, agrega el parámetro --skip-validation-gcp
a tus comandos.
Antes de comenzar
Revisa el documento de planificación de direcciones IP. Asegúrate de tener suficientes direcciones IP disponibles para los tres nodos del plano de control y una VIP del plano de control. Si planeas crear clústeres de usuario de kubeception, debes tener suficientes direcciones IP disponibles para los nodos del plano de control de esos clústeres de usuario.
Revisa la descripción general del balanceo de cargas y revisa la decisión sobre el tipo de balanceador de cargas que deseas usar. Para ciertos balanceadores de cargas, debes configurar el balanceador de cargas antes de crear tu clúster de administrador.
Mira la sección
privateRegistry
y decide si quieres usar un registro público o privado para los componentes de Google Distributed Cloud.Mira el campo osImageType y decide qué tipo de sistema operativo quieres ejecutar en los nodos del clúster de administrador.
Si la organización requiere que el tráfico saliente pase a través de un servidor proxy, asegúrate de incluir en la lista de entidades permitidas las APIs necesarias y la dirección de Container Registry.
En la versión 1.29 y posteriores, las comprobaciones preliminares del servidor están habilitadas de forma predeterminada. Las comprobaciones preliminares del servidor requieren reglas de firewall adicionales. En Reglas de firewall para clústeres de administrador, busca “Verificaciones previas” y asegúrate de que estén configuradas todas las reglas de firewall necesarias. Las comprobaciones preliminares del servidor se ejecutan en el clúster de arranque en lugar de de forma local en la estación de trabajo de administrador.
1. Prepara la estación de trabajo de administrador
Asegúrate de haber configurado la estación de trabajo de administrador y poder acceder a ella como se describe en Crea una estación de trabajo de administrador. La estación de trabajo de administrador tiene las herramientas que necesitas para crear el clúster de administrador.
Realiza todos los pasos restantes de este documento en la estación de trabajo de administrador.
2. Completa el archivo de configuración
Si usaste gkeadm
para crear la estación de trabajo de administrador, se generó un archivo de configuración llamado admin-cluster.yaml
.
Si no usaste gkeadm
para crear la estación de trabajo de administrador, genera admin-cluster.yaml
mediante la ejecución del siguiente comando en la estación de trabajo de administrador:
gkectl create-config admin
Este archivo de configuración se usa para crear el clúster de administrador.
Familiarízate con el archivo de configuración mediante el análisis del documento del archivo de configuración del clúster de administrador. Se recomienda mantener este documento abierto en una pestaña o ventana separada, ya que harás referencia a él a medida que completes los siguientes pasos.
name
Si deseas especificar un nombre para el clúster de administrador, completa el campo name
.
bundlePath
El paquete es un archivo comprimido que contiene componentes del clúster. Se incluye en la estación de trabajo de administrador. Ya se completó este campo.
vCenter
Los campos de esta sección ya están completos con los valores que ingresaste cuando creaste la estación de trabajo de administrador.
network
Completa la sección network.controlPlaneIPBlock
y la sección network.hostConfig
. También establece adminMaster.replicas
en 3
.
Los campos network.podCIDR y network.serviceCIDR tienen valores prepropagados que puedes dejar sin modificar, a menos que entren en conflicto con direcciones que ya se usan en tu red. Kubernetes usa estos rangos para asignar direcciones IP a Pods y objetos Service en tu clúster.
Completa el resto de los campos de la sección de red del archivo de configuración según sea necesario.
loadBalancer
Reserva una VIP para el servidor de la API de Kubernetes del clúster de administrador. Proporciona la VIP como el valor de loadBalancer.vips.controlPlaneVIP
Para obtener más información, consulta VIP en la subred del clúster de administrador.
Decide qué tipo de balanceo de cargas quieres usar. Las opciones son las siguientes:
Balanceo de cargas en paquetes de MetalLB. Configura
loadBalancer.kind
como"MetalLB"
.Balanceo de cargas integrado en F5 BIG-IP. Configura
loadBalancer.kind
como"F5BigIP"
y completa la secciónf5BigIP
.Balanceo de cargas manual. Configura
loadBalancer.kind
como"ManualLB"
y completa la secciónmanualLB
.
Para obtener más información sobre las opciones de balanceo de cargas, consulta Descripción general del balanceo de cargas.
antiAffinityGroups
Configura antiAffinityGroups.enabled
como true
o false
según tus preferencias.
Usa este campo para especificar si deseas que Google Distributed Cloud cree reglas de antiafinidad de Distributed Resource Scheduler (DRS) de VMware para los nodos del clúster de administrador, lo que hace que se distribuyan en al menos tres hosts físicos de tu centro de datos.
adminMaster
Si deseas especificar CPU y memoria para los nodos del plano de control del clúster de administrador, completa los campos cpus
y memoryMB
en la sección adminMaster
.
Establece el campo replicas
en la sección adminMaster
en 3
.
proxy
Si la red que tendrá los nodos del clúster de administrador está detrás de un servidor proxy, completa la sección proxy
.
privateRegistry
Decide dónde deseas conservar las imágenes de contenedor para los componentes de Google Distributed Cloud. Las opciones son las siguientes:
Container Registry
Tu propio registro privado de Docker.
Si deseas usar tu propio registro privado, completa la sección privateRegistry
.
componentAccessServiceAccountKeyPath
Google Distributed Cloud usa tu cuenta de servicio de acceso a componentes para descargar componentes del clúster de Container Registry. Este campo contiene la ruta de acceso de un archivo de claves JSON para tu cuenta de servicio de acceso a los componentes.
Ya se completó este campo.
gkeConnect
Registra tu clúster de administrador en una flota de Google Cloud completando la sección gkeConnect
. Si incluyes las secciones stackdriver
y cloudAuditLogging
en el archivo de configuración, el ID en gkeConnect.projectID
debe ser el mismo que el ID establecido en stackdriver.projectID
y cloudAuditLogging.projectID
. Si los ID del proyecto no son los mismos, la creación del clúster fallará.
En la versión 1.28 y posteriores, tienes la opción de especificar una región en la que se ejecutan los servicios de Fleet y Connect en gkeConnect.location
. Si no incluyes este campo, el clúster usará las instancias globales de estos servicios.
Si incluyes gkeConnect.location
, la región que especifiques debe ser la misma que la región configurada en cloudAuditLogging.clusterLocation
, stackdriver.clusterLocation
y gkeOnPremAPI.location
. Si las regiones no son las mismas, la creación del clúster fallará.
gkeOnPremAPI
Si la API de GKE On-Prem está habilitada en tu proyecto de Google Cloud, todos los clústeres del proyecto se inscriben en la API de GKE On-Prem de forma automática en la región configurada en stackdriver.clusterLocation
.
La región gkeOnPremAPI.location
debe ser la misma que la región especificada en cloudAuditLogging.clusterLocation
, gkeConnect.location
y stackdriver.clusterLocation
. Si las regiones no son las mismas, la creación del clúster fallará.
Si deseas inscribir todos los clústeres del proyecto en la API de GKE On-Prem, asegúrate de seguir los pasos que se indican en Antes de comenzar para activar y usar la API de GKE On-Prem en el proyecto.
Si no deseas inscribir el clúster en la API de GKE On-Prem, incluye esta sección y configura
gkeOnPremAPI.enabled
comofalse
. Si no deseas inscribir ningún clúster en el proyecto, inhabilitagkeonprem.googleapis.com
(el nombre del servicio para la API de GKE On-Prem) en el proyecto. Para obtener instrucciones, consulta Inhabilita los servicios.
stackdriver
Si deseas habilitar Cloud Logging y Cloud Monitoring para tu clúster, completa la sección stackdriver
.
Esta sección es obligatoria de forma predeterminada. Es decir, si no completas esta sección, debes incluir la marca --skip-validation-stackdriver
cuando ejecutes gkectl create admin
.
Ten en cuenta los siguientes requisitos para los clústeres nuevos:
El ID en
stackdriver.projectID
debe ser el mismo que el ID engkeConnect.projectID
ycloudAuditLogging.projectID
.La región de Google Cloud establecida en
stackdriver.clusterLocation
debe ser la misma que la región establecida encloudAuditLogging.clusterLocation
ygkeConnect.location
(si el campo se incluye en tu archivo de configuración). Además, sigkeOnPremAPI.enabled
estrue
, la misma región se debe configurar engkeOnPremAPI.location
.
Si los IDs del proyecto y las regiones no son los mismos, la creación del clúster fallará.
cloudAuditLogging
Si deseas integrar los registros de auditoría del servidor de la API de Kubernetes del clúster a los registros de auditoría de Cloud, completa la sección cloudAuditLogging
.
Ten en cuenta los siguientes requisitos para los clústeres nuevos:
El ID en
cloudAuditLogging.projectID
debe ser el mismo que el ID engkeConnect.projectID
ystackdriver.projectID
.La región de Google Cloud establecida en
cloudAuditLogging.clusterLocation
debe ser la misma que la región establecida enstackdriver.clusterLocation
ygkeConnect.location
(si el campo se incluye en tu archivo de configuración). Además, sigkeOnPremAPI.enabled
estrue
, la misma región se debe configurar engkeOnPremAPI.location
.
Si los IDs del proyecto y las regiones no son los mismos, la creación del clúster fallará.
clusterBackup
Si deseas habilitar la creación de copias de seguridad del clúster de administrador, configura clusterBackup.datastore
en el almacén de datos de vSphere en el que deseas guardar las copias de seguridad del clúster.
autoRepair
Si deseas habilitar la reparación automática de nodos para el clúster de administrador, configura autoRepair.enabled
como true
.
secretsEncryption
Si deseas habilitar la encriptación de secretos siempre activa, completa la sección secretsEncryption
.
osImageType
Decide qué tipo de imagen de SO deseas usar para los nodos del clúster de administrador y completa la sección osImageType
según corresponda.
Ejemplo de archivos de configuración completados
Este es un ejemplo de un archivo de configuración de clúster de administrador completado. La configuración habilita algunas de las funciones disponibles, pero no todas.
vc-01-admin-cluster.yaml
apiVersion: v1 kind: AdminCluster name: "gke-admin-01" bundlePath: "/var/lib/gke/bundles/gke-onprem-vsphere-1.28.0-gke.1-full.tgz" vCenter: address: "vc01.example" datacenter: "vc-01" cluster: "vc01-workloads-1" resourcePool: "vc-01-pool-1" datastore: "vc01-datastore-1" caCertPath: "/usr/local/google/home/me/certs/vc01-cert.pem"" credentials: fileRef: path: "credential.yaml" entry: "vCenter" network: hostConfig: dnsServers: - "203.0.113.1" - "198.51.100.1" ntpServers: - "216.239.35.4" serviceCIDR: "10.96.232.0/24" podCIDR: "192.168.0.0/16" vCenter: networkName: "vc01-net-1" controlPlaneIPBlock: netmask: "255.255.248.0" gateway: "21.0.143.254" ips: - ip: "21.0.140.226" hostname: "admin-cp-vm-1" - ip: "21.0.141.48" hostname: "admin-cp-vm-2" - ip: "21.0.141.65" hostname: "admin-cp-vm-3" loadBalancer: vips: controlPlaneVIP: "172.16.20.59" kind: "MetalLB" antiAffinityGroups: enabled: true adminMaster: cpus: 4 memoryMB: 16384 replicas: 3 componentAccessServiceAccountKeyPath: "sa-key.json" gkeConnect: projectID: "my-project-123" registerServiceAccountKeyPath: "connect-register-sa-2203040617.json" stackdriver: projectID: "my-project-123" clusterLocation: "us-central1" enableVPC: false serviceAccountKeyPath: "log-mon-sa-2203040617.json" disableVsphereResourceMetrics: false clusterBackup: datastore: "vc-01-datastore-bu" autoRepair: enabled: true osImageType: "ubuntu_containerd"
Valida tu archivo de configuración
Una vez que hayas completado el archivo de configuración de tu clúster de administrador, ejecuta gkectl check-config
para verificar que el archivo sea válido:
gkectl check-config --config ADMIN_CLUSTER_CONFIG
Reemplaza ADMIN_CLUSTER_CONFIG por la ruta de acceso del archivo de configuración del clúster de administrador.
Si el comando muestra algún mensaje de error, soluciona los problemas y vuelve a validar el archivo.
Si deseas omitir las validaciones que llevan más tiempo, pasa la marca --fast
.
Para omitir validaciones individuales, usa las marcas --skip-validation-xxx
. Para obtener más información sobre el comando check-config
, consulta Ejecuta verificaciones previas.
3. Obtén imágenes de SO
Ejecuta gkectl prepare
para inicializar el entorno de vSphere:
gkectl prepare --config ADMIN_CLUSTER_CONFIG
El comando gkectl prepare
realiza las siguientes tareas de preparación:
Importa las imágenes de SO a vSphere y las marca como plantillas de VM.
Si usas un registro privado de Docker, envía las imágenes de contenedor a tu registro.
De manera opcional, valida las certificaciones de compilación de las imágenes de contenedor a fin de verificar que las imágenes hayan sido compiladas y firmadas por Google y que estén listas para la implementación.
5. Crea el clúster de administrador
Crea el clúster de administrador:
gkectl create admin --config ADMIN_CLUSTER_CONFIG
Si usas los Controles del servicio de VPC, es posible que veas errores cuando ejecutes algunos comandos de gkectl
, como "Validation Category: GCP - [UNKNOWN] GCP
service: [Stackdriver] could not get GCP services"
. Para evitar estos errores, agrega el parámetro --skip-validation-gcp
a tus comandos.
Reanuda la creación del clúster de administrador después de una falla
Si la creación del clúster de administrador falla o se cancela, puedes volver a ejecutar el comando create
:
gkectl create admin --config ADMIN_CLUSTER_CONFIG
Ubica el archivo kubeconfig del clúster de administrador
El comando gkectl create admin
crea un archivo kubeconfig llamado kubeconfig
en el directorio actual. Necesitarás este archivo kubeconfig más adelante para interactuar con tu clúster de administrador.
El archivo kubeconfig contiene el nombre de tu clúster de administrador. Para ver el nombre del clúster, puedes ejecutar lo siguiente:
kubectl config get-clusters --kubeconfig ADMIN_CLUSTER_KUBECONFIG
El resultado muestra el nombre del clúster. Por ejemplo:
NAME gke-admin-tqk8x
Si lo deseas, puedes cambiar el nombre y la ubicación de tu archivo kubeconfig.
Administra el archivo checkpoint.yaml
Cuando ejecutaste el comando gkectl create admin
para crear el clúster de administrador, se creó un archivo de punto de control en la misma carpeta del almacén de datos que el disco de datos del clúster de administrador. De forma predeterminada, este archivo tiene el nombre DATA_DISK_NAME ‑checkpoint.yaml
. Si la longitud de DATA_DISK_NAME es mayor o igual que 245 caracteres, debido al límite de vSphere en la longitud del nombre de archivo, el nombre es DATA_DISK_NAME.yaml
.
Este archivo contiene las credenciales y el estado del clúster de administrador, y se usa para actualizaciones futuras. No borres este archivo, a menos que sigas el proceso para borrar un clúster de administrador.
Si habilitaste la encriptación de VM en tu instancia de vCenter Server, debes tener el privilegio Cryptographic operations.Direct Access antes de crear o actualizar el clúster de administrador. De lo contrario, no se subirá el punto de control. Si no puedes obtener este privilegio, puedes inhabilitar la carga del archivo de punto de control con la marca oculta --disable-checkpoint
cuando ejecutes un comando relevante.
El archivo checkpoint.yaml
se actualiza automáticamente cuando ejecutas el comando gkectl upgrade admin
o cuando ejecutas un comando gkectl update
que afecta el clúster de administrador.
6. Verifica que el clúster de administrador esté en ejecución
Verifica que el clúster de administrador esté en ejecución:
kubectl get nodes --kubeconfig ADMIN_CLUSTER_KUBECONFIG
Reemplaza ADMIN_CLUSTER_KUBECONFIG por la ruta de acceso del archivo kubeconfig del clúster de administrador.
En el resultado, se muestran los nodos del clúster de administrador. Por ejemplo:
admin-cp-vm-1 Ready control-plane,master ... admin-cp-vm-2 Ready control-plane,master ... admin-cp-vm-3 Ready control-plane,master ...
7. Crea una copia de seguridad de tus archivos
Te recomendamos que crees una copia de seguridad del archivo kubeconfig del clúster de administrador. Es decir, copia el archivo kubeconfig de la estación de trabajo de administrador a otra ubicación. Por lo tanto, si pierdes el acceso a la estación de trabajo de administrador o si el archivo kubeconfig en la estación de trabajo de administrador se borra por accidente, aún tendrás acceso al clúster de administrador.
También te recomendamos que crees una copia de seguridad de la clave SSH privada del clúster de administrador. Por lo tanto, si pierdes el acceso al clúster de administrador, puedes seguir usando SSH para conectarte a los nodos del clúster de administrador. Esto te permitirá investigar y solucionar cualquier problema de conectividad al clúster de administrador.
Extrae la clave SSH del clúster de administrador a un archivo llamado admin-cluster-ssh-key
:
kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG get secrets -n kube-system sshkeys \ -o jsonpath='{.data.vsphere_tmp}' | base64 -d > admin-cluster-ssh-key
Ahora puedes crear una copia de seguridad de admin-cluster-ssh-key
en otra ubicación que elijas.
Políticas de RBAC
Cuando completas la sección gkeConnect
en el archivo de configuración de tu clúster de administrador, el clúster se registra en tu flota durante la creación o la actualización. Para habilitar la funcionalidad de administración de flotas, Google Cloud implementa el agente de Connect y crea una cuenta de servicio de Google que representa el proyecto en el que está registrado el clúster.
El agente de Connect establece una conexión con la cuenta de servicio para controlar las solicitudes al servidor de la API de Kubernetes del clúster. Esto habilita el acceso a las funciones de administración de cargas de trabajo y clústeres en Google Cloud, incluido el acceso a la consola de Google Cloud, que te permite interactuar con tu clúster.
El servidor de la API de Kubernetes del clúster de administrador debe poder autorizar solicitudes del agente de Connect. Para garantizar esto, se configuran las siguientes políticas de control de acceso basado en funciones (RBAC) en la cuenta de servicio:
Una política de robo de identidad que autoriza al agente de Connect a enviar solicitudes al servidor de la API de Kubernetes en nombre de la cuenta de servicio.
Una política de permisos que especifica las operaciones permitidas en otros recursos de Kubernetes.
La cuenta de servicio y las políticas de RBAC son necesarias para que puedas administrar el ciclo de vida de los clústeres de usuario en la consola de Google Cloud.
Soluciona problemas
Consulta Soluciona problemas de creación y actualización de clústeres.