Configura un'infrastruttura minima

Questa è la prima parte di una guida che illustra una piccola installazione proof of concept di GKE su VMware con un singolo cluster utente.

Questo documento mostra come configurare ambienti vSphere e Google Cloud minimi per questa installazione e pianificare gli indirizzi IP, mentre il follow-up Creare cluster di base mostra come creare una workstation di amministrazione, un cluster di amministrazione e un cluster utente.

L'infrastruttura che configuri utilizzando questa guida potrebbe non essere adatta alle tue esigenze di produzione e ai tuoi casi d'uso reali. Per ulteriori informazioni sulle installazioni in produzione, consulta la Panoramica dell'installazione e le guide.

Prima di iniziare

Panoramica della procedura

Questi sono i passaggi principali del processo di configurazione:

  1. Configura l'ambiente. Assicurati di poter soddisfare i requisiti delle risorse. Forniamo una configurazione di esempio per un host ESXi e un datastore vSphere che soddisfano i requisiti per questa installazione.
  2. Configurare gli oggetti vSphere. I componenti di GKE su VMware vengono eseguiti all'interno di una gerarchia di oggetti vSphere.
  3. Pianifica gli indirizzi IP. GKE su VMware richiede di fornire indirizzi IP per tutti i nodi, oltre agli indirizzi IP virtuali (VIP) per l'accesso di amministratori e utenti al deployment. Per questa configurazione, utilizzerai indirizzi IP statici per i nodi del cluster. Forniamo degli esempi, ma ti consigliamo di rivolgerti all'amministratore di rete per scegliere gli indirizzi più adatti per la tua rete.
  4. Configura le regole firewall e proxy
  5. Configurare le risorse Google Cloud, incluso un progetto Google Cloud che utilizzerai durante la configurazione e la gestione di GKE su VMware e un account di servizio con le autorizzazioni necessarie per accedere e scaricare il software del componente GKE su VMware.

1. Configura l'ambiente

Per un'installazione minima, puoi utilizzare un singolo host fisico che esegue ESXi.

  1. Assicurati che l'host disponga delle seguenti caratteristiche minime di CPU, RAM e spazio di archiviazione:

    • 8 CPU fisiche con hyperthreading a 2,7 GHz abilitate
    • 80 gibibyte (GiB) di RAM
    • 470 GiB di spazio di archiviazione
  2. Accertati di aver installato ESXi versione 7.0u2 o successiva.

  3. Assicurati di utilizzare vCenter Server versione 7.0u2 o successive.

Host e datastore di esempio

Ecco un esempio di host ESXi e datastore vSphere che soddisfano i requisiti:

  • Configurazione host ESXi:

    • Produttore: Dell Inc.
    • CPU fisiche: 8 CPU a 2,7 GHz
    • Tipo di processore: Intel(R) Xeon(R) Platinum 8168 CPU @ 2.70 GHz
    • Socket processore: 2
    • Versione ESXi: 7.0u2 o successiva
    • Versione vCenter Server: 7.0u2 o successiva
    • Hyperthreading: abilitato
  • Configurazione Datastore:

    • Tipo: VMFS 6.82
    • Tipo di unità: SSD
    • Fornitore: DELL
    • Tipo di unità: logico
    • Livello RAID: RAID1

2. Configura oggetti vSphere

Configura i seguenti oggetti nel tuo ambiente vSphere:

Prendi nota dei nomi di data center, cluster, datastore e rete vSphere, poiché ti serviranno durante la configurazione della workstation di amministrazione in Crea cluster di base.

Se hai configurato un datastore vSAN, utilizza govc per creare una cartella nella directory datastore da utilizzare per il disco della macchina virtuale (VMDK) di GKE su VMware:

govc datastore.mkdir -namespace=true data-disks

3. Pianifica gli indirizzi IP

Come hai visto nella panoramica di GKE su VMware, un'installazione di GKE su VMware richiede diversi indirizzi IP, tra cui:

  • Indirizzi IP per tutti i nodi
  • Indirizzi IP virtuali (VIP) per l'accesso ai componenti del piano di controllo, come i server API Kubernetes, e alle applicazioni in esecuzione sui cluster utente
  • Intervalli CIDR per la comunicazione tra pod e servizi

Per questo motivo, una parte importante della configurazione di GKE su VMware è la pianificazione degli indirizzi IP, nonché di non creare conflitti di indirizzi. Potresti aver bisogno dell'aiuto dell'amministratore di rete per trovare i valori adatti da configurare, anche per questa semplice installazione. Nel resto di questa sezione forniremo esempi illustrativi di valori validi per questa installazione in una rete ipotetica; i valori saranno diversi.

  • I cluster in questa installazione minima utilizzano il bilanciatore del carico MetalLB in bundle. Questo bilanciatore del carico viene eseguito sui nodi del cluster, quindi non sono necessarie VM aggiuntive per il bilanciamento del carico.

  • GKE su VMware consente di scegliere se fornire indirizzi IP statici per i nodi del cluster o se utilizzare un server DHCP. In questa semplice installazione, utilizzerai indirizzi IP statici.

VLAN di esempio

Per questa installazione ridotta, consigliamo di collocare la workstation di amministrazione, i nodi del cluster di amministrazione e i nodi dei cluster utente sulla stessa VLAN nella rete vSphere. Ad esempio, supponi che tutti gli indirizzi IP nell'intervallo 172.16.20.0/24 siano instradati a una determinata VLAN. Supponiamo anche che l'amministratore di rete affermi che puoi utilizzare 172.16.20.49-172.16.20.69 per VM e indirizzi IP virtuali (VIP).

Il seguente diagramma illustra una VLAN con una workstation di amministrazione, un cluster di amministrazione e un cluster utente. Tieni presente che i VIP non vengono mostrati associati a nessun nodo specifico di un cluster. Questo perché il bilanciatore del carico MetalLB può scegliere il nodo che annuncia il VIP per un singolo servizio. Ad esempio, nel cluster utente, un nodo worker potrebbe annunciare 172.16.20.64 e un altro nodo worker potrebbe annunciare 172.16.20.65.

Indirizzi IP per un cluster di amministrazione e un cluster utente.
Indirizzi IP per un cluster di amministrazione e un cluster utente (fai clic per ingrandire)

Indirizzo IP di esempio: workstation di amministrazione

Per la workstation di amministrazione, questo esempio utilizza il primo indirizzo nell'intervallo fornito dall'amministratore di rete: 172.16.20.49.

Indirizzi IP di esempio: nodi cluster

La tabella seguente fornisce un esempio di come gli indirizzi IP possono essere utilizzati per i nodi cluster. Tieni presente che la tabella mostra gli indirizzi per due nodi aggiuntivi: admin-vm-6 e user-vm-5. Sono necessari nodi aggiuntivi durante gli upgrade, gli aggiornamenti e la riparazione automatica dei cluster. Per maggiori informazioni, consulta Gestire gli indirizzi IP dei nodi.

Nome host VM Descrizione Indirizzo IP
admin-vm-1 Nodo del piano di controllo per il cluster di amministrazione. 172.16.20.50
admin-vm-2 Nodo del piano di controllo per il cluster di amministrazione. 172.16.20.51
admin-vm-3 Nodo del piano di controllo per il cluster di amministrazione. 172.16.20.52
user-vm-1 Nodo del piano di controllo per il cluster utente. 172.16.20.53
user-vm-2 Nodo worker del cluster utente 172.16.20.54
user-vm-3 Nodo worker del cluster utente 172.16.20.55
user-vm-4 Nodo worker del cluster utente 172.16.20.56
user-vm-5 172.16.20.57

Esempi di indirizzi IP: VIP per il cluster di amministrazione

La tabella seguente fornisce un esempio di come specificare un VIP del piano di controllo per il cluster di amministrazione.

VIP Descrizione Indirizzo IP
VIP per il server API Kubernetes del cluster di amministrazione Configurata sul bilanciatore del carico per il cluster di amministrazione. 172.16.20.58

Esempi di indirizzi IP: VIP per il cluster utente

La tabella seguente fornisce un esempio di come puoi specificare i VIP per il tuo cluster utente.

Tieni presente che il VIP per il server API Kubernetes del cluster utente e il VIP in entrata si trovano entrambi nella stessa VLAN dei nodi worker e del piano di controllo.

VIP Descrizione Indirizzo IP
VIP per il server API Kubernetes del cluster utente Configurata sul bilanciatore del carico per il cluster di amministrazione. 172.16.20.59
VIP in entrata Configurato sul bilanciatore del carico per il cluster utente. 172.16.20.60
VIP del servizio Dieci indirizzi per i servizi di tipo LoadBalancer.
Configurata secondo necessità sul bilanciatore del carico per il cluster utente.
Tieni presente che questo intervallo include il VIP in entrata. Questo è un requisito per il bilanciatore del carico MetalLB.
172.16.20.60 - 172.16.20.69

Indirizzi IP per pod e servizi

Oltre agli indirizzi IP dei nodi del cluster e per accedere al deployment, devi specificare anche gli intervalli di indirizzi che possono essere utilizzati all'interno di ogni cluster per il traffico all'interno del cluster.

A questo scopo, specifica un intervallo CIDR da utilizzare per gli indirizzi IP dei pod e un altro intervallo CIDR da utilizzare per gli indirizzi ClusterIP dei servizi Kubernetes. Queste vengono specificate nell'ambito della configurazione del cluster, come vedrai nella parte successiva di questa guida.

Nell'ambito della pianificazione IP, decidi quali intervalli CIDR utilizzare per pod e servizi. A meno che tu non abbia un motivo diverso, utilizza i seguenti intervalli predefiniti:

FinalitàIntervallo CIDR predefinito
Pod del cluster di amministrazione192.168.0.0/16
Pod del cluster utente192.168.0.0/16
Servizi del cluster di amministrazione10.96.232.0/24
Servizi del cluster utente10.96.0.0/20

I valori predefiniti illustrano questi punti:

  • L'intervallo CIDR dei pod può essere lo stesso per più cluster.

  • L'intervallo CIDR servizio di un cluster non deve sovrapporsi all'intervallo CIDR servizio di qualsiasi altro cluster.

  • In genere, sono necessari più pod che servizi. Di conseguenza, per un determinato cluster, probabilmente vorrai avere un intervallo CIDR dei pod superiore all'intervallo CIDR dei servizi. Ad esempio, l'intervallo di pod predefinito per un cluster utente ha 2^(32-16) = 2^16 indirizzi, ma l'intervallo di servizi predefinito per un cluster utente ha solo 2^(32-20) = 2^12 indirizzi.

Evita sovrapposizioni

In alcuni casi potrebbe essere necessario utilizzare intervalli CIDR non predefiniti per evitare la sovrapposizione agli indirizzi IP raggiungibili sulla rete. Gli intervalli di servizi e pod non devono sovrapporsi ad alcun indirizzo esterno al cluster che vuoi raggiungere dall'interno del cluster.

Ad esempio, supponiamo che l'intervallo di servizi sia 10.96.232.0/24 e l'intervallo di pod sia 192.168.0.0/16. Tutto il traffico inviato da un pod a un indirizzo in uno di questi intervalli verrà trattato come in-cluster e non raggiungerà nessuna destinazione al di fuori del cluster.

In particolare, gli intervalli di servizi e pod non devono sovrapporsi a:

  • Indirizzi IP dei nodi in qualsiasi cluster

  • Indirizzi IP utilizzati dalle macchine del bilanciatore del carico

  • VIP utilizzati dai nodi del piano di controllo e dai bilanciatori del carico

  • Indirizzo IP di server vCenter, server DNS e server NTP

Ti consigliamo di utilizzare gli intervalli di indirizzi IP interni definiti dal documento RFC 1918 per gli intervalli di pod e servizi.

Ecco uno dei motivi per cui si consiglia di utilizzare indirizzi RFC 1918. Supponiamo che il tuo intervallo di pod o servizi contenga indirizzi IP esterni. Tutto il traffico inviato da un pod a uno di questi indirizzi esterni verrà trattato come traffico nel cluster e non raggiungerà la destinazione esterna.

Server DNS e gateway predefinito

Prima di creare i cluster di amministrazione e utente, devi anche conoscere gli indirizzi IP di:

  • Un server DNS che può essere utilizzato dalla workstation di amministrazione e dai nodi del cluster

  • Un server NTP che può essere utilizzato dai nodi del cluster

  • L'indirizzo IP del gateway predefinito per la subnet che include la workstation di amministrazione e i nodi del cluster. Ad esempio, supponi che la tua workstation di amministrazione, i nodi dei cluster di amministrazione e i nodi dei cluster utente si trovino tutti nella subnet 172.16.20.0/24. L'indirizzo del gateway predefinito per la subnet potrebbe essere 172.16.20.1.

4. Configura firewall e proxy

Configura il firewall e il proxy per consentire il traffico GKE su VMware necessario, seguendo le regole proxy e firewall. Per eseguire questa attività, avrai bisogno degli indirizzi IP dei nodi cluster che hai identificato nella sezione precedente. Tieni presente che, poiché gli indirizzi IP dei cluster utente e di amministrazione non sono assegnati a nodi specifici, devi assicurarti che tutte le regole firewall pertinenti si applichino a tutti gli indirizzi IP di ogni cluster.

5. configura le risorse Google Cloud

I progetti Google Cloud sono la base per creare, abilitare e utilizzare tutti i servizi Google Cloud, inclusi quelli utilizzati per installare e gestire GKE su VMware. Se non hai familiarità con i progetti Google Cloud, puoi trovare molte altre informazioni in Creazione e gestione dei progetti.

  1. Scegli un progetto Google Cloud esistente o creane uno nuovo.

  2. Prendi nota dell'ID progetto Google Cloud, perché sarà necessario in seguito.

Configura Google Cloud CLI

Google Cloud CLI è uno strumento a riga di comando che puoi utilizzare per lavorare con il tuo progetto. Per assicurarti di avere la versione più aggiornata, segui le istruzioni riportate in Installazione di Google Cloud SDK.

Autorizzazioni obbligatorie

Se sei il proprietario del progetto (ad esempio se hai creato tu il progetto), disponi già di tutte le autorizzazioni necessarie per eseguire il resto di questa semplice installazione. Se non sei il proprietario del progetto, tu o l'amministratore del progetto dovete assicurarvi che il tuo Account Google disponga delle autorizzazioni necessarie.

I seguenti ruoli IAM consentono di creare un account di servizio, assegnargli ruoli IAM, abilitare le API e assicurarti che lo strumento gkeadm possa creare e gestire gli account di servizio per te nella seconda parte di questa configurazione:

  • resourcemanager.projectIamAdmin
  • serviceusage.serviceUsageAdmin
  • iam.serviceAccountCreator
  • iam.serviceAccountKeyAdmin

Per maggiori dettagli sulle autorizzazioni necessarie per concedere i ruoli IAM autonomamente, vedi Concessione, modifica e revoca dell'accesso alle risorse. Se non disponi di queste autorizzazioni, dovranno essere concessi da un altro membro della tua organizzazione.

Per concedere i ruoli:

Linux e macOS

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member="user:ACCOUNT" \
    --role="roles/resourcemanager.projectIamAdmin"

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member="user:ACCOUNT" \
    --role="roles/serviceusage.serviceUsageAdmin"

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member="user:ACCOUNT" \
    --role="roles/iam.serviceAccountCreator"

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member="user:ACCOUNT" \
    --role="roles/iam.serviceAccountKeyAdmin"

Windows

gcloud projects add-iam-policy-binding PROJECT_ID ^
    --member="user:ACCOUNT" ^
    --role="roles/resourcemanager.projectIamAdmin"

gcloud projects add-iam-policy-binding PROJECT_ID ^
    --member="user:ACCOUNT" ^
    --role="roles/serviceusage.serviceUsageAdmin"

gcloud projects add-iam-policy-binding PROJECT_ID ^
    --member="user:ACCOUNT" ^
    --role="roles/iam.serviceAccountCreator"

gcloud projects add-iam-policy-binding PROJECT_ID ^
    --member="user:ACCOUNT" ^
    --role="roles/iam.serviceAccountKeyAdmin"

Sostituisci quanto segue:

  • PROJECT_ID: l'ID del tuo progetto Google Cloud
  • ACCOUNT: l'indirizzo email che identifica il tuo Account Google

Configurare gli account di servizio

Il tuo progetto Google Cloud deve avere quattro account di servizio affinché GKE su VMware possa essere utilizzato. In questo esercizio vengono generati automaticamente due di questi account di servizio. Tuttavia, devi creare manualmente gli altri due account di servizio:

  • Connetti account di servizio registrato (generato automaticamente)
  • Account di servizio di monitoraggio di Logging (generato automaticamente)
  • Account di servizio di audit logging (crea manualmente)
  • Account di servizio di accesso ai componenti (crea manualmente)

Account di servizio di audit logging

  1. Nel tuo progetto Google Cloud, crea un account di servizio che GKE su VMware può utilizzare per inviare gli audit log di Kubernetes dal cluster a Cloud Audit Logs. Questo è chiamato account di servizio di audit logging.

    gcloud iam service-accounts create audit-logging-sa \
      --project PROJECT_ID
    
  2. Crea una chiave JSON per l'account di servizio di audit logging:

    gcloud iam service-accounts keys create audit-logging-key.json \
      --iam-account SERVICE_ACCOUNT_EMAIL
    

Sostituisci SERVICE_ACCOUNT_EMAIL con l'indirizzo email del tuo account di servizio di audit logging.

Non è necessario concedere alcun ruolo all'account di servizio di audit logging.

Account di servizio accesso con componenti

  1. Nel tuo progetto Google Cloud, crea un account di servizio che GKE su VMware può utilizzare per scaricare il codice dei componenti del cluster per tuo conto da Container Registry. denominato account di servizio di accesso ai componenti.

    gcloud iam service-accounts create component-access-sa \
      --display-name "Component Access Service Account" \
      --project PROJECT_ID
    

    Sostituisci PROJECT_ID con l'ID del tuo progetto Google Cloud.

  2. Crea una chiave JSON per l'account di servizio di accesso ai componenti:

    gcloud iam service-accounts keys create component-access-key.json \
       --iam-account SERVICE_ACCOUNT_EMAIL
    

    Sostituisci SERVICE_ACCOUNT_EMAIL con l'indirizzo email identificativo univoco del tuo account di servizio.

  3. Aggiungi i seguenti ruoli IAM al tuo account di servizio di accesso ai componenti:

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \
        --role "roles/serviceusage.serviceUsageViewer"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \
        --role "roles/iam.roleViewer"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \
        --role "roles/iam.serviceAccountViewer"
    

Abilita API di Google

  1. Abilita le seguenti API di Google nel tuo progetto Google Cloud. In questo modo puoi utilizzare tutti i servizi Google Cloud necessari a GKE su VMware nel tuo progetto.

    gcloud services enable --project PROJECT_ID \
        anthos.googleapis.com \
        anthosgke.googleapis.com \
        anthosaudit.googleapis.com \
        cloudresourcemanager.googleapis.com \
        connectgateway.googleapis.com \
        container.googleapis.com \
        gkeconnect.googleapis.com \
        gkehub.googleapis.com \
        gkeonprem.googleapis.com \
        serviceusage.googleapis.com \
        stackdriver.googleapis.com \
        opsconfigmonitoring.googleapis.com \
        monitoring.googleapis.com \
        logging.googleapis.com \
        iam.googleapis.com \
        storage.googleapis.com
  2. Se è la prima volta che abiliti l'API GKE On-Prem (gkeonprem.googleapis.com) nel tuo progetto, devi inizializzare l'API. Per farlo, puoi chiamare un comando gcloud CLI che mostra le versioni disponibili che puoi utilizzare per creare un cluster utente:

    gcloud container vmware clusters query-version-config \
        --project=PROJECT_ID \
        --location="us-central1"
    

    Passaggi successivi

Creare cluster di base