Crea 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 administra los clústeres de usuario que ejecutan tus cargas de trabajo. Se requiere la versión 1.31 o una posterior de Google Distributed Cloud para usar dominios de topología.

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

  • Puedes habilitar el clúster avanzado en el momento de la creación del clúster solo para clústeres nuevos de 1.31.
  • Una vez que se habilite el clúster avanzado, no podrás actualizarlo a la versión 1.32. Habilita solo el clúster avanzado en un entorno de prueba.

Esta página está destinada a administradores, arquitectos y operadores que configuran, supervisan y administran la infraestructura tecnológica. Para obtener más información sobre los roles comunes y las tareas de ejemplo a las que hacemos referencia en el contenido de Google Cloud , consulta Tareas y roles comunes de los usuarios de GKE Enterprise.

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:

  1. Completa el archivo de configuración de administrador
    Especifica los detalles de tu clúster de administrador nuevo completando un archivo de configuración del clúster de administrador.
  2. Completa el archivo de configuración de la infraestructura de vSphere
    Especifica los detalles de tus dominios de topología en un archivo de configuración de la infraestructura de vSphere.
  3. Completa el archivo de bloqueo de IP
    Especifica las direcciones IP de la puerta de enlace, la máscara de red y los nodos del plano de control en un archivo de bloque de IP.
  4. Obtén imágenes de SO
    Descarga el paquete normal de Google Distributed Cloud. Luego, ejecuta gkectl prepare, que importa las imágenes del SO a vSphere y envía imágenes de contenedores al registro privado, si corresponde.
  5. 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 (similar) para alojar de forma 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 que los administra crea y actualiza los clústeres de usuario sin usar un clúster de arranque.
  6. 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 en dominios de topología.

Antes de comenzar

Completa el archivo de configuración de tu clúster de administrador

Si usaste gkeadm para crear tu estación de trabajo de administrador, se generó un archivo de configuración llamado admin-cluster.yaml.

Si no usaste gkeadm para crear tu estación de trabajo de administrador, genera admin-cluster.yaml ejecutando el siguiente comando en tu estación de trabajo de administrador:

gkectl create-config admin

Este archivo de configuración sirve para crear tu 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.

enableAdvancedCluster

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

infraConfigFilePath

Agrega la ruta de acceso completa al archivo de configuración de la infraestructura de vSphere en el campo infraConfigFilePath.

vCenter

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

network

  • Quita 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 puerta de enlace, la máscara de red y los nodos del plano de control se configuran en un archivo de bloques de IP.
  • Establece network.ipMode.ipBlockFilePath en la ruta de acceso al archivo de bloque de IP.

  • Establece network.ipMode.type como static.

  • 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.

loadBalancer

  • Configura loadBalancer.kind como "ManualLB" y quita la sección manualLB.

  • Reserva una VIP para el servidor de la API de Kubernetes del clúster de administrador. Proporciona tu VIP como el valor de loadBalancer.vips.controlPlaneVIP.

Para obtener más información, consulta VIP en la subred del clúster de administrador.

antiAffinityGroups

Configura antiAffinityGroups.enabled como false. Las reglas de antiafinidad de Distributed Resource Scheduler (DRS) no son compatibles con los dominios de topología.

adminMaster

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

  • Los clústeres de administrador deben tener tres nodos de plano de control. Establece el campo replicas en la sección adminMaster como 3.

  • Si deseas especificar un dominio de topología específico para que usen los nodos del plano de control, agrega el nombre del dominio de topología al campo adminMaster.topologyDomains. Si no especificas un nombre aquí, debes establecer uno en vSphereInfraConfig.defaultTopologyDomain en el archivo de configuración de la infraestructura de vSphere.

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:

  • Artifact 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 los componentes para descargar los componentes del clúster desde Artifact 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. El ID en gkeConnect.projectID debe ser el mismo que el ID establecido en stackdriver.projectID y cloudAuditLogging.projectID. Si los IDs de proyecto no son los mismos, la creación del clúster fallará.

De forma opcional, puedes especificar una región en la que se ejecutan los servicios de la flota y de conexión 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

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

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

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 automáticamente 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 como false. Si no deseas inscribir ningún clúster en el proyecto, inhabilita gkeonprem.googleapis.com (el nombre del servicio para la API de GKE On-Prem) en el proyecto. Para obtener instrucciones, consulta Inhabilita servicios.

stackdriver

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

Ten en cuenta los siguientes requisitos:

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

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

Si los IDs y las regiones de los proyectos 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:

  • Como enableAdvancedCluster está configurado como true, debes especificar la misma ruta de acceso en cloudAuditLogging.serviceAccountKeyPath y stackdriver.serviceAccountKeyPath.

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

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

Si los IDs y las regiones de los proyectos no son los mismos, la creación del clúster fallará.

clusterBackup

Quita 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 deseas habilitar la reparación automática de nodos para el clúster de administrador, configura autoRepair.enabled como true.

secretsEncryption

Como enableAdvancedCluster está configurado en true, quita esta sección.

osImageType

Establece osImageType. a ubuntu_cgroupv2 y ubuntu_containerd.

preparedSecrets

Quita el campo preparedSecrets. Las credenciales preparadas no se admiten cuando se habilitan los dominios de topología.

Ejemplo de archivos de configuración completados

Este es un ejemplo de un archivo de configuración de clúster de administrador completo. La configuración habilita algunas funciones, pero no todas las disponibles.

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"

Completa el archivo de configuración de la infraestructura de vSphere

Copia la plantilla del archivo de configuración de la infraestructura de vSphere en el archivo del directorio que especificaste 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 usuario administrados.

Secret

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

VSphereInfraConfig.name

Completa el campo VSphereInfraConfig,name.

VSphereInfraConfig.credentials.vCenters

Para cada Secret, agrega una sección VSphereInfraConfig.credentials.vCenters correspondiente.

VSphereInfraConfig,topologyDomains

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

Completa el archivo de bloqueo de IP

Copia la plantilla del archivo de bloque de IP en el archivo del directorio que especificaste en el campo network.ipMode.ipBlockFilePath del archivo de configuración del clúster de administrador. Agrega las direcciones IP de la puerta de enlace, la máscara de subred y los tres nodos del plano de control. Para cada dirección IP del nodo del plano de control, agrega isControlPlane: true como se muestra en el ejemplo de dominios de topología.

Obtén 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
    

    Reemplaza VERSION por la versión de Google Distributed Cloud que deseas 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 el entorno de vSphere:

    gkectl prepare --config ADMIN_CLUSTER_CONFIG
    

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

    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.

Crea el clúster de administrador:

Crea el clúster de administrador:

gkectl create admin --config ADMIN_CLUSTER_CONFIG

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

kubectl config get-clusters --kubeconfig ADMIN_CLUSTER_KUBECONFIG

En el resultado, se 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.

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   ...

Configura tu PodTemplate

La etiqueta de topología se propaga a las etiquetas de los nodos en el dominio de topología. A menos que la configuración de tu dominio de topología haya usado la restricción predeterminada, "topology.kubernetes.io/zone" como la 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 definiste la clave en la etiqueta de topología como "topology.examplepetstore.com/zone". En PodTemplate, especificas la clave como el valor del campo topologySpreadConstraints.topologyKey. Esto permite que el programador de Kubernetes distribuya Pods en el dominio de topología para garantizar una alta disponibilidad y evitar la sobreconcentración en una sola área en caso de falla.

Para obtener más información sobre la configuración de topologySpreadConstraints, consulta Restricciones de propagación de topología de pod en la documentación de Kubernetes.

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. Luego, si pierdes el acceso a la estación de trabajo de administrador o si el archivo kubeconfig de la estación de trabajo de administrador se borra accidentalmente, seguirás teniendo acceso al clúster de administrador.

También te recomendamos que crees una copia de seguridad de la clave privada SSH de tu clúster de administrador. Luego, si pierdes el acceso al clúster de administrador, podrás usar SSH para conectarte a los nodos del clúster de administrador. Esto te permitirá solucionar e investigar cualquier problema de conectividad con el 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.

Soluciona problemas

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

¿Qué sigue?

Crea un clúster de usuario para usarlo en el dominio de topología