Crea un clúster de administrador con "gkectl"

Crea un clúster de administrador para el software de Google Distributed Cloud solo para VMware con gkectl. Usa gkectl si necesitas administrar todo el ciclo de vida del clúster de administrador de forma local en tu entorno local para cumplir con requisitos estrictos de seguridad, cumplimiento o aislamiento. También puedes crear un clúster de administrador con Terraform o Google Cloud la consola.

Antes de comenzar

  • Asegúrate de haber configurado tu estación de trabajo de administrador y de poder acceder a ella como se describe en Crea una estación de trabajo de administrador.

  • Asegúrate de que los archivos de claves JSON para las cuentas de servicio estén en tu estación de trabajo de administrador.

  • 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 los balanceadores de cargas manuales, debes configurar el balanceador de cargas antes de crear tu clúster de administrador.

  • Si usas gkectl para crear el clúster de administrador, decide si deseas usar un registro público o privado para los componentes de Google Distributed Cloud. Para obtener información sobre el uso de un registro privado de Docker, consulta privateRegistry. Ni Terraform ni la Google Cloud consola admiten el uso de un registro privado de Docker para los componentes del sistema.

  • Decide qué tipo de sistema operativo deseas ejecutar en los nodos del clúster de administrador.

  • Si tu organización requiere que el tráfico saliente pase por un proxy server, asegúrate de incluir en la lista de entidades permitidas las APIs requeridas y la dirección de Artifact Registry.

  • En la versión 1.29 y versiones posteriores, las comprobaciones previas del servidor están habilitadas de forma predeterminada. Las comprobaciones previas del lado del servidor requieren reglas de firewall adicionales. En Reglas de firewall para clústeres de administrador, busca "Comprobaciones previas" y asegúrate de que todas las reglas de firewall necesarias estén configuradas. Las comprobaciones previas del lado del servidor se ejecutan en el clúster de arranque en lugar de forma local en la estación de trabajo de administrador.

Descripción general del procedimiento

Estos son los pasos principales que se deben seguir para crear un clúster de administrador:

  1. Completa los archivos de configuración. Especifica los detalles de tu nuevo archivo de configuración de credenciales de administrador y, posiblemente, un archivo de bloque de IP.

  2. Importa imágenes de SO a vSphere y, luego, envía imágenes de contenedores al registro privado. Ejecuta gkectl prepare.

  3. 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. Los clústeres de usuario son creados y actualizados por su administrador sin el uso de un clúster de arranque.

  4. 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 gkectl comandos, 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.

Completa el archivo de configuración

  • Asegúrate de que tu estación de trabajo de administrador tenga la versión requerida de gkectl. Por lo general, usas la misma versión de gkectl que la versión que se usará cuando crees el clúster. Especifica la versión del clúster en el campo gkeOnPremVersion del archivo de configuración del clúster. Las siguientes reglas de versión se aplican durante la creación del clúster:

    • La versión secundaria de gkectl no puede ser inferior a la versión secundaria del clúster. Por ejemplo, no se permite crear un clúster 1.30 con la versión 1.29 de gkectl. Las versiones de los parches no importan. Por ejemplo, puedes usar la versión 1.29.0-gke.1456 de gkectl para crear un clúster con una versión de parche superior, como 1.29.1000-gke.94.

    • La versión secundaria de gkectl no puede ser más de dos versiones secundarias superiores a la versión del clúster. Por ejemplo, si creas un clúster 1.28, la versión de gkectl puede ser 1.29 o 1.30. Sin embargo, no puedes usar la versión 1.31 de gkectl, ya que es tres versiones secundarias superiores a la versión del clúster.

    Si es necesario, consulta Descarga gkectl para obtener una versión compatible de gkectl.

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

vCenter

Los campos ya están completados con los valores que ingresaste cuando creaste tu estación de trabajo de administrador.

enableAdvancedCluster

En la versión 1.31, si deseas habilitar la función de clúster avanzado, configura enableAdvancedCluster como true.

Ten en cuenta las siguientes diferencias entre las versiones:

  • En la versión 1.31, la función de clúster avanzado está en versión preliminar:

    • Solo puedes habilitar el clúster avanzado en el momento de la creación del clúster para los clústeres 1.31 nuevos.

    • Después de habilitar el clúster avanzado, no podrás actualizar el clúster a la versión 1.32. Solo habilita el clúster avanzado en un entorno de prueba.

  • En la versión 1.32, la función de clúster avanzado está en DG.

    • De forma predeterminada, los clústeres de administrador se crean como clústeres avanzados. Debes configurar enableAdvancedCluster de forma explícita como false si deseas crear un clúster no avanzado.

    • Para los clústeres que tienen habilitada la función de clústeres avanzados, se admiten las actualizaciones de clústeres.

  • En la versión 1.33 y versiones posteriores, todos los clústeres se crean como clústeres avanzados. Si configuras enableAdvancedCluster como false, la creación del clúster fallará.

network

Completa la network.controlPlaneIPBlock sección y la network.hostConfig sección. También configura adminMaster.replicas como 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 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.

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 manual. Configura loadBalancer.kind como "ManualLB" y quita la manualLB sección.

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 a fin de especificar si deseas que clústeres de Google Distributed Cloud cree reglas de antiafinidad de Distributed Resource Scheduler (DRS) para los nodos del clúster de administrador, lo que hace que se repartan en al menos tres hosts físicos del centro de datos

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 adminMaster sección.

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

proxy

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

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 privateRegistry sección.

Para obtener más información sobre el uso de un registro privado, incluidas las diferencias entre los clústeres normales y los clústeres avanzados, consulta Configura un registro de contenedor privado.

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 Google Cloud flota completando la gkeConnect sección. 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 IDs de proyecto no son los mismos, la creación del clúster fallará.

En la versión 1.28 y versiones posteriores, puedes especificar de forma opcional 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

Si la API de GKE On-Prem está habilitada en tu Google Cloud proyecto, 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 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

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:

  • Si habilitas el clúster avanzado, debes especificar la misma ruta de acceso en cloudAuditLogging.serviceAccountKeyPath y stackdriver.serviceAccountKeyPath.

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

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

Si los IDs de 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 cloudAuditLogging sección.

Ten en cuenta los siguientes requisitos:

  • Si habilitas el clúster avanzado, debes especificar la misma ruta de acceso en cloudAuditLogging.serviceAccountKeyPath y stackdriver.serviceAccountKeyPath.

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

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

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

clusterBackup

Si deseas habilitar la copia 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.

Si habilitas el clúster avanzado, quita esta sección. No se admite la copia 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

Si deseas habilitar la encriptación de secretos siempre activa, completa la secretsEncryption sección.

Si habilitas el clúster avanzado, configura secretsEncryption.enabled como false. No se admite la encriptación de secretos siempre activa.

osImageType

Decide qué tipo de imagen de SO deseas usar para los nodos del clúster de administrador y completa la osImageType sección según corresponda.

Si habilitas el clúster avanzado, configura osImageType como ubuntu_cgroupv2 o ubuntu_containerd.

Ejemplo de archivos de configuración completados

A continuación, se muestra un ejemplo de un archivo de configuración del 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.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-yyy. Para obtener más información sobre el comando check-config, consulta Ejecuta verificaciones previas.

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.

Si configuraste tu bundlePath para usar un paquete completo, gkectl prepare usa las imágenes de SO y de contenedor incluidas en el paquete, lo que evita la necesidad de descargarlas de redes externas. Esto se recomienda para entornos detrás de un proxy lento o con acceso limitado a Internet. Para obtener más información, consulta Acerca de los paquetes de Google Distributed Cloud.

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 gkectl comandos, 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

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.

Administra el archivo checkpoint.yaml

Esta sección solo se aplica a los clústeres de administrador que no son de HA. El archivo checkpoint.yaml no se usa para la creación de clústeres de administrador de HA.

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, entonces debes tener el privilegio de acceso directo a operaciones criptográficas antes de crear o actualizar tu 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.

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

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 tu 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 tu 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 para 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 de tu elección.

Políticas de RBAC

Cuando completas la sección gkeConnecten 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 se implementa el agente de Connect y se 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 Google Cloud consola, 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, las siguientes políticas de control de acceso basado en roles (RBAC) se configuran 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 Google Cloud consola.