Crear un clúster de administrador para usarlo en dominios de topología

En esta página se muestra cómo crear un clúster de administrador para usarlo en los dominios de topología de Google Distributed Cloud. El clúster de administrador gestiona los clústeres de usuarios que ejecutan tus cargas de trabajo. Para usar dominios de topología, se necesita la versión 1.31 o una posterior de Google Distributed Cloud.

Para configurar un dominio de topología, debes habilitar el clúster avanzado. Ten en cuenta las siguientes limitaciones de la vista previa de clústeres avanzados:

  • Solo puedes habilitar clústeres avanzados al crear clústeres 1.31 nuevos.
  • Una vez que se haya habilitado el clúster avanzado, no podrás actualizarlo a la versión 1.32. Habilita el clúster avanzado solo en un entorno de prueba.

Esta página está dirigida a administradores, arquitectos y operadores que configuran, monitorizan y gestionan la infraestructura tecnológica. Para obtener más información sobre los roles habituales y las tareas de ejemplo a las que hacemos referencia en el contenido de Google Cloud , consulta Roles y tareas de usuario habituales de GKE.

Para obtener más información 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 para crear un clúster de administradores:

  1. Rellena el archivo de configuración de administrador
    Especifica los detalles del nuevo clúster de administrador completando un archivo de configuración de clúster de administrador.
  2. Rellena el archivo de configuración de tu infraestructura de vSphere
    Especifica los detalles sobre los dominios de tu topología en un archivo de configuración de infraestructura de vSphere.
  3. Rellena el archivo de bloque de IP
    Especifica las direcciones IP de la pasarela, la máscara de red y los nodos del plano de control en un archivo de bloque de IP.
  4. Obtener imágenes de SO
    Descarga el paquete normal de Google Distributed Cloud. A continuación, ejecuta gkectl prepare, que importa las imágenes del SO a vSphere e inserta las imágenes de contenedor en el registro privado, si procede.
  5. Crea un clúster de administrador.
    Usa gkectl para crear un clúster de administrador tal como se especifica en los archivos de configuración completados. Cuando Google Distributed Cloud crea un clúster de administrador, implementa un clúster de Kubernetes en Docker (kind) para alojar temporalmente los controladores de Kubernetes necesarios para crear el clúster de administrador. Este clúster transitorio se denomina clúster de arranque. El administrador encargado crea y actualiza los clústeres de usuarios sin usar un clúster de arranque.
  6. Comprueba que tu clúster de administrador esté en funcionamiento.
    Usa kubectl para ver los nodos del clúster.

Al final de este procedimiento, tendrás un clúster de administrador en funcionamiento que podrás usar para crear y gestionar clústeres de usuarios en dominios de topología.

Antes de empezar

Rellena el archivo de configuración del clúster de administrador

Si has usado gkeadm para crear tu estación de trabajo de administrador, se habrá generado un archivo de configuración llamado admin-cluster.yaml.

Si no has usado gkeadm para crear tu estación de trabajo de administrador, genera admin-cluster.yaml ejecutando este comando en tu 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 consultando el documento Archivo de configuración de clúster de administradores. Te recomendamos que mantengas este documento abierto en otra pestaña o ventana, ya que lo consultarás cuando completes los pasos siguientes.

name

Si quieres especificar un nombre para tu clúster de administrador, rellena el campo name.

bundlePath

El paquete es un archivo comprimido que contiene componentes de clúster. Se incluye con la estación de trabajo de administrador. Este campo ya está rellenado.

enableAdvancedCluster

Asigna el valor true a enableAdvancedCluster. Esto habilita los clústeres avanzados, que son necesarios para configurar dominios de topología.

infraConfigFilePath

Añade la ruta completa al archivo de configuración de la infraestructura de vSphere en el campo infraConfigFilePath.

vCenter

Elimina toda esta sección. En su lugar, debe configurar la información de vCenter Server en el archivo de configuración de la infraestructura de vSphere.

network

  • Elimina lo siguiente del archivo de configuración:

    • Toda la sección network.hostConfig. Esta información se configura en el archivo de configuración de la infraestructura de vSphere por dominio de topología.
    • El campo network.vCenter.networkName. Este campo se configura en el archivo de configuración de la infraestructura de vSphere por dominio de topología.
    • Toda la sección network.controlPlaneIPBlock. Las direcciones IP de la pasarela, la máscara de red y los nodos del plano de control se configuran en un archivo de bloque de IPs.
  • Asigna a network.ipMode.ipBlockFilePath la ruta al archivo de bloque de IP.

  • Asigna el valor static a network.ipMode.type.

  • Los campos network.podCIDR y network.serviceCIDR tienen valores predefinidos que puedes dejar sin modificar, a menos que entren en conflicto con direcciones que ya se estén usando en tu red. Kubernetes usa estos intervalos para asignar direcciones IP a los pods y servicios de tu clúster.

loadBalancer

  • Asigna el valor "ManualLB" a loadBalancer.kind y elimina la sección manualLB.

  • Reserva una dirección IP virtual para el servidor de la API de Kubernetes de tu clúster de administrador. Proporciona tu VIP como valor de loadBalancer.vips.controlPlaneVIP

Para obtener más información, consulta VIPs in the admin cluster subnet (VIPs en la subred del clúster de administración).

antiAffinityGroups

Asigna el valor false a antiAffinityGroups.enabled. Las reglas de antiafinidad de Distributed Resource Scheduler (DRS) no se admiten con dominios de topología.

adminMaster

  • Si quieres especificar la CPU y la memoria de los nodos del plano de control del clúster de administrador, rellena los campos cpus y memoryMB de la sección adminMaster.

  • Los clústeres de administrador deben tener tres nodos del plano de control. En el campo replicas de la sección adminMaster, introduzca el valor 3.

  • Si quieres especificar un dominio de topología concreto para que lo usen los nodos del plano de control, añade el nombre del dominio de topología al campo adminMaster.topologyDomains. Si no especificas ningún nombre aquí, debes definirlo en vSphereInfraConfig.defaultTopologyDomain en el archivo de configuración de la infraestructura de vSphere.

proxy

Si la red que tendrá los nodos de tu clúster de administrador está detrás de un servidor proxy, rellena la sección proxy.

privateRegistry

Decide dónde quieres conservar las imágenes de contenedor de los componentes de Google Distributed Cloud. Las opciones disponibles son:

  • Artifact Registry

  • Tu propio registro de Docker privado.

    Si quieres usar tu propio registro privado, rellena la sección privateRegistry.

componentAccessServiceAccountKeyPath

Google Distributed Cloud usa tu cuenta de servicio de acceso a componentes para descargar componentes de clúster de Artifact Registry. Este campo contiene la ruta de un archivo de clave JSON de tu cuenta de servicio de acceso a componentes.

Este campo ya está rellenado.

gkeConnect

Registre su clúster de administrador en una flota Google Cloud rellenando la sección gkeConnect. El ID de gkeConnect.projectID debe ser el mismo que el ID definido en stackdriver.projectID y cloudAuditLogging.projectID. Si los IDs de proyecto no son los mismos, no se podrá crear el clúster.

También puedes especificar una región en la que se ejecuten la flota y los servicios de Connect en gkeConnect.location. Si no incluyes este campo, el clúster usará las instancias globales de estos servicios.

Si incluye gkeConnect.location, la región que especifique debe ser la misma que la configurada en cloudAuditLogging.clusterLocation, stackdriver.clusterLocation y gkeOnPremAPI.location. Si las regiones no son las mismas, no se podrá crear el clúster.

gkeOnPremAPI

En esta sección se describe cómo se registran los clústeres en la API de GKE On-Prem.

La herramienta de línea de comandos gkectl es la única herramienta de gestión del ciclo de vida de clústeres disponible para clústeres que usan dominios de topología. Aunque la consola, la CLI de Google Cloud y Terraform no son compatibles con los clústeres que usan dominios de topología, puedes registrar el clúster en la API de GKE On-Prem cuando se cree. Google Cloud

Si la API de GKE On-Prem está habilitada en tu Google Cloud proyecto, todos los clústeres del proyecto se registrarán automáticamente en la API de GKE On-Prem en la región configurada en stackdriver.clusterLocation. La región gkeOnPremAPI.location debe ser la misma que la especificada en cloudAuditLogging.clusterLocation, gkeConnect.location y stackdriver.clusterLocation. Si las regiones no son las mismas, no se podrá crear el clúster.

  • Si quieres registrar todos los clústeres del proyecto en la API de GKE On-Prem, sigue los pasos que se indican en la sección Antes de empezar para activar y usar la API de GKE On-Prem en el proyecto.

  • Si no quieres registrar el clúster en la API GKE On-Prem, incluye esta sección y asigna el valor false a gkeOnPremAPI.enabled. Si no quieres registrar ningún clúster en el proyecto, inhabilita gkeonprem.googleapis.com (el nombre del servicio de la API de GKE On-Prem) en el proyecto. Para obtener instrucciones, consulta Inhabilitar servicios.

stackdriver

Rellena la sección stackdriver para habilitar Cloud Logging y Cloud Monitoring en tu clúster.

Ten en cuenta los siguientes requisitos:

  • El ID de stackdriver.projectID debe ser el mismo que el de gkeConnect.projectID y cloudAuditLogging.projectID.

  • La región definida en stackdriver.clusterLocation debe ser la misma que la definida en cloudAuditLogging.clusterLocation y gkeConnect.location. Google Cloud Además, si gkeOnPremAPI.enabled es true, se debe definir la misma región en gkeOnPremAPI.location.

Si los IDs de proyecto y las regiones no son los mismos, no se podrá crear el clúster.

cloudAuditLogging

Si quieres integrar los registros de auditoría del servidor de la API de Kubernetes de tu clúster con los registros de auditoría de Cloud, rellena la sección cloudAuditLogging.

Ten en cuenta los siguientes requisitos para los clústeres nuevos:

  • Como enableAdvancedCluster se ha definido como true, debe especificar la misma ruta en cloudAuditLogging.serviceAccountKeyPath y stackdriver.serviceAccountKeyPath.

  • El ID de cloudAuditLogging.projectID debe ser el mismo que el de gkeConnect.projectID y stackdriver.projectID.

  • La región definida en Google Cloud y cloudAuditLogging.clusterLocation debe ser la misma que la definida en stackdriver.clusterLocation y gkeConnect.location (si el campo se incluye en el archivo de configuración). Además, si gkeOnPremAPI.enabled es true, se debe definir la misma región en gkeOnPremAPI.location.

Si los IDs de proyecto y las regiones no son los mismos, no se podrá crear el clúster.

clusterBackup

Elimina esta sección. No se admite la creación de copias de seguridad del clúster de administrador en un almacén de datos de vSphere.

autoRepair

Si quieres habilitar la reparación automática de nodos en tu clúster de administrador, define autoRepair.enabled en true.

secretsEncryption

Como enableAdvancedCluster está definido como true, elimina esta sección.

osImageType

Define el osImageType. a ubuntu_cgroupv2 o ubuntu_containerd.

preparedSecrets

Elimina el campo preparedSecrets. Las credenciales preparadas no se admiten cuando los dominios de topología están habilitados.

Ejemplo de archivos de configuración rellenados

A continuación, se muestra un ejemplo de un archivo de configuración de clúster de administradores rellenado. 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.31.0-gke.1-full.tgz"
enableAdvancedCluster: true
infraConfigFilePath: "/my-config-folder/vsphere-infrastructure-config.yaml"
network:
  serviceCIDR: "10.96.232.0/24"
  podCIDR: "192.168.0.0/16"
  ipMode:
    type: "static"
    ipBlockFilePath: "/my-config-folder/admin-cluster-ipblock.yaml"
loadBalancer:
  vips:
    controlPlaneVIP: "172.16.20.59"
  kind: "ManualLB"
antiAffinityGroups:
  enabled: false
adminMaster:
  cpus: 4
  memoryMB: 16384
  replicas: 3
  topologyDomains: "admin-cluster-domain"
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
autoRepair:
  enabled: true
osImageType: "ubuntu_containerd"

Rellena el archivo de configuración de tu infraestructura de vSphere

Copia la plantilla del archivo de configuración de la infraestructura de vSphere en el archivo del directorio que hayas especificado en el campo infraConfigFilePath del archivo de configuración del clúster de administrador. Solo hay un archivo de configuración de infraestructura de vSphere para el clúster de administrador y todos los clústeres de usuarios gestionados.

Secret

Rellena la sección Secret del archivo de configuración de la infraestructura de vSphere. En esta sección se describe el secreto de las credenciales de vSphere, que almacena las credenciales de cada servidor vCenter.

VSphereInfraConfig.name

Rellena el campo VSphereInfraConfig,name.

VSphereInfraConfig.credentials.vCenters

Por cada Secret, añade una sección VSphereInfraConfig.credentials.vCenters correspondiente.

VSphereInfraConfig,topologyDomains

Rellena la sección VSphereInfraConfig.topologyDomains para definir los dominios de topología.

Rellena el archivo de bloque de IP

Copia la plantilla del archivo de bloqueo de IPs en el archivo del directorio que hayas especificado en el campo network.ipMode.ipBlockFilePath del archivo de configuración del clúster de administrador. Añade las direcciones IP de la pasarela, la máscara de subred y los tres nodos del plano de control. Por cada dirección IP del nodo del plano de control, añada isControlPlane: true tal como se muestra en el ejemplo de dominios de topología.

Obtener imágenes de SO

  1. Descarga el paquete normal de Google Distributed Cloud en la estación de trabajo del administrador:

    gcloud storage cp gs://gke-on-prem-release/gke-onprem-bundle/VERSION/gke-onprem-vsphere-VERSION.tgz /var/lib/gke/bundles/gke-onprem-vsphere-VERSION.tgz
    

    Sustituye VERSION por la versión de Google Distributed Cloud que quieras instalar.

    Este comando descarga el paquete normal. No descargues el paquete completo, ya que no es compatible con los clústeres avanzados.

  2. Ejecuta gkectl prepare para inicializar tu entorno de vSphere:

    gkectl prepare --config ADMIN_CLUSTER_CONFIG
    

    Sustituye ADMIN_CLUSTER_CONFIG por la ruta de la configuración del clúster de administrador.

    El comando gkectl prepare realiza las siguientes tareas preparatorias:

    • Importa imágenes de SO a vSphere y las marca como plantillas de VM.

    • Si usas un registro de Docker privado, envía las imágenes de contenedor a tu registro.

    • Opcionalmente, valida las atestaciones de compilación de las imágenes de contenedor, lo que permite verificar que Google ha compilado y firmado las imágenes, y que están listas para el despliegue.

Crear el clúster de administrador

Crea el clúster de administrador:

gkectl create admin --config ADMIN_CLUSTER_CONFIG

Reanudar la creación del clúster de administradores tras un fallo

Si se produce un error al crear el clúster de administrador o se cancela, puedes volver a ejecutar el comando create:

gkectl create admin --config ADMIN_CLUSTER_CONFIG

Localizar 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 el siguiente comando:

kubectl config get-clusters --kubeconfig ADMIN_CLUSTER_KUBECONFIG

El resultado muestra el nombre del clúster. Por ejemplo:

NAME
gke-admin-tqk8x

Si quieres, puedes cambiar el nombre y la ubicación del archivo kubeconfig.

Verificar que el clúster de administrador se está ejecutando

Comprueba que tu clúster de administrador se está ejecutando:

kubectl get nodes --kubeconfig ADMIN_CLUSTER_KUBECONFIG

Sustituye ADMIN_CLUSTER_KUBECONFIG por la ruta del archivo kubeconfig de tu clúster de administrador.

El resultado muestra 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   ...

Configurar tu PodTemplate

La etiqueta de topología se rellena con las etiquetas de los nodos del dominio de topología. A menos que la configuración del dominio de tu topología haya usado la restricción predeterminada, "topology.kubernetes.io/zone" como clave de topología, debes configurar la clave de topología en la plantilla de pod de tu Deployment, StatefulSet o ReplicaSet, según corresponda.

Por ejemplo, supongamos que ha definido la clave en la etiqueta de topología como "topology.examplepetstore.com/zone". En PodTemplate, especifica la clave como valor del campo topologySpreadConstraints.topologyKey. Esto permite que el programador de Kubernetes distribuya los pods en el dominio de topología para asegurar la alta disponibilidad y evitar la concentración excesiva en una sola zona en caso de fallo.

Para obtener más información sobre cómo configurar topologySpreadConstraints, consulta el artículo sobre restricciones de distribución de topología de pods de la documentación de Kubernetes.

Crear copias de seguridad de archivos

Te recomendamos que hagas una copia de seguridad del archivo kubeconfig de tu clúster de administrador. Es decir, copia el archivo kubeconfig de tu estación de trabajo de administrador a otra ubicación. De esta forma, si pierdes el acceso a la estación de trabajo del administrador o si el archivo kubeconfig de tu estación de trabajo del administrador se elimina por error, seguirás teniendo acceso al clúster de administrador.

También te recomendamos que hagas una copia de seguridad de la clave SSH privada de tu clúster de administrador. De esta forma, si pierdes el acceso al clúster de administrador, podrás seguir usando SSH para conectarte a los nodos del clúster de administrador. De esta forma, podrá solucionar e investigar cualquier problema de conectividad con el clúster de administrador.

Extrae la clave SSH del clúster de administrador en 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.

Solución de problemas

Consulta Solucionar problemas de creación y actualización de clústeres.

Siguientes pasos

Crear un clúster de usuarios para usarlo en el dominio de topología