Creare un cluster utente (kubeception)

Questo documento mostra come creare un cluster utente che utilizza kubeception.

Che cos'è kubeception?

Il termine kubeception è utilizzato per trasmettere l'idea che un cluster Kubernetes viene utilizzato per creare e gestire altri cluster Kubernetes. Nel contesto di GKE su VMware, kubeception si riferisce al caso in cui il piano di controllo per un cluster utente viene eseguito su uno o più nodi in un cluster di amministrazione.

L'uso di kubeception non è consigliato. Ti consigliamo invece di utilizzare Controlplane V2. Con Controlplane V2, i nodi del piano di controllo per il cluster utente si trovano nel cluster utente stesso.

Pianifica gli indirizzi IP

Segui le istruzioni riportate in Pianificare gli indirizzi IP (kubeception).

Compila un file di configurazione del cluster

Segui le istruzioni in Creare un cluster utente (Controlplane V2).

Quando compili il file di configurazione del cluster utente:

  • Imposta enableControlplaneV2 su false.

  • Decidi il tipo di bilanciamento del carico da utilizzare. Le opzioni sono:

    Per ulteriori informazioni sulle opzioni di bilanciamento del carico, consulta la panoramica sul bilanciamento del carico.

  • Decidi se abilitare Dataplane V2 per il tuo cluster utente e imposta enableDataplaneV2 di conseguenza.

  • Se includi le sezioni stackdriver e cloudAuditLogging nel file di configurazione, l'ID in gkeConnect.projectID deve essere uguale all'ID impostato in stackdriver.projectID e cloudAuditLogging.projectID. Se gli ID progetto non sono gli stessi, la creazione del cluster non riesce.

  • Se includi le sezioni gkeOnPremAPI, cloudAuditLogging e stackdriver nel file di configurazione, devi impostare la stessa regione di Google Cloud in gkeOnPremAPI.location, cloudAuditLogging.clusterLocation e stackdriver.location. Se le regioni non sono uguali, la creazione del cluster non riesce.

Esempio di file di configurazione compilati

Ecco un esempio di file di blocco IP compilato e file di configurazione del cluster utente compilato. La configurazione attiva alcune delle funzionalità disponibili, ma non tutte.

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

Convalidare il file di configurazione

Dopo aver compilato il file di configurazione del cluster utente, esegui gkectl check-config per verificare che il file sia valido:

gkectl check-config --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG

Sostituisci quanto segue:

  • ADMIN_CLUSTER_KUBECONFIG: il percorso del file kubeconfig per il cluster di amministrazione

  • USER_CLUSTER_CONFIG: il percorso del file di configurazione del cluster utente

Se il comando restituisce messaggi di errore, risolvi i problemi e convalida di nuovo il file.

Se vuoi saltare le convalide che richiedono più tempo, supera il flag --fast. Per saltare singole convalide, utilizza i flag --skip-validation-xxx. Per scoprire di più sul comando check-config, consulta Esecuzione dei controlli preflight.

(Facoltativo) Crea un bilanciatore del carico di Seesaw per il cluster utente

Se hai scelto di utilizzare il bilanciatore del carico integrato di Seesaw, esegui il passaggio indicato in questa sezione. In caso contrario, salta questa sezione.

Crea e configura le VM per il tuo bilanciatore del carico Seesaw:

gkectl create loadbalancer --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG

(Facoltativo) Importa immagini sistema operativo in vSphere ed esegui il push delle immagini container in un registro privato

Esegui gkectl prepare se si verifica una delle seguenti condizioni:

  • Il cluster utente si trova in un data center vSphere diverso dal cluster di amministrazione.

  • Il cluster utente ha un vCenter Server diverso da quello del cluster di amministrazione.

  • Il cluster utente utilizza un Container Registry privato diverso dal registry privato utilizzato dal cluster di amministrazione.

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

Sostituisci quanto segue:

  • ADMIN_CLUSTER_KUBECONFIG: il percorso del file kubeconfig del cluster di amministrazione

  • BUNDLE: il percorso del file del pacchetto. Questo file si trova sulla tua workstation di amministrazione in /var/lib/gke/bundles/. Ad esempio:

    /var/lib/gke/bundles/gke-onprem-vsphere-1.14.0-gke.421-full.tgz
    
  • USER_CLUSTER_CONFIG: il percorso del file di configurazione del cluster utente

Crea il cluster utente

Esegui questo comando per creare il cluster utente:

gkectl create cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG

Individua il file kubeconfig del cluster utente

Il comando gkectl create cluster crea un file kubeconfig denominato USER_CLUSTER_NAME-kubeconfig nella directory corrente. Questo file kubeconfig ti servirà in un secondo momento per interagire con il cluster utente.

Il file kubeconfig contiene il nome del cluster utente. Per visualizzare il nome del cluster, puoi eseguire:

kubectl config get-clusters --kubeconfig USER_CLUSTER_KUBECONFIG

L'output mostra il nome del cluster. Ad esempio:

NAME
my-user-cluster

Se vuoi, puoi modificare il nome e la posizione del file kubeconfig.

Verifica che il cluster utente sia in esecuzione

Esegui questo comando per verificare che il cluster utente sia in esecuzione:

kubectl get nodes --kubeconfig USER_CLUSTER_KUBECONFIG

Sostituisci USER_CLUSTER_KUBECONFIG con il percorso del file kubeconfig del cluster utente.

L'output mostra i nodi del cluster utente. Ad esempio:

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

Risoluzione dei problemi

Vedi Risolvere i problemi relativi alla creazione e all'upgrade dei cluster.

Passaggi successivi