Questa è la prima parte di una guida che illustra una piccola installazione proof of concept di GKE su VMware con un cluster utente singolo.
Questo documento mostra come configurare gli ambienti vSphere e Google Cloud minimi per questa installazione e pianificare gli indirizzi IP, mentre nella sezione successiva Creazione di cluster di base viene illustrato 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 effettivi. Per ulteriori informazioni sulle installazioni in produzione, consulta la Panoramica dell'installazione e le guide.
Prima di iniziare
Leggi la panoramica di GKE su VMware, che fornisce una panoramica sul funzionamento di GKE su VMware, incluso il ruolo di ciascun componente che installerai in questa configurazione.
Vedi le versioni supportate da vSphere.
Consulta i requisiti di licenza vSphere. Per questa installazione minima, è sufficiente una licenza vSphere Standard.
Devi avere un'istanza di vCenter Server in esecuzione.
È necessario un account utente vCenter con privilegi sufficienti. Prendi nota del nome utente e della password di questo account.
Dovresti conoscere alcuni concetti di base di Google Cloud, tra cui progetti, autorizzazioni IAM e account di servizio. In caso contrario, consulta le seguenti guide per ulteriori informazioni:
Panoramica della procedura
Di seguito sono riportati i passaggi principali da eseguire in questa configurazione:
- Configura l'ambiente. Assicurati di 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.
- Configurare gli oggetti vSphere. I componenti di GKE su VMware vengono eseguiti all'interno di una gerarchia di oggetti vSphere.
- 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 tuo deployment. Per questa configurazione, utilizzerai indirizzi IP statici per i nodi del cluster. Vengono forniti degli esempi, ma ti consigliamo di rivolgerti all'amministratore di rete per ricevere aiuto nella scelta degli indirizzi adatti alla tua rete.
- Configura le regole del firewall e del proxy
- Configurare le risorse Google Cloud, incluso un progetto Google Cloud che utilizzerai per la configurazione e la gestione di GKE on VMware e un account di servizio con le autorizzazioni necessarie per accedere al software del componente GKE su VMware e scaricarlo.
Configura l'ambiente
Requisiti di CPU, RAM e spazio di archiviazione
Per questa installazione minima, puoi utilizzare un singolo host fisico che esegue ESXi.
Di seguito sono riportati i requisiti minimi delle risorse per il tuo host ESXi:
- 8 CPU fisiche da 2,7 GHz con hyperthreading abilitato
- 80 gibibyte (GiB) di RAM
Il requisito di spazio di archiviazione minimo è di 470 GiB.
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 per processore: 2
- Versione ESXi: 7.0u2 o successiva
- Versione di vCenter Server: 7.0u2 o successive
- Hyperthreading: abilitato
Configurazione Datastore:
- Tipo: VMFS 6.82
- Tipo di unità: SSD
- Fornitore: DELL
- Tipo di unità: logico
- Livello RAID: RAID1
Configurazione degli oggetti vSphere
Configura i seguenti oggetti nel tuo ambiente vSphere:
Bilanciamento del carico
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
Pianifica gli indirizzi IP
Come hai visto nella panoramica di GKE su VMware, un'installazione di GKE su VMware richiede un numero sufficiente di indirizzi IP per tutti i nodi, oltre a 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. Devi inoltre specificare intervalli di indirizzi CIDR adatti per la comunicazione tra pod e servizi nei tuoi cluster. Per questo motivo, una parte importante della configurazione di GKE su VMware è la pianificazione degli indirizzi IP e l'attenzione a non creare conflitti di indirizzi. Potrebbe essere necessario che l'amministratore di rete ti aiuti a trovare i valori adatti da configurare, anche per questa semplice installazione. Nel resto di questa sezione forniamo esempi illustrativi di valori validi per questa installazione in una rete ipotetica. I valori saranno diversi.
GKE su VMware consente di scegliere se fornire indirizzi IP statici per i nodi del cluster o utilizzare un server DHCP. In questa semplice installazione, utilizzerai indirizzi IP statici.
Per questa piccola installazione, ti consigliamo di posizionare 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 inoltre che l'amministratore di rete ti dica che puoi utilizzare 172.16.20.49 - 172.16.20.72 per VM e indirizzi IP virtuali (VIP).
Il seguente diagramma illustra una VLAN che ha una workstation di amministrazione, un cluster di amministrazione e un cluster utente. Nota che i VIP non vengono mostrati associati a un nodo specifico di un cluster. Questo perché il bilanciatore del carico MetalLB può scegliere quale nodo annuncia il VIP per un singolo servizio. Ad esempio, nel cluster utente, un nodo worker potrebbe annunciare 172.16.20.63 e un altro nodo worker potrebbe annunciare 172.16.20.64.
Esempio di indirizzo IP: workstation di amministrazione
Per la workstation di amministrazione, questo esempio utilizza il primo indirizzo nell'intervallo che ti è stato assegnato dall'amministratore di rete: 172.16.20.49.
Esempi di indirizzi IP: nodi cluster
La tabella seguente fornisce un esempio di come utilizzare gli indirizzi IP per i nodi cluster. La tabella mostra due nodi aggiuntivi: admin-vm-5 e user-vm-4. I nodi aggiuntivi sono necessari durante gli upgrade, gli aggiornamenti e la riparazione automatica del cluster. Per ulteriori 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 componente aggiuntivo del cluster di amministrazione | 172.16.20.51 |
admin-vm-3 | Nodo del componente aggiuntivo del cluster di amministrazione | 172.16.20.52 |
admin-vm-4 | Nodo del piano di controllo per il cluster utente. Questo nodo si trova nel cluster di amministrazione. |
172.16.20.53 |
admin-vm-5 | 172.16.20.54 | |
user-vm-1 | Nodo worker del cluster utente | 172.16.20.55 |
user-vm-2 | Nodo worker del cluster utente | 172.16.20.56 |
user-vm-3 | Nodo worker del cluster utente | 172.16.20.57 |
user-vm-4 | 172.16.20.58 |
Esempi di indirizzi IP: VIP per il cluster di amministrazione
La tabella seguente fornisce un esempio di come è possibile specificare i VIP 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.59 |
Esempi di indirizzi IP: VIP per il cluster utente
La tabella seguente fornisce un esempio di come è possibile specificare i VIP per il cluster utente.
Nota che il VIP per il server API Kubernetes del cluster utente è configurato sul bilanciatore del carico del cluster di amministrazione. Il motivo è che, come hai appreso nella panoramica, il server API Kubernetes per un cluster utente viene eseguito su un nodo nel cluster di amministrazione.
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.61 |
VIP in entrata | Configurata sul bilanciatore del carico per il cluster utente | 172.16.20.62 |
VIP del servizio | Dieci indirizzi per i servizi di tipo LoadBalancer .Configurata in base alle esigenze sul bilanciatore del carico del cluster utente. Tieni presente che questo intervallo include il VIP in entrata. Questo è un requisito per il bilanciatore del carico MetalLB. |
172.16.20.62 - 172.16.20.71 |
Indirizzi IP per pod e servizi
Oltre agli indirizzi IP per i nodi del cluster e per l'accesso al deployment, devi specificare anche gli intervalli di indirizzi che possono essere utilizzati all'interno di ciascun cluster per il traffico nel cluster.
A questo scopo, specifica un intervallo CIDR da utilizzare per gli indirizzi IP dei pod e un altro intervallo CIDR per gli indirizzi ClusterIP
dei servizi Kubernetes. Questo viene specificato nell'ambito della configurazione del cluster, come vedrai nella parte successiva di questa guida.
Nell'ambito della pianificazione degli IP, decidi quali intervalli CIDR vuoi utilizzare per pod e servizi. A meno che tu non abbia un motivo per farlo, utilizza i seguenti intervalli predefiniti:
Finalità | Intervallo CIDR predefinito |
---|---|
Pod del cluster di amministrazione | 192.168.0.0/16 |
Pod del cluster utente | 192.168.0.0/16 |
Servizi del cluster di amministrazione | 10.96.232.0/24 |
Servizi del cluster utente | 10.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 del servizio di un cluster non deve sovrapporsi all'intervallo CIDR del servizio di qualsiasi altro cluster.
In genere hai bisogno di più pod che servizi, quindi per un determinato cluster è probabile che tu voglia un intervallo CIDR pod maggiore dell'intervallo CIDR servizio. 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 con gli 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à considerato nel cluster e non raggiungerà alcuna 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 privati definiti dal documento RFC 1918 per gli intervalli di pod e servizi.
Ecco uno dei motivi per cui consigliamo di utilizzare indirizzi RFC 1918. Supponiamo che l'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 tuo cluster
L'indirizzo IP del gateway predefinito per la subnet che comprende la workstation di amministrazione e i nodi del cluster. Ad esempio, supponi che la tua workstation di amministrazione, i nodi del cluster di amministrazione e i nodi del 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.
Configura il firewall e il proxy
Configura il firewall e il proxy per consentire il traffico GKE su VMware necessario, seguendo le regole per proxy e firewall. Per eseguire questa attività, avrai bisogno degli indirizzi IP dei nodi del cluster che hai identificato nella sezione precedente. Tieni presente che, poiché gli indirizzi IP per i cluster utente e di amministrazione non sono assegnati a nodi specifici, devi assicurarti che tutte le regole firewall pertinenti vengano applicate a tutti gli indirizzi IP di ciascun cluster.
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 nella pagina Creazione e gestione dei progetti.
Per iniziare a configurare le risorse Google Cloud:
- Scegli un progetto esistente per l'installazione o creane uno nuovo.
- Prendi nota del tuo ID progetto Google Cloud.
Autorizzazioni obbligatorie
Se sei il proprietario del progetto (ad esempio se lo hai creato tu), 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 i dettagli delle autorizzazioni necessarie per concedere i ruoli IAM autonomamente, consulta Concessione, modifica e revoca dell'accesso alle risorse. Se non disponi di queste autorizzazioni, è necessario che un altro membro della tua organizzazione conceda i ruoli al tuo posto.
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 CloudACCOUNT
: l'indirizzo email identificativo del tuo Account Google
Configura Google Cloud CLI
Google Cloud CLI è uno strumento a riga di comando che puoi utilizzare per lavorare con il tuo progetto. Segui le istruzioni riportate in Installazione di Google Cloud SDK per assicurarti di avere la versione più aggiornata.
Configura l'account di servizio di accesso ai componenti
Nel progetto, configura un account di servizio che GKE su VMware può utilizzare per scaricare per tuo conto il codice dei componenti del cluster da Container Registry. Questo account è noto come account di servizio di accesso ai componenti ed è l'unico account di servizio che devi creare manualmente in questa semplice installazione.
Nel progetto Google Cloud che hai scelto, crea un nuovo account di servizio come segue:
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.
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 di identificazione univoco del tuo account di servizio.
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"
Per ulteriori informazioni sull'account di servizio di accesso ai componenti e sulla concessione dei ruoli IAM, consulta Chiavi e account di servizio.
Abilita API di Google
Abilita le seguenti API di Google nel tuo progetto Google Cloud. In questo modo, puoi utilizzare tutti i servizi Google Cloud necessari da 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 \ serviceusage.googleapis.com \ stackdriver.googleapis.com \ opsconfigmonitoring.googleapis.com \ monitoring.googleapis.com \ logging.googleapis.com \ iam.googleapis.com \ storage.googleapis.com