Crea un clúster de usuario (kubeception)

En este documento, se muestra cómo crear un clúster de usuario que usa kubeception.

¿Qué es kubeception?

El término kubeception se usa para transmitir la idea de que un clúster de Kubernetes se usa con el fin de crear y administrar otros clústeres de Kubernetes. En el contexto de GKE en VMware, kubeception se refiere al caso en el que el plano de control de un clúster de usuario se ejecuta en uno o más nodos de un clúster de administrador.

No recomendamos usar kubeception. En su lugar, te recomendamos que uses el plano de control V2. Con el plano de control V2, los nodos del plano de control del clúster de usuario se encuentran en el propio clúster.

Planifica las direcciones IP

Sigue las instrucciones en Planifica las direcciones IP (kubeception).

Completa un archivo de configuración de clúster

Sigue las instrucciones en Crea un clúster de usuario (Plano de control V2).

A medida que completes el archivo de configuración del clúster de usuario, sucederá lo siguiente:

  • Establece enableControlplaneV2 en false.

  • Decide qué tipo de balanceo de cargas quieres usar. Las opciones son las siguientes:

    Para obtener más información sobre las opciones de balanceo de cargas, consulta Descripción general del balanceo de cargas.

  • Decide si deseas habilitar Dataplane V2 para el clúster de usuario y configura enableDataplaneV2 según corresponda.

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

  • Si incluyes las secciones gkeOnPremAPI, cloudAuditLogging y stackdriver en el archivo de configuración, debes configurar la misma región de Google Cloud en gkeOnPremAPI.location, cloudAuditLogging.clusterLocation y stackdriver.location. Si las regiones no son las mismas, la creación del clúster falla.

Ejemplo de archivos de configuración completados

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

user-ipblock.yaml

blocks:
  - netmask: 255.255.252.0
    gateway: 172.16.23.254
    ips:
    - ip: 172.16.20.21
      hostname: user-host1
    - ip: 172.16.20.22
      hostname: user-host2
    - ip: 172.16.20.23
      hostname: user-host3
    - ip: 172.16.20.24
      hostname: user-host4

user-cluster.yaml

apiVersion: v1
kind: UserCluster
name: "my-user-cluster"
gkeOnPremVersion: 1.15.0-gke.581
enableControlplaneV2: false
network:
  hostConfig:
    dnsServers:
    - "203.0.113.1"
    - "198.51.100.1"
    ntpServers:
    - "216.239.35.4"
  ipMode:
    type: static
    ipBlockFilePath: "user-ipblock.yaml"
  serviceCIDR: 10.96.0.0/20
  podCIDR: 192.168.0.0/16
loadBalancer:
  vips:
    controlPlaneVIP: "172.16.20.32"
    ingressVIP: "172.16.21.30"
  kind: "MetalLB"
  metalLB:
    addressPools:
    - name: "my-address-pool"
      addresses:
      - "172.16.21.30 - 172.16.21.39"
enableDataplaneV2: true
masterNode:
  cpus: 4
  memoryMB: 8192
  replicas: 1
nodePools:
- name: "my-node-pool"
  cpus: 4
  memoryMB: 8192
  replicas: 3
  osImageType: "ubuntu_containerd"
  enableLoadBalancer: true
antiAffinityGroups:
  enabled: true
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"
autoRepair:
  enabled: true

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 --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG

Reemplaza lo siguiente:

  • ADMIN_CLUSTER_KUBECONFIG es la ruta de acceso del archivo kubeconfig del clúster de administrador.

  • USER_CLUSTER_CONFIG es la ruta de acceso del archivo de configuración del clúster de usuario.

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.

(Opcional) Crea un balanceador de cargas de Seesaw para tu clúster de usuario

Si decidiste usar el balanceador de cargas de Seesaw integrado, realiza el paso en esta sección. De lo contrario, omite esta sección.

Crea y configura la VM para tu balanceador de cargas de Seesaw:

gkectl create loadbalancer --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG

Importa imágenes de SO a vSphere y envía imágenes de contenedor a un registro privado (opcional)

Ejecuta gkectl prepare si se cumple alguna de las siguientes condiciones:

  • El clúster de usuario está en un centro de datos de vSphere diferente al del clúster de administrador.

  • Tu clúster de usuario tiene un vCenter Server diferente al del clúster de administrador.

  • El clúster de usuario usa un registro de contenedor privado que es diferente del registro privado que usa el clúster de administrador.

gkectl prepare --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
    --bundle-path BUNDLE \
    --user-cluster-config USER_CLUSTER_CONFIG

Reemplaza lo siguiente:

  • ADMIN_CLUSTER_KUBECONFIG: Es la ruta de acceso del archivo kubeconfig del clúster de administrador.

  • BUNDLE: Es la ruta de acceso del archivo del paquete. Este archivo se encuentra en tu estación de trabajo de administrador en /var/lib/gke/bundles/. Por ejemplo:

    /var/lib/gke/bundles/gke-onprem-vsphere-1.14.0-gke.421-full.tgz
    
  • USER_CLUSTER_CONFIG es la ruta de acceso del archivo de configuración del clúster de usuario.

Crea el clúster de usuario

Ejecuta el siguiente comando para crear el clúster de usuario:

gkectl create cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG

Ubica el archivo kubeconfig del clúster de usuario

El comando gkectl create cluster crea un archivo kubeconfig llamado USER_CLUSTER_NAME-kubeconfig en el directorio actual. Necesitarás este archivo kubeconfig más adelante para interactuar con tu clúster de usuario.

El archivo kubeconfig contiene el nombre de tu clúster de usuario. Para ver el nombre del clúster, puedes ejecutar el siguiente comando:

kubectl config get-clusters --kubeconfig USER_CLUSTER_KUBECONFIG

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

NAME
my-user-cluster

Si lo deseas, puedes cambiar el nombre y la ubicación de tu archivo kubeconfig.

Verifica que el clúster de usuario esté en ejecución

Ejecuta el siguiente comando para verificar que el clúster de usuario esté en ejecución:

kubectl get nodes --kubeconfig USER_CLUSTER_KUBECONFIG

Reemplaza USER_CLUSTER_KUBECONFIG con la ruta de tu archivo kubeconfig del clúster de usuario.

En el resultado, se muestran los nodos del clúster de usuario. Por ejemplo:

my-user-cluster-node-pool-69-d46d77885-7b7tx   Ready ...
my-user-cluster-node-pool-69-d46d77885-lsvzk   Ready ...
my-user-cluster-node-pool-69-d46d77885-sswjk   Ready ...

Soluciona problemas

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

¿Qué sigue?