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
enfalse
.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"
. También completa la secciónloadBalancer.metalLB.addressPools
y estableceenableLoadBalancer
entrue
para al menos uno de tus grupos de nodos. Para obtener más información, consulta Balanceo de cargas en paquetes con MetalLB.Balanceo de cargas en paquetes de Seesaw. Configura
loadBalancer.kind
como"Seesaw"
y completa la secciónloadBalancer.seesaw
. Para obtener más información, consulta Balanceo de cargas en paquetes con Seesaw.Balanceo de cargas integrado en F5 BIG-IP. Configura
loadBalancer.kind
como"F5BigIP"
y completa la secciónf5BigIP
. Para obtener más información, consulta Balanceo de cargas con BIG-IP de F5.Balanceo de cargas manual. Configura
loadBalancer.kind
como"ManualLB"
y completa la secciónmanualLB
. Para obtener más información, consulta Balanceo de cargas manual.
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
ycloudAuditLogging
en el archivo de configuración, el ID engkeConnect.projectID
debe ser el mismo que el ID establecido enstackdriver.projectID
ycloudAuditLogging.projectID
. Si los ID del proyecto no son los mismos, la creación del clúster falla.Si incluyes las secciones
gkeOnPremAPI
,cloudAuditLogging
ystackdriver
en el archivo de configuración, debes configurar la misma región de Google Cloud engkeOnPremAPI.location
,cloudAuditLogging.clusterLocation
ystackdriver.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.