Crea cluster di amministrazione e di cluster utente di GKE on Bare Metal sulle VM di Compute Engine

Questa pagina mostra come creare un cluster utente GKE on Bare Metal e un cluster di amministrazione sulle macchine virtuali (VM) di Compute Engine. Lo script fornito crea VM di Compute Engine per i nodi dei cluster di amministrazione e utente e una workstation di amministrazione.

La workstation di amministrazione ospita strumenti di interfaccia a riga di comando (CLI) e file di configurazione per eseguire il provisioning dei cluster durante l'installazione e strumenti di interfaccia a riga di comando per interagire con i cluster di cui è stato eseguito il provisioning dopo l'installazione. Lo script installa gli strumenti dell'interfaccia a riga di comando sulla VM della workstation di amministrazione.

Un cluster utente è un cluster Kubernetes che esegue i carichi di lavoro containerizzati. È composto dai nodi del piano di controllo e dai nodi worker. I cluster utente devono contenere uno o più nodi worker che eseguono i carichi di lavoro utente. Un cluster di amministrazione è un cluster Kubernetes che gestisce uno o più cluster utente, contribuendo alla creazione, agli aggiornamenti e all'eliminazione dei cluster utente. Un cluster di amministrazione è composto solo dai nodi del piano di controllo. Per saperne di più, consulta Deployment dei cluster di amministrazione e degli utenti.

Lo script configura una rete overlay VXLAN (Virtual Extensible LAN) tra le VM e prepara le VM per la creazione del cluster. Facoltativamente, lo script crea un cluster di amministrazione oppure puoi scegliere di creare personalmente il cluster di amministrazione per conoscere gli strumenti forniti da Google Distributed Cloud per la creazione di cluster di amministrazione.

Con lo script fornito, puoi provare Google Distributed Cloud rapidamente e senza dover preparare alcun hardware. Il completamento dei passaggi in questa pagina ti fornisce un ambiente di test Google Distributed Cloud funzionante in esecuzione su Compute Engine.

Che cos'è l'API GKE On-Prem?

L'API GKE On-Prem è un'API ospitata da Google Cloud che ti consente di gestire il ciclo di vita dei tuoi cluster on-premise utilizzando Terraform e le applicazioni standard di Google Cloud. L'API GKE On-Prem viene eseguita nell'infrastruttura di Google Cloud. Terraform, la console e gcloud CLI sono client dell'API che utilizzano l'API per creare cluster nel tuo data center.

Per gestire il ciclo di vita dei cluster, l'API GKE On-Prem deve archiviare i metadati sullo stato del cluster in Google Cloud, utilizzando la regione Google Cloud specificata al momento della creazione del cluster. Questi metadati consentono all'API di gestire il ciclo di vita del cluster e non includono dati specifici dei carichi di lavoro.

Quando crei un cluster utilizzando un client API GKE On-Prem, specifichi un progetto Google Cloud. Una volta creato, il cluster viene registrato automaticamente nel parco risorse del progetto specificato. Questo progetto è indicato come progetto host del parco risorse. Il progetto host del parco risorse non può essere modificato dopo la creazione del cluster.

Prima di iniziare

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. Make sure that billing is enabled for your Google Cloud project.

  6. Prendi nota dell'ID progetto perché è necessario per impostare una variabile di ambiente che viene utilizzata nello script e nei comandi di questa pagina. Se hai selezionato un progetto esistente, assicurati di essere un proprietario o un editor del progetto.
  7. Puoi eseguire lo script su Cloud Shell o sulla tua macchina locale che esegue Linux o macOS. Se non utilizzi Cloud Shell:
    1. Assicurati di aver installato la versione più recente di Google Cloud CLI, lo strumento a riga di comando per interagire con Google Cloud. Aggiorna i componenti dell'interfaccia a riga di comando gcloud, se necessario:
      gcloud components update

      A seconda di come è stata installata l'interfaccia a riga di comando gcloud, potrebbe essere visualizzato il seguente messaggio: "Non puoi eseguire questa azione perché il gestore dei componenti gcloud CLI è disabilitato per questa installazione. Per ottenere lo stesso risultato per questa installazione, puoi eseguire questo comando:" Segui le istruzioni per copiare e incollare il comando per aggiornare i componenti.

    2. Assicurati di avere installato kubectl. Se devi installare kubectl, esegui questo comando:
      gcloud components install kubectl

Crea l'infrastruttura VM e, facoltativamente, il cluster di amministrazione

Segui questi passaggi per configurare ed eseguire lo script. Lo script che scarichi ed esegui proviene dal repository anthos-samples. Per scoprire di più sullo script prima di eseguirlo, consulta la sezione successiva, Informazioni sullo script.

  1. Configura le variabili di ambiente:

    export PROJECT_ID=PROJECT_ID
    export ADMIN_CLUSTER_NAME=ADMIN_CLUSTER_NAME
    export ON_PREM_API_REGION=ON_PREM_API_REGION
    export ZONE=ZONE
    
    • ON_PREM_API_REGION: la regione Google Cloud in cui l'API GKE On-Prem esegue e archivia i propri metadati. Specifica us-central1 o un'altra regione supportata.

    • ZONE: la zona Google Cloud in cui verranno create le VM di Compute Engine. Puoi utilizzare us-central1-a o una qualsiasi delle altre zone di Compute Engine.

  2. Imposta il progetto e la zona predefiniti:

    gcloud config set project $PROJECT_ID
    gcloud config set compute/zone $ZONE
    

    Se viene visualizzato l'errore PERMISSION_DENIED, ricontrolla l'ID progetto inserito. Se l'ID progetto è corretto, esegui gcloud auth login per accedere a gcloud CLI con l'account che ha accesso al progetto.

  3. Ottieni un elenco di versioni di Google Distributed Cloud che puoi installare:

    gcloud container bare-metal admin-clusters query-version-config \
        --location=ON_PREM_API_REGION
    

    Alcune istruzioni in questo documento dipendono dall'API GKE On-Prem, che supporta un sottoinsieme di versioni Google Distributed Cloud disponibili.

  4. Seleziona una versione dall'output del comando precedente e impostala in una variabile di ambiente:

    export BMCTL_VERSION=BMCTL_VERSION
    

    Ti consigliamo di selezionare la versione compatibile più recente per ricevere le ultime funzionalità e correzioni di Google Distributed Cloud.

  5. Clona il repository anthos-samples e passa alla directory in cui si trova lo script:

    git clone https://github.com/GoogleCloudPlatform/anthos-samples
    cd anthos-samples/anthos-bm-gcp-bash
    
  6. Esegui lo script:

    bash install_admin_cluster.sh
    
  7. Quando richiesto, inserisci un numero per scegliere la modalità di installazione:

    • Inserisci 1 per fare in modo che lo script configuri l'infrastruttura VM e installi il cluster di amministrazione.
    • Inserisci 2 per fare in modo che lo script configuri solo l'infrastruttura VM.
  8. Quando richiesto, conferma la selezione.

Lo script restituisce ogni comando che esegue e lo stato. Al termine, lo script restituisce il seguente codice a seconda che tu abbia scelto di installare o meno il cluster di amministrazione:

Cluster di amministrazione creato

✅ Installation complete. Please check the logs for any errors!!!
✅ If you do not see any errors in the output log, then you now have the following setup:

|---------------------------------------------------------------------------------------------------------|
| VM Name               | L2 Network IP (VxLAN) | INFO                                                    |
|---------------------------------------------------------------------------------------------------------|
| abm-admin-cluster-cp1 | 10.200.0.3            | Has control plane of admin cluster running inside       |
| abm-user-cluster-cp1  | 10.200.0.4            | 🌟 Ready for use as control plane for the user cluster  |
| abm-user-cluster-w1   | 10.200.0.5            | 🌟 Ready for use as worker for the user cluster         |
| abm-user-cluster-w2   | 10.200.0.6            | 🌟 Ready for use as worker for the user cluster         |
|---------------------------------------------------------------------------------------------------------|

Configura solo le VM

|---------------------------------------------------------------------------------------------------------|
| VM Name               | L2 Network IP (VxLAN) | INFO                                                    |
|---------------------------------------------------------------------------------------------------------|
| abm-admin-cluster-cp1 | 10.200.0.3            | 🌟 Ready for use as control plane for the admin cluster |
| abm-user-cluster-cp1  | 10.200.0.4            | 🌟 Ready for use as control plane for the user cluster  |
| abm-user-cluster-w1   | 10.200.0.5            | 🌟 Ready for use as worker for the user cluster         |
| abm-user-cluster-w2   | 10.200.0.6            | 🌟 Ready for use as worker for the user cluster         |
|---------------------------------------------------------------------------------------------------------|

Informazioni sullo script

Per scoprire di più su install_admin_cluster.sh, fai clic su Informazioni sullo script nella riga successiva.

Informazioni sullo script

Lo script automatizza i seguenti passaggi manuali:

  1. Crea un account di servizio denominato baremetal-gcr e concede all'account di servizio autorizzazioni aggiuntive per evitare di aver bisogno di più account di servizio per API e servizi diversi.
  2. Abilita le seguenti API Google Cloud:
      anthos.googleapis.com
      anthosaudit.googleapis.com
      anthosgke.googleapis.com
      cloudresourcemanager.googleapis.com
      connectgateway.googleapis.com
      container.googleapis.com
      gkeconnect.googleapis.com
      gkehub.googleapis.com
      gkeonprem.googleapis.com
      iam.googleapis.com
      logging.googleapis.com
      monitoring.googleapis.com
      opsconfigmonitoring.googleapis.com
      serviceusage.googleapis.com
      stackdriver.googleapis.com
      storage.googleapis.com
  3. Crea le seguenti VM:
    • Una VM per la workstation di amministrazione. La workstation di amministrazione avrà accesso a tutti gli altri nodi del cluster tramite SSH.
    • Una VM per il nodo del piano di controllo del cluster di amministrazione.
    • Due VM per i nodi worker del cluster utente.
    • Una VM per il nodo del piano di controllo del cluster utente.
    Lo script verifica inoltre che SSH sia abilitato su tutte le VM.
  4. Crea una rete overlay Virtual Extensible LAN (VXLAN) per la connettività di livello 2 tra le VM. La VXLAN non è permanente, quindi se riavvii un'istanza VM la rete viene eliminata. La rete è configurata in modo da trovarsi nella subnet 10.200.0.0/24. La connettività di livello 2 è un requisito per il bilanciatore del carico in bundle.
  5. Installa i seguenti strumenti sulla workstation di amministrazione:
    • bmctl
    • kubectl
    • Docker

    Lo script scarica anche la chiave dell'account di servizio per l'account di servizio baremetal-gcr nella workstation di amministrazione.

  6. Assicurati che root@10.200.0.x dalla workstation di amministrazione funzioni eseguendo le seguenti attività:
    1. Genera una nuova chiave SSH sulla workstation di amministrazione.
    2. Aggiunge la chiave pubblica a tutte le altre VM nel deployment.
  7. Facoltativamente, lo script crea il cluster di amministrazione con il seguente file di configurazione:
      gcloud compute ssh root@"$VM_WS" --zone "${ZONE}" <<EOF
    set -x
    export PROJECT_ID=\$(gcloud config get-value project)
    ADMIN_CLUSTER_NAME=\$(curl http://metadata.google.internal/computeMetadata/v1/instance/attributes/cluster_id -H "Metadata-Flavor: Google")
    BMCTL_VERSION=\$(curl http://metadata.google.internal/computeMetadata/v1/instance/attributes/bmctl_version -H "Metadata-Flavor: Google")
    export ADMIN_CLUSTER_NAME
    export BMCTL_VERSION
    bmctl create config -c \$ADMIN_CLUSTER_NAME
    cat > bmctl-workspace/\$ADMIN_CLUSTER_NAME/\$ADMIN_CLUSTER_NAME.yaml << EOB
    ---
    gcrKeyPath: /root/bm-gcr.json
    sshPrivateKeyPath: /root/.ssh/id_rsa
    gkeConnectAgentServiceAccountKeyPath: /root/bm-gcr.json
    gkeConnectRegisterServiceAccountKeyPath: /root/bm-gcr.json
    cloudOperationsServiceAccountKeyPath: /root/bm-gcr.json
    ---
    apiVersion: v1
    kind: Namespace
    metadata:
      name: cluster-\$ADMIN_CLUSTER_NAME
    ---
    apiVersion: baremetal.cluster.gke.io/v1
    kind: Cluster
    metadata:
      name: \$ADMIN_CLUSTER_NAME
      namespace: cluster-\$ADMIN_CLUSTER_NAME
    spec:
      type: admin
      anthosBareMetalVersion: \$BMCTL_VERSION
      gkeConnect:
        projectID: \$PROJECT_ID
      controlPlane:
        nodePoolSpec:
          clusterName: \$ADMIN_CLUSTER_NAME
          nodes:
          - address: 10.200.0.3
      clusterNetwork:
        pods:
          cidrBlocks:
          - 192.168.0.0/16
        services:
          cidrBlocks:
          - 10.96.0.0/20
      loadBalancer:
        mode: bundled
        ports:
          controlPlaneLBPort: 443
        vips:
          controlPlaneVIP: 10.200.0.48
      clusterOperations:
        # might need to be this location
        location: us-central1
        projectID: \$PROJECT_ID
      storage:
        lvpNodeMounts:
          path: /mnt/localpv-disk
          storageClassName: node-disk
        lvpShare:
          numPVUnderSharedPath: 5
          path: /mnt/localpv-share
          storageClassName: local-shared
      nodeConfig:
        podDensity:
          maxPodsPerNode: 250
    EOB
    
    bmctl create cluster -c \$ADMIN_CLUSTER_NAME
    EOF

    Se hai scelto che lo script crei il cluster di amministrazione, lo script utilizza SSH per accedere alla workstation di amministrazione come utente root. Successivamente, lo script esegue lo strumento a riga di comando bmctl per creare il cluster di amministrazione. Questo è uno degli strumenti che puoi usare per creare cluster di amministrazione.

    Quando Google Distributed Cloud crea i cluster, esegue il deployment di un Kubernetes in un cluster Docker (kind) sulla workstation di amministrazione. Questo cluster di bootstrap ospita i controller Kubernetes necessari per creare i cluster e viene utilizzato per creare il cluster di amministrazione. Al momento della creazione, i controller pertinenti vengono spostati dal cluster di bootstrap al cluster di amministrazione. Infine, se non diversamente specificato, il cluster di bootstrap viene rimosso al termine della creazione del cluster. Il cluster di bootstrap richiede che Docker esegua il pull delle immagini container.

Facoltativamente, crea il cluster di amministrazione

Se lo script ha creato il cluster di amministrazione, passa alla sezione successiva Verificare il cluster di amministrazione. In caso contrario, segui i passaggi in questa sezione per creare un cluster di bootstrap e il cluster di amministrazione.

Prima di creare il cluster di amministrazione, devi eseguire il comando bmctl register bootstrap sulla workstation di amministrazione. Questo comando esegue il deployment di un cluster Kubernetes temporaneo in Docker (kind) sulla workstation di amministrazione. Questo cluster di bootstrap ospita i controller Kubernetes necessari per creare il cluster di amministrazione. Quando crei il cluster di amministrazione, i controller sul cluster di bootstrap eseguono il provisioning dei nodi, eseguono controlli preflight e registrano il cluster di amministrazione nel parco risorse. Il cluster di bootstrap viene eliminato automaticamente dopo la creazione del cluster.

Console

  1. Nella console, vai alla pagina Crea un cluster GKE on Bare Metal.

    Vai a Creare un cluster GKE on Bare Metal

  2. Assicurati di selezionare PROJECT_ID dall'elenco dei progetti.

  3. Nella barra di navigazione a sinistra, fai clic su Installa ambiente di bootstrap.

  4. Inserisci ADMIN_CLUSTER_NAME come nome del cluster di amministrazione. Tieni presente che il nome del cluster di bootstrap viene derivato anteponendo bootstrap- al nome del cluster di amministrazione.

  5. Seleziona VERSION come versione per il cluster di amministrazione. Lo script ha scaricato questa versione dello strumento a riga di comando bmctl sulla workstation di amministrazione. La versione Google Distributed Cloud installata deve corrispondere alla versione bmctl.

  6. Nel campo Posizione API Google Cloud, seleziona ON_PREM_API_REGION dall'elenco. Questa impostazione specifica la regione in cui viene eseguita l'API GKE On-Prem e la regione in cui sono archiviati quanto segue:

    • I metadati del cluster necessari all'API GKE On-Prem per gestire il ciclo di vita del cluster
    • I dati di Cloud Logging e Cloud Monitoring dei componenti di sistema
    • Il log di controllo Admin creato da Cloud Audit Logs

    Il nome del cluster, il progetto e la località identificano insieme in modo univoco il cluster in Google Cloud.

Utilizza i passaggi nella sezione successiva anziché quelli visualizzati nella console per creare il cluster di bootstrap. Lascia visualizzata la pagina della console perché tornerai lì per creare il cluster di amministrazione.

Interfaccia a riga di comando gcloud

Apri una nuova finestra del terminale. Utilizzerai la seconda finestra del terminale per connetterti alla workstation di amministrazione e creare il cluster. Utilizzerai la prima finestra del terminale per eseguire il comando gcloud CLI e creare il cluster di amministrazione.

Crea il cluster di bootstrap

Esegui i seguenti passaggi sulla workstation di amministrazione.

  1. Utilizza SSH per accedere alla workstation di amministrazione come root:

    gcloud compute ssh root@abm-ws --zone ZONE
    

    Puoi ignorare i messaggi sull'aggiornamento della VM e completare questo tutorial. Se prevedi di mantenere le VM come ambiente di test, ti consigliamo di aggiornare il sistema operativo o di eseguire l'upgrade alla release successiva, come descritto nella documentazione di Ubuntu.

  2. Imposta le tue credenziali utente come Credenziali predefinite dell'applicazione (ADC):

    gcloud auth application-default login
    

    Segui le istruzioni per selezionare il tuo Account Google per ADC.

  3. Crea il cluster di bootstrap.

    bmctl register bootstrap \
      --ssh-key=/root/.ssh/id_rsa \
      --name=bootstrap-ADMIN_CLUSTER_NAME \
      --project-id=PROJECT_ID
    

Dopo che bmctl ha creato correttamente il cluster di bootstrap, vedrai un output simile al seguente:

[2023-03-22 17:35:24+0000] Waiting for the temporary cluster to be registered... OK
[2023-03-22 17:35:37+0000] Please go to https://console.cloud.google.com/home/dashboard?project=example-project-12345 to create the cluster
[2023-03-22 17:35:37+0000] Waiting for preflight checks and cluster to run..

Crea il cluster di amministrazione

Console

  1. Nella pagina Installa ambiente di bootstrap nella sezione Ambiente di bootstrap dalla workstation di amministrazione, fai clic su Verifica connessione.

    Se l'operazione riesce, la console mostra Connessione stabilita.

    Prima di continuare, devi stabilire la connessione al cluster di bootstrap. Se la connessione non viene stabilita, verifica gli argomenti specificati per il comando bmctl register bootstrap:

    • Assicurati che il valore per --name corrisponda al Nome bootstrap derivato visualizzato nella sezione Nozioni di base sull'ambiente di bootstrap.

    • Assicurati che il valore per --project-id corrisponda all'ID del progetto che hai selezionato nella console.

    Se devi modificare il nome del cluster di bootstrap o l'ID progetto, inserisci Ctrl-C per uscire da bmctl register bootstrap ed eseguire nuovamente il comando.

  2. Fai clic su Networking nella barra di navigazione a sinistra.

  3. Nella sezione Piano di controllo, inserisci quanto segue nel campo IP 1 del nodo del piano di controllo:

    10.200.0.3
    

    Questo è l'indirizzo IP della VM abm-admin-cluster-cp nella VXLAN creata dallo script.

  4. Nella sezione Bilanciatore del carico, assicurati che sia selezionato In bundle.

  5. Nella sezione IP virtuali (VIP), inserisci quanto segue nel campo VIP piano di controllo:

    10.200.0.48
    
  6. Fai clic su Verifica e crea.

    La console visualizza messaggi di stato mentre verifica le impostazioni e crea il cluster.

Interfaccia a riga di comando gcloud

  1. Assicurati che le variabili di ambiente definite in precedenza abbiano i valori corretti. Anche se il comando di esempio utilizza segnaposto, questi devono corrispondere alle variabili di ambiente utilizzate dallo script.

    echo $PROJECT_ID
    echo $ADMIN_CLUSTER_NAME
    echo $ON_PREM_API_REGION
    echo $BMCTL_VERSION
    
  2. Verifica che il cluster di bootstrap sia stato registrato come membro del parco risorse:

    gcloud container fleet memberships list \
      --project=PROJECT_ID
    

    Se il cluster di bootstrap non è presente nell'elenco, controlla il nome del cluster di bootstrap e l'ID progetto che hai specificato per bmctl register bootstrap. Se devi modificare il nome del cluster di bootstrap o l'ID progetto, inserisci Ctrl-C per uscire da bmctl register bootstrap ed eseguire nuovamente il comando.

  3. Crea il cluster di amministrazione con il bilanciatore del carico in bundle:

    gcloud container bare-metal admin-clusters create ADMIN_CLUSTER_NAME \
      --project=PROJECT_ID \
      --location=ON_PREM_API_REGION \
      --version=BMCTL_VERSION \
      --max-pods-per-node=110 \
      --control-plane-vip=10.200.0.48 \
      --control-plane-load-balancer-port=443 \
      --control-plane-node-configs node-ip=10.200.0.3 \
      --island-mode-service-address-cidr-blocks=10.96.0.0/20 \
      --island-mode-pod-address-cidr-blocks=192.168.0.0/16 \
      --lvp-share-path=/mnt/localpv-share \
      --lvp-share-storage-class=local-shared \
      --lvp-node-mounts-config-path=/mnt/localpv-disk \
      --lvp-node-mounts-config-storage-class=local-disks
    

    Nel comando precedente:

    • --control-plane-vip: il valore è impostato su 10.200.0.48. Questo è l'IP virtuale (VIP) sul bilanciatore del carico per il server API Kubernetes del cluster.

    • --control-plane-node-configs: il valore node-ip è impostato su 10.200.0.3. Questo è l'indirizzo IP della VM abm-admin-cluster-cp nella VXLAN creata dallo script.

    Per un elenco completo dei flag e delle relative descrizioni, consulta il riferimento dell'interfaccia a riga di comando gcloud.

    L'output del comando è simile al seguente:

    Waiting for operation [projects/example-project-12345/locations/us-west1/operations/operation-1679543737105-5f7893fd5bae9-942b3f97-75e59179] to complete.
    

    Nell'output di esempio, la stringa operation-1679543737105-5f7893fd5bae9-942b3f97-75e59179 è il OPERATION_ID dell'operazione a lunga esecuzione. Puoi conoscere lo stato dell'operazione eseguendo questo comando in un'altra finestra del terminale:

    gcloud container bare-metal operations describe OPERATION_ID \
      --project=PROJECT_ID \
      --location=ON_PREM_API_REGION
    

I dettagli del processo di creazione del cluster vengono visualizzati sulla workstation di amministrazione. Prima di creare il cluster, bmctl esegue una serie di controlli preflight per verificare la configurazione. Se i controlli preflight vengono superati, il risultato visualizzato è simile al seguente:

[2023-03-22 23:12:47+0000] Waiting for cluster kubeconfig to become ready OK
[2023-03-22 23:15:47+0000] Writing kubeconfig file
[2023-03-22 23:15:47+0000] kubeconfig of cluster being created is present at bmctl-workspace/abm-cluster-1/abm-cluster-1-kubeconfig
[2023-03-22 23:15:47+0000] Please restrict access to this file as it contains authentication credentials of your cluster.
[2023-03-22 23:15:47+0000] Waiting for cluster to become ready OK
[2023-03-22 23:20:17+0000] Please run
[2023-03-22 23:20:17+0000] kubectl --kubeconfig bmctl-workspace/abm-cluster-1/abm-cluster-1-kubeconfig get nodes
[2023-03-22 23:20:17+0000] to get cluster nodes status.
[2023-03-22 23:20:17+0000] Waiting for node pools to become ready OK
[2023-03-22 23:20:37+0000] Waiting for metrics to become ready in GCP OK
[2023-03-22 23:25:38+0000] Waiting for cluster API provider to install in the created admin cluster OK
[2023-03-22 23:25:48+0000] Moving admin cluster resources to the created admin cluster
[2023-03-22 23:25:51+0000] Waiting for node update jobs to finish OK
[2023-03-22 23:27:41+0000] Flushing logs... OK
[2023-03-22 23:27:41+0000] Deleting membership... OK
[2023-03-22 23:27:42+0000] Deleting bootstrap cluster.

Verifica il cluster di amministrazione

Puoi trovare il file kubeconfig del cluster di amministrazione sulla workstation di amministrazione nella directory bmctl-workspace dell'account root. Per verificare il deployment, completa questi passaggi.

  1. Se lo script ha creato il cluster di amministrazione, utilizza SSH per accedere alla workstation di amministrazione come root:

    gcloud compute ssh root@abm-ws --zone ZONE
    

    Puoi ignorare i messaggi sull'aggiornamento della VM e completare questo tutorial. Se prevedi di mantenere le VM come ambiente di test, ti consigliamo di aggiornare il sistema operativo o di eseguire l'upgrade alla release successiva, come descritto nella documentazione di Ubuntu.

  2. Imposta la variabile di ambiente KUBECONFIG con il percorso del file di configurazione del cluster per eseguire i comandi kubectl sul cluster.

    export clusterid=ADMIN_CLUSTER_NAME
    export KUBECONFIG=$HOME/bmctl-workspace/$clusterid/$clusterid-kubeconfig
    kubectl get nodes
    

    L'output è simile al seguente:

    NAME                   STATUS   ROLES                  AGE   VERSION
    abm-admin-cluster-cp   Ready    control-plane,master   91m   v1.24.2-gke.1900
    
  3. Imposta il contesto attuale in una variabile di ambiente:

    export CONTEXT="$(kubectl config current-context)"
    
  4. Esegui questo comando gcloud. Questo comando esegue le seguenti operazioni:

    • Concede al tuo account utente il ruolo clusterrole/cluster-admin Kubernetes sul cluster.
    • Configura il cluster in modo da poter eseguire i comandi kubectl sul tuo computer locale senza doverti connettere alla workstation di amministrazione.
    • Ti consente di accedere al cluster nella console utilizzando la tua identità Google.

    Sostituisci YOUR_EMAIL_ADDRESS con l'indirizzo email associato al tuo account Google Cloud. Ad esempio: --users=alex@example.com.

    gcloud container fleet memberships generate-gateway-rbac  \
        --membership=ADMIN_CLUSTER_NAME \
        --role=clusterrole/cluster-admin \
        --users=YOUR_EMAIL_ADDRESS \
        --project=PROJECT_ID \
        --kubeconfig=$KUBECONFIG \
        --context=$CONTEXT\
        --apply
    

    L'output di questo comando è simile al seguente, che è troncato per garantire la leggibilità:

    Validating input arguments.
    Specified Cluster Role is: clusterrole/cluster-admin
    Generated RBAC policy is:
    --------------------------------------------
    ...
    
    Applying the generate RBAC policy to cluster with kubeconfig: /root/bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME-kubeconfig, context: ADMIN_CLUSTER_NAME-admin@ADMIN_CLUSTER_NAME
    Writing RBAC policy for user: YOUR_EMAIL_ADDRESS to cluster.
    Successfully applied the RBAC policy to cluster.
    
  5. Al termine dell'esplorazione, inserisci exit per uscire dalla workstation di amministrazione.

  6. Esegui questo comando sul computer locale per ottenere la voce kubeconfig che può accedere al cluster tramite il gateway di connessione:

    gcloud container fleet memberships get-credentials ADMIN_CLUSTER_NAME
    

    L'output è simile al seguente:

    Starting to build Gateway kubeconfig...
    Current project_id: PROJECT_ID
    A new kubeconfig entry "connectgateway_PROJECT_ID_global_ADMIN_CLUSTER_NAME" has been generated and set as the current context.
    
  7. Ora puoi eseguire i comandi kubectl tramite il gateway di connessione:

    kubectl get nodes
    

    L'output è simile al seguente:

    NAME                   STATUS   ROLES                  AGE   VERSION
    abm-admin-cluster-cp   Ready    control-plane,master   94m   v1.24.2-gke.1900
    

In Google Distributed Cloud 1.16 e versioni successive, il cluster viene registrato automaticamente nell'API GKE On-Prem. Ciò consente di utilizzare gcloud CLI e la console per eseguire l'upgrade del cluster di amministrazione.

Crea il cluster utente

Quando lo script ha creato il VXLAN L2 per le VM, ha assegnato i seguenti indirizzi IP nella rete 10.200.0.0/24. Questi indirizzi IP possono essere utilizzati durante la configurazione delle impostazioni di rete e del pool di nodi per il cluster utente.

Nome VM IP di rete Descrizione del nodo
abm-admin-cluster-cp1 10,200,0,3 Nodo del piano di controllo per il cluster di amministrazione
abm-user-cluster-cp1 10.200.0,4 Nodo del piano di controllo per il cluster utente
abm-user-cluster-w1 10,200,0,5 Nodo worker per il cluster utente
abm-user-cluster-w2 10.200.0,6 Un altro nodo worker per il cluster utente

Per creare il cluster utente, puoi utilizzare la console Google Cloud, Google Cloud CLI o Terraform.

Console

Segui questi passaggi per creare un cluster utente nella console:

  1. Nella console, vai alla pagina Crea un cluster GKE on Bare Metal.

    Vai a Creare un cluster GKE on Bare Metal

  2. Assicurati che sia selezionato il progetto Google Cloud in cui hai creato il cluster di amministrazione.

  3. Fai clic su Crea cluster.

  4. Nella finestra di dialogo, fai clic su On-premise.

  5. Accanto a Bare metal, fai clic su Configura. Viene visualizzata la pagina Prerequisiti.

  6. In Scegli il tipo di cluster, seleziona Crea un cluster utente per un cluster di amministrazione esistente.

  7. Fai clic su Avanti.

Impostazioni di base del cluster

  1. Inserisci un nome per il cluster utente o utilizza quello predefinito.

  2. Assicurati che il cluster di amministrazione appena creato sia selezionato. Puoi utilizzare i valori predefiniti per le altre impostazioni in questa pagina.

  3. Fai clic su Networking nella barra di navigazione a sinistra.

Networking

  1. Nella sezione Piano di controllo, inserisci quanto segue nel campo IP 1 del nodo del piano di controllo:

    10.200.0.4
    

    Questo è l'indirizzo IP della VM abm-user-cluster-cp1 nella VXLAN creata dallo script.

  2. Nella sezione Bilanciatore del carico, utilizza il bilanciatore del carico predefinito, in bundle con MetalLB.

  3. Nella sezione Nuovo pool di indirizzi, inserisci il seguente intervallo di indirizzi IP nel campo Intervallo di indirizzi IP 1:

    10.200.0.51-10.200.0.70
    
  4. Fai clic su Fine.

  5. Nella sezione IP virtuali, inserisci il seguente indirizzo IP nel campo VIP piano di controllo:

    10.200.0.50
    
  6. Inserisci il seguente indirizzo IP per il VIP Ingress:

    10.200.0.51
    
  7. Utilizza gli indirizzi IP predefiniti nella sezione CIDR di servizi e pod.

  8. Fai clic su pool predefinito nella barra di navigazione a sinistra.

Crea un pool di nodi

Il cluster deve avere almeno un pool di nodi per i nodi worker. Un pool di nodi è un modello per i gruppi di nodi worker creati in questo cluster.

Inserisci il seguente indirizzo IP nel campo Indirizzo dei nodi 1:

10.200.0.5

Questo è l'indirizzo IP della VM abm-user-cluster-w1 nella VXLAN creata dallo script.

Crea il cluster

  1. Fai clic su Verifica e crea per creare il cluster utente.

    Per creare il cluster utente sono necessari almeno 15 minuti. La console visualizza i messaggi di stato mentre verifica le impostazioni e crea il cluster.

    Se si verifica un problema con la configurazione, nella console viene visualizzato un messaggio di errore che dovrebbe essere abbastanza chiaro per consentirti di risolvere il problema e di riprovare a creare il cluster.

    Per visualizzare ulteriori informazioni sul processo di creazione, fai clic su Mostra dettagli per visualizzare un riquadro laterale. Fai clic su per chiudere il riquadro dei dettagli.

    Alla creazione del cluster viene visualizzato Stato del cluster: in esecuzione.

    Cluster di screenshot pronto

  2. Dopo la creazione del cluster, fai clic su Cluster per tornare alla pagina Cluster.

Interfaccia a riga di comando gcloud

Utilizza il comando seguente per creare un cluster utente:

gcloud container bare-metal clusters create

Dopo aver creato il cluster, devi creare almeno un pool di nodi utilizzando il comando seguente:

gcloud container bare-metal node-pools create

Per creare il cluster utente:

  1. Assicurati che le variabili di ambiente definite in precedenza abbiano i valori corretti. Anche se il comando di esempio utilizza segnaposto, questi devono corrispondere alle variabili di ambiente utilizzate dallo script.

    echo $PROJECT_ID
    echo $ADMIN_CLUSTER_NAME
    echo $ON_PREM_API_REGION
    echo $BMCTL_VERSION
    
  2. Esegui questo comando per creare il cluster utente. Sostituisci quanto segue:

    • USER_CLUSTER_NAME: il nome del cluster.

    • Assicurati che --admin-users sia impostato sull'indirizzo email associato al tuo Account Google per poter amministrare il cluster.

    Gli altri valori del flag sono stati compilati automaticamente. Scorri se necessario per verificare che il flag --admin-cluster-membership abbia il valore corretto per il nome del cluster di amministrazione, che è l'ultimo segmento nel nome dell'appartenenza completo.

    gcloud container bare-metal clusters create USER_CLUSTER_NAME \
      --project=PROJECT_ID \
      --admin-cluster-membership=projects/PROJECT_ID/locations/global/memberships/ADMIN_CLUSTER_NAME \
      --location=ON_PREM_API_REGION \
      --version=BMCTL_VERSION \
      --admin-users=YOUR_EMAIL_ADDRESS \
      --metal-lb-address-pools='pool=lb-pool-1,manual-assign=True,addresses=10.200.0.51-10.200.0.70' \
      --control-plane-node-configs='node-ip=10.200.0.4' \
      --control-plane-vip=10.200.0.50 \
      --control-plane-load-balancer-port=443 \
      --ingress-vip=10.200.0.51 \
      --island-mode-service-address-cidr-blocks=10.96.0.0/20 \
      --island-mode-pod-address-cidr-blocks=192.168.0.0/16 \
      --lvp-share-path=/mnt/localpv-share \
      --lvp-share-storage-class=local-shared \
      --lvp-node-mounts-config-path=/mnt/localpv-disk \
      --lvp-node-mounts-config-storage-class=local-disks
    

Nell'elenco che segue vengono descritti i flag:

  • --project: l'ID del progetto in cui verrà registrato il cluster utente. Questo progetto è indicato come progetto host del parco risorse.

  • --admin-cluster-membership: il nome completo del cluster di amministrazione che identifica il cluster di amministrazione nel parco risorse.

  • --location: la regione Google Cloud in cui viene eseguita l'API GKE On-Prem e archivia i propri metadati.

  • --version: la versione Google Distributed Cloud.

  • --admin-users: includi il tuo indirizzo email a cui assegnare i criteri di controllo dell'accesso basato sui ruoli (RBAC) di Kubernetes che ti concedono l'accesso amministrativo completo al cluster.

  • --metal-lb-address-pools: la configurazione del pool di indirizzi per il bilanciatore del carico MetalLB in bundle. L'intervallo di indirizzi IP deve trovarsi nella rete 10.200.0.0/24 creata dallo script. L'intervallo di indirizzi non deve contenere gli indirizzi IP assegnati alle VM né al VIP del piano di controllo. Tieni presente, tuttavia, che il VIP in entrata deve essere compreso in questo intervallo di indirizzi.

  • --control-plane-node-configs: la configurazione del nodo del piano di controllo per il cluster utente. Il valore di node-ip è 10.200.0.4, ovvero l'indirizzo IP assegnato dallo script alla VM abm-user-cluster-cp1.

  • --control-plane-vip: l'IP virtuale per il piano di controllo. Il valore 10.200.0.50si trova nella rete 10.200.0.0/24 creata dallo script, ma non si sovrappone all'intervallo di indirizzi IP utilizzato per i pool di indirizzi del bilanciatore del carico MetalLB.

  • --control-plane-load-balancer-port: la porta su cui il bilanciatore del carico gestisce il piano di controllo. Anche se puoi configurare un altro valore, la porta 443 è la porta standard utilizzata per le connessioni HTTPS.

  • --ingress-vip: l'IP virtuale per il servizio in entrata. Questo indirizzo IP deve essere compreso nell'intervallo di indirizzi IP utilizzato per i pool di indirizzi del bilanciatore del carico MetalLB.

  • --island-mode-service-address-cidr-blocks: un intervallo di indirizzi IP in formato CIDR da utilizzare per i servizi nel cluster utente. Il comando di esempio ha utilizzato 10.96.0.0/20, che è il valore predefinito fornito dalla console. L'intervallo CIDR deve essere compreso tra /24 e /12, dove /12 fornisce il maggior numero di indirizzi IP. Ti consigliamo di utilizzare un intervallo nello spazio degli indirizzi IP per le connessioni internet private, come definito nel documento RFC 1918.

  • --island-mode-pod-address-cidr-blocks: un intervallo di indirizzi IP in formato CIDR da utilizzare per i pod nel cluster utente. Il comando di esempio ha utilizzato 192.168.0.0/16, che è il valore predefinito fornito dalla console. L'intervallo CIDR deve essere compreso tra /18 e /8, dove /8 fornisce il maggior numero di indirizzi IP. Ti consigliamo di utilizzare un intervallo nello spazio di indirizzi IP per le connessioni internet private, come definito nel documento RFC 1918.

  • --lvp-share-path: questo è il percorso della macchina host in cui è possibile creare le sottodirectory. Viene creato un PersistentVolume (PV) locale per ogni sottodirectory.

  • --lvp-share-storage-class: si tratta del valore di StorageClass da utilizzare per creare volumi permanenti. L'oggetto StorageClass viene creato durante la creazione del cluster.

  • --lvp-node-mounts-config-path: questo è il percorso della macchina host in cui è possibile rilevare i dischi montati. Per ogni montaggio viene creato un PersistentVolume (PV) locale.

  • --lvp-node-mounts-config-storage: la classe di archiviazione con cui vengono creati i volumi permanenti durante la creazione del cluster.

Dopo aver eseguito il comando, viene visualizzato un output simile al seguente:

Waiting for operation [projects/PROJECT_ID/locations/ON_PREM_API_REGION/operations/operation-1678304606537-5f668bde5c57e-341effde-b612ff8a] to complete...

Nell'output di esempio, la stringa operation-1678304606537-5f668bde5c57e-341effde-b612ff8a è il OPERATION_ID dell'operazione a lunga esecuzione.

Per scoprire lo stato dell'operazione, copia OPERATION_ID dall'output nel comando seguente. Apri un'altra finestra del terminale ed esegui il comando.

gcloud container bare-metal operations describe OPERATION_ID \
    --project=PROJECT_ID \
    --location=ON_PREM_API_REGION

Per creare il cluster sono necessari almeno 15 minuti. Durante la creazione del cluster, puoi eseguire ogni tanto il comando precedente per ottenere lo stato attuale.

Una volta creato il cluster, viene visualizzato un output simile al seguente:

Created Anthos cluster on bare metal [https://gkeonprem.googleapis.com/v1/projects/PROJECT_ID/locations/ON_PREM_API_REGION/bareMetalClusters/USER_CLUSTER_NAME].

Crea un pool di nodi

Dopo aver creato il cluster, esegui questo comando per creare un pool di nodi. Sostituisci NODE_POOL_NAME con un nome per il pool di nodi e assicurati che il segnaposto per il flag --cluster sia ancora impostato sul nome del cluster utente.

gcloud container bare-metal node-pools create NODE_POOL_NAME \
  --cluster=USER_CLUSTER_NAME \
  --project=PROJECT_ID \
  --location=ON_PREM_API_REGION \
  --node-configs='node-ip=10.200.0.5'
  • -node-configs: il valore assegnato a node-ip è l'indirizzo IP della VM abm-user-cluster-w1 nella VXLAN creata dallo script.

Dopo aver eseguito il comando, viene visualizzato un output simile al seguente:

Waiting for operation [projects/PROJECT_ID/locations/ON_PREM_API_REGION/operations/operation-1678308682052-5f669b0d132cb-6ebd1c2c-816287a7] to complete...

Per creare il pool di nodi sono necessari circa 5 minuti o meno. Quando viene creato il pool di nodi, viene visualizzato un output come il seguente:

Created node pool in Anthos cluster on bare metal [https://gkeonprem.googleapis.com/v1/projects/PROJECT_ID/locations/ON_PREM_API_REGION/bareMetalClusters/USER_CLUSTER_NAME/bareMetalNodePools/NODE_POOL_NAME].

Altri comandi del cluster utente

Oltre a creare cluster, esistono altri comandi gcloud CLI che puoi eseguire, ad esempio:

  • Per elencare i cluster utente:
gcloud container bare-metal clusters list \
    --project=PROJECT_ID \
    --location=ON_PREM_API_REGION
  • Per descrivere un cluster utente:
gcloud container bare-metal clusters describe USER_CLUSTER_NAME \
    --project=PROJECT_ID \
    --location=ON_PREM_API_REGION

Per ulteriori informazioni, consulta gcloud container bare-metal clusters.

Altri comandi del pool di nodi

Oltre a creare pool di nodi, puoi eseguire altri comandi dellgcloud CLI, ad esempio:

  • Per elencare i pool di nodi:
gcloud container bare-metal node-pools list \
    --cluster=USER_CLUSTER_NAME \
    --project=PROJECT_ID \
    --location=ON_PREM_API_REGION
  • Per descrivere un pool di nodi:
gcloud container bare-metal node-pools describe NODE_POOL_NAME \
    --cluster=USER_CLUSTER_NAME \
    --project=PROJECT_ID \
    --location=ON_PREM_API_REGION

Per ulteriori informazioni, consulta gcloud container bare-metal node-pools.

Terraform

Puoi utilizzare questo esempio di configurazione di base per creare un cluster utente con bilanciatore del carico MetalLB in bundle. Per saperne di più, consulta la documentazione di riferimento di google_gkeonprem_bare_metal_cluster.

  1. Nella directory in cui hai clonato anthos-samples, passa alla directory in cui si trova l'esempio Terraform:

    cd anthos-samples/anthos-onprem-terraform/abm_user_cluster_metallb
    

    L'esempio fornisce un file di variabili di esempio da passare a main.tf.

  2. Crea una copia del file terraform.tfvars.sample:

    cp terraform.tfvars.sample terraform.tfvars
    
    
    project_id          = "PROJECT_ID"
    region              = "ON_PREM_API_REGION"
    admin_cluster_name  = "ADMIN_CLUSTER_NAME"
    bare_metal_version  = "VERSION"
    admin_user_emails   = ["YOUR_EMAIL_ADDRESS", "ADMIN_2_EMAIL_ADDRESS"]
    cluster_name        = "abm-user-cluster-metallb"
    control_plane_ips   = ["10.200.0.4"]
    worker_node_ips     = ["10.200.0.5", "10.200.0.6"]
    control_plane_vip   = "10.200.0.50"
    ingress_vip         = "10.200.0.51"
    lb_address_pools    = [
        { name = "lbpool_1", addresses = ["10.200.0.51-10.200.0.70"] }
    ]
    
  3. Modifica i valori dei parametri in terraform.tfvars e salva il file.

    Le variabili sono descritte nel seguente elenco:

    • project_id: l'ID del progetto in cui verrà registrato il cluster utente. Questo progetto è indicato come progetto host del parco risorse.

    • region: la regione Google Cloud che hai impostato all'inizio del tutorial. Esegui echo $ON_PREM_API_REGION per ottenere il valore.

    • admin_cluster_name: il nome del cluster di amministrazione che hai impostato all'inizio di questo tutorial. Esegui echo $ADMIN_CLUSTER_NAME per ottenere il valore.

    • bare_metal_version: la versione di Google Distributed Cloud per il tuo cluster utente. Per utilizzare la stessa versione che hai utilizzato per il cluster di amministrazione, esegui echo $BMCTL_VERSION per ottenere il valore. Se preferisci, puoi specificare una versione inferiore di non più di una versione secondaria rispetto alla versione del cluster di amministrazione. La versione del cluster utente non può essere superiore a quella del cluster di amministrazione.

    • cluster_name: puoi utilizzare il nome nel file TVARS per il cluster utente o specificare un nome a tua scelta. Il nome non può essere modificato dopo la creazione del cluster.

    • admin_user_emails: un elenco di indirizzi email agli utenti a cui vengono concessi i privilegi amministrativi per il cluster. Assicurati di aggiungere il tuo indirizzo email per amministrare il cluster.

      Una volta creato il cluster, l'API GKE On-Prem applica al cluster i criteri di controllo dell'accesso basato sui ruoli (RBAC) di Kubernetes per concedere agli utenti amministratori il ruolo clusterrole/cluster-admin di Kubernetes, che fornisce accesso completo a tutte le risorse del cluster in tutti gli spazi dei nomi. Questo consente inoltre agli utenti di accedere alla console utilizzando la propria identità Google.

    Utilizza i valori predefiniti definiti in terraform.tvars per le variabili rimanenti. Lo script ha utilizzato questi valori durante la creazione delle VM e del cluster di amministrazione.

    • control_plane_ips: un elenco di uno o più indirizzi IPv4 per i nodi del piano di controllo. Utilizza il valore predefinito, ovvero l'indirizzo IP assegnato dallo script alla VM abm-user-cluster-cp1.

    • worker_node_ips: un elenco di uno o più indirizzi IPv4 per le macchine nodo worker. Utilizza i valori predefiniti, ovvero gli indirizzi IP assegnati dallo script alle VM abm-user-cluster-w1 e abm-user-cluster-w2.

    • control_plane_vip: l'IP virtuale (VIP) per il piano di controllo. Utilizza il valore predefinito, 10.200.0.50, che si trova nella rete 10.200.0.0/24 creata dallo script. Tieni presente che questo indirizzo IP non si sovrappone all'intervallo di indirizzi IP utilizzato per i pool di indirizzi del bilanciatore del carico MetalLB.

    • ingress_vip: l'indirizzo IP virtuale da configurare sul bilanciatore del carico per il proxy in entrata. Utilizza il valore predefinito, 10.200.0.51, nella rete 10.200.0.0/24 creata dallo script. Tieni presente che questo indirizzo IP rientra nell'intervallo di indirizzi IP utilizzato per i pool di indirizzi del bilanciatore del carico MetalLB.

    • lb_address_pools: un elenco di mappe che definiscono i pool di indirizzi per il bilanciatore del carico MetalLB. Utilizza il valore predefinito.

  4. Salva le modifiche in terraform.tfvars.

  5. Inizializza e crea il piano Terraform:

    terraform init
    

    Terraform installa le librerie necessarie, ad esempio il provider Google Cloud.

  6. Rivedi la configurazione e apporta le modifiche necessarie:

    terraform plan
    
  7. Applica il piano Terraform per creare il cluster utente:

    terraform apply
    

    Per creare il cluster utente sono necessari almeno 15 minuti. Puoi visualizzare il cluster nella console Google Cloud nella pagina Cluster GKE.

Connettiti al cluster utente

Quando crei un cluster utente utilizzando la console o lgcloud CLI, il cluster viene configurato con gli stessi criteri di controllo dell'accesso basato sui ruoli (RBAC) di Kubernetes che hai configurato per il cluster di amministrazione durante l'esecuzione di gcloud container fleet memberships generate-gateway-rbac. Questi criteri RBAC ti consentono di connetterti al cluster utilizzando la tua identità Google Cloud, che è l'indirizzo email associato al tuo account Google Cloud. Questi criteri RBAC ti consentono di accedere alla console senza alcuna configurazione aggiuntiva.

Connettiti al cluster nella console

Se hai utilizzato gcloud CLI o Terraform per creare il cluster utente, vai alla pagina Cluster GKE nella console:

Vai ai cluster GKE

Assicurati che il progetto in cui hai creato il cluster utente sia selezionato. Nell'elenco dovresti vedere sia il cluster di amministrazione sia il cluster utente.

Nota che il cluster utente ha Bare metal: User nella colonna Tipo. Questo indica che il cluster è gestito dall'API GKE On-Prem.

Se hai utilizzato lo script per creare il cluster di amministrazione, sarà visualizzato Esterno nella colonna Tipo. Questo indica che il cluster non è gestito dall'API GKE On-Prem. Puoi configurare il cluster di amministrazione in modo che sia gestito dall'API GKE On-Prem dopo la creazione del cluster.

Elenco di cluster di screenshot

Per accedere a un cluster:

  1. Fai clic sul link sul nome del cluster e nel riquadro laterale fai clic su Accedi.

  2. Seleziona Usa la tua identità Google per accedere.

  3. Fai clic su Accedi.

Ripeti gli stessi passaggi anche per accedere al cluster di amministrazione.

Elenco di cluster di screenshot

Connettiti al cluster dalla riga di comando

L'API GKE On-Prem configura i criteri RBAC per te in qualità di creatore del cluster utente. Questi criteri ti consentono di eseguire i comandi kubectl sul tuo desktop locale utilizzando il gateway di connessione kubeconfig.

Dal computer locale:

  1. Ottieni la voce kubeconfig che può accedere al cluster tramite il gateway di connessione.

    gcloud container fleet memberships get-credentials USER_CLUSTER_NAME
    

    L'output è simile al seguente:

    Starting to build Gateway kubeconfig...
    Current project_id: PROJECT_ID
    A new kubeconfig entry "connectgateway_PROJECT_ID_global_USER_CLUSTER_NAME" has been generated and set as the current context.
    
  2. Ora puoi eseguire i comandi kubectl tramite il gateway di connessione:

    kubectl get nodes
    

    L'output è simile al seguente:

    NAME                  STATUS   ROLES                  AGE     VERSION
    abm-user-cluster-cp   Ready    control-plane,master   14m     v1.24.2-gke.1900
    abm-user-cluster-w1   Ready    worker                 8m28s   v1.24.2-gke.1900
    

Aggiungi un altro pool di nodi al cluster utente

Console

  1. Nella console, vai alla pagina Cluster GKE.

    Vai ai cluster GKE

  2. Nell'elenco dei cluster, fai clic sul nome del cluster e quindi su Altri dettagli nel riquadro Dettagli.

  3. Fai clic sulla scheda Nodi.

  4. Fai clic su Aggiungi pool di nodi.

  5. Inserisci un nome per il pool di nodi.

  6. Nel campo Indirizzo dei nodi 1, inserisci il seguente indirizzo IP:

    10.200.0.6
    

    Questo è l'indirizzo IP della VM abm-user-cluster-w2 creata dallo script.

  7. Fai clic su Crea

  8. Se necessario, fai di nuovo clic sulla scheda Nodi.

  9. Il nuovo pool di nodi mostra lo stato Riconciliazione.

  10. Fai clic su nell'angolo in alto a destra per visualizzare lo stato della creazione del pool di nodi. Potresti dover aggiornare la pagina per visualizzare lo stato aggiornato nell'elenco dei pool di nodi.

Interfaccia a riga di comando gcloud

Esegui questo comando per creare un altro pool di nodi. Sostituisci NODE_POOL_NAME_2 con un nome per il pool di nodi e assicurati che il segnaposto per il flag --cluster sia ancora impostato sul nome del cluster utente.

gcloud container bare-metal node-pools create NODE_POOL_NAME_2 \
  --cluster=USER_CLUSTER_NAME \
  --project=PROJECT_ID \
  --location=ON_PREM_API_REGION \
  --node-configs='node-ip=10.200.0.6'
  • -node-configs: il valore assegnato a node-ip è l'indirizzo IP della VM abm-user-cluster-w2 nella VXLAN creata dallo script.

Terraform

Se hai creato il cluster utilizzando Terraform, questo è stato creato con due nodi, quindi nella VXLAN non sono disponibili altre VM per aggiungere un altro nodo. Per informazioni sull'aggiunta di pool di nodi, consulta la documentazione di riferimento di google_gkeonprem_bare_metal_cluster.

Puoi anche verificare il nuovo nodo utilizzando kubectl. Devi prima eseguire il comando gcloud container fleet memberships get-credentials come mostrato in precedenza per recuperare la configurazione del cluster:

kubectl get nodes

L'output è simile al seguente:

NAME                  STATUS   ROLES                  AGE     VERSION
abm-user-cluster-cp   Ready    control-plane,master   24m   v1.24.2-gke.1900
abm-user-cluster-w1   Ready    worker                 18m   v1.24.2-gke.1900
abm-user-cluster-w2   Ready    worker                 52s   v1.24.2-gke.1900

Esegui la pulizia

Le seguenti sezioni includono le istruzioni per rimuovere i cluster e le VM che hai creato con questa guida.

Elimina il cluster utente

Console

  1. Nella console, vai alla pagina Cluster GKE.

    Vai ai cluster GKE

  2. Nell'elenco dei cluster, fai clic sul cluster utente.

  3. Nel riquadro Dettagli, fai clic su Altri dettagli.

  4. Nella parte superiore della finestra, fai clic su Elimina.

  5. Quando ti viene richiesta una conferma, inserisci il nome del cluster e fai clic su Conferma.

  6. Fai clic su nell'angolo in alto a destra per visualizzare lo stato dell'eliminazione. Potresti dover aggiornare la pagina per aggiornare l'elenco di cluster.

Interfaccia a riga di comando gcloud

Esegui questo comando per eliminare il cluster:

gcloud container bare-metal clusters delete USER_CLUSTER_NAME \
  --project=PROJECT_ID \
  --location=ON_PREM_API_REGION \
  --force

Il flag --force consente di eliminare un cluster che ha pool di nodi. Senza il flag --force, devi prima eliminare i pool di nodi, quindi eliminare il cluster.

Per informazioni sugli altri flag, consulta gcloud container bare-metal clusters delete.

Terraform

Esegui questo comando:

terraform destroy

Attendi che il cluster utente venga eliminato prima di eliminare il cluster di amministrazione e le VM.

Elimina il cluster di amministrazione e le VM

  1. Annulla la registrazione del cluster di amministrazione dall'API GKE On-Prem:

    gcloud container bare-metal admin-clusters unenroll ADMIN_CLUSTER_NAME \
        --project=PROJECT_ID \
        --location=ON_PREM_API_REGION
    
  2. Connettiti alla workstation di amministrazione:

    gcloud compute ssh root@abm-ws --zone ZONE
    
  3. Elimina il cluster di amministrazione:

    bmctl reset -c ADMIN_CLUSTER_NAME
    

    bmctl annulla la registrazione del cluster dal parco risorse, quindi lo elimina. Attendi che il cluster venga eliminato prima di eliminare le VM.

  4. Esci dalla workstation di amministrazione.

  5. Elenca tutte le VM il cui nome contiene abm:

    gcloud compute instances list | grep 'abm'
    
  6. Verifica di poter eliminare tutte le VM il cui nome contiene abm.

    Dopo la verifica, puoi eliminare abm VM eseguendo questo comando:

    gcloud compute instances list --format="value(name)" | \
      grep 'abm'  | \
      xargs gcloud --quiet compute instances delete --zone ZONE
    
  7. Elimina l'account di servizio:

    gcloud iam service-accounts delete baremetal-gcr@PROJECT_ID.iam.gserviceaccount.com
    

    Al prompt di conferma, inserisci y.

    Passaggi successivi