Questa pagina mostra come creare un cluster di amministrazione e un cluster utente.
Accedi alla workstation mediante SSH
Accedi alla workstation mediante SSH:
ssh -i ~/.ssh/vsphere_workstation ubuntu@[IP_ADDRESS]
dove [IP_ADDRESS] è l'indirizzo IP della workstation di amministrazione.
Esegui tutti i passaggi rimanenti di questo argomento sulla tua workstation di amministrazione.
Accesso
Accedi a Google Cloud utilizzando le credenziali del tuo account utente Google Cloud. L'account utente deve contenere almeno il ruolo IAM Visualizzatore:
gcloud auth login
Registra gcloud
come assistente credenziali Docker.
Scopri di più su questo comando:
gcloud auth configure-docker
Configurazione di IP statici per il cluster di amministrazione
Per specificare gli indirizzi IP statici da utilizzare per il cluster di amministrazione, crea un file di configurazione dell'host denominato admin-hostconfig.yaml
. Per questo
esercizio, devi specificare cinque indirizzi IP che devono essere utilizzati dal cluster di amministrazione.
Di seguito è riportato un esempio di file di configurazione host con cinque host:
hostconfig: dns: 172.16.255.1 tod: 192.138.210.214 otherdns: - 8.8.8.8 - 8.8.4.4 othertod: - ntp.ubuntu.com searchdomainsfordns: - "my.local.com" blocks: - netmask: 255.255.252.0 gateway: 110.116.232.1 ips: - ip: 172.16.20.10 hostname: admin-host1 - ip: 172.16.20.11 hostname: admin-host2 - ip: 172.16.20.12 hostname: admin-host3 - ip: 172.16.20.13 hostname: admin-host4 - ip: 172.16.20.14 hostname: admin-host5
Il campo ips
è un array di indirizzi IP e nomi host. Si tratta di indirizzi IP e nomi host che GKE On-Prem assegnerà ai nodi del cluster di amministrazione.
Nel file di configurazione host, devi specificare anche gli indirizzi dei server DNS, dei server di tempo e del gateway predefinito che saranno utilizzati dai nodi del cluster di amministrazione.
Il campo searchdomainsfordns
è un array di domini di ricerca DNS
da utilizzare nel cluster. Questi domini vengono utilizzati come parte di un elenco di ricerca di domini.
Configurazione degli IP statici per il cluster utente
Per specificare gli indirizzi IP statici da utilizzare per il cluster utente,
crea un file di configurazione host denominato user-hostconfig.yaml
.
Di seguito è riportato un esempio di file di configurazione host con tre host:
hostconfig: dns: 172.16.255.1 tod: 192.138.210.214 otherdns: - 8.8.8.8 - 8.8.4.4 othertod: - ntp.ubuntu.com searchdomainsfordns: - "my.local.com" blocks: - netmask: 255.255.252.0 gateway: 110.116.232.1 ips: - ip: 172.16.20.15 hostname: user-host1 - ip: 172.16.20.16 hostname: user-host2 - ip: 172.16.20.17 hostname: user-host3
Il campo ips
è un array di indirizzi IP e nomi host. Si tratta di indirizzi IP e nomi host che GKE On-Prem assegnerà ai nodi del cluster utente.
Il campo searchdomainsfordns
è un array di domini di ricerca DNS
da utilizzare nel cluster. Questi domini vengono utilizzati come parte di un elenco di ricerca di domini.
Creazione di un file di configurazione GKE On-Prem
Copia il seguente YAML in un file denominato config.yaml
.
bundlepath: "/var/lib/gke/bundles/gke-onprem-vsphere-1.2.2-gke.2-full.tgz" vcenter: credentials: address: "" username: "" password: "" datacenter: "" datastore: "" cluster: "" network: "" resourcepool: "" datadisk: "" cacertpath: "" proxy: url: "" noproxy: "" admincluster: ipblockfilepath: "admin-hostconfig.yaml" bigip: credentials: &bigip-credentials address: "" username: "" password: "" partition: "" vips: controlplanevip: "" ingressvip: "" serviceiprange: 10.96.232.0/24 podiprange: 192.168.0.0/16 usercluster: ipblockfilepath: "user-hostconfig.yaml" bigip: credentials: *bigip-credentials partition: "" vips: controlplanevip: "" ingressvip: "" clustername: "initial-user-cluster" masternode: cpus: 4 memorymb: 8192 replicas: 1 workernode: cpus: 4 memorymb: 8192 replicas: 3 serviceiprange: 10.96.0.0/12 podiprange: 192.168.0.0/16 lbmode: Integrated gkeconnect: projectid: "" registerserviceaccountkeypath: "" agentserviceaccountkeypath: "" stackdriver: projectid: "" clusterlocation: "" enablevpc: false serviceaccountkeypath: "" gcrkeypath: ""
Modificare il file di configurazione
Modifica config.yaml
come descritto nelle seguenti sezioni:
vcenter.credentials.address
Il campo vcenter.credentials.address
contiene l'indirizzo IP o il nome host
del server vCenter.
Prima di compilare il vsphere.credentials.address field
, scarica e controlla il certificato di pubblicazione del server vCenter. Inserisci il comando seguente per scaricare il certificato e salvarlo in un file denominato vcenter.pem
.
true | openssl s_client -connect [VCENTER_IP]:443 -showcerts 2>/dev/null | sed -ne '/-BEGIN/,/-END/p' > vcenter.pem
dove [VCENTER_IP] è l'indirizzo IP del tuo server vCenter.
Apri il file del certificato per visualizzare il nome comune del soggetto e il nome alternativo del soggetto:
openssl x509 -in vcenter.pem -text -noout
Nell'output è visualizzato il nome comune Subject
(CN). Potrebbe essere un indirizzo IP o
un nome host. Ad esempio:
Subject: ... CN = 203.0.113.100
Subject: ... CN = my-host.my-domain.example
L'output potrebbe includere anche uno o più nomi DNS sotto
Subject Alternative Name
:
X509v3 Subject Alternative Name: DNS:vcenter.my-domain.example
Scegli Subject
Nome comune o uno dei nomi DNS in
Subject Alternative Name
da utilizzare come valore di vcenter.credentials.address
nel tuo file di configurazione. Ad esempio:
vcenter: credentials: address: "203.0.113.1" ...
vcenter: credentials: address: "my-host.my-domain.example" ...
Devi scegliere un valore visualizzato nel certificato. Ad esempio, se l'indirizzo IP non compare nel certificato, non puoi utilizzarlo per vcenter.credentials.address
.
vcenter.credentials
GKE On-Prem deve conoscere il nome utente e la password del server vCenter. Per fornire queste informazioni, imposta i valori username
e password
in vcenter.credentials
. Ad esempio:
vcenter: credentials: ... username: "my-name" password: "my-password"
vcenter.datacenter
, .datastore
, .cluster
, .network
GKE On-Prem richiede alcune informazioni sulla struttura del tuo ambiente vSphere. Imposta i valori in vcenter
per fornire questa informazione.
Ad esempio:
vcenter: ... datacenter: "MY-DATACENTER" datastore: "MY-DATASTORE" cluster: "MY-VSPHERE-CLUSTER" network: "MY-VIRTUAL-NETWORK"
vcenter.resourcepool
Un pool di risorse vSphere
è un raggruppamento logico di VM vSphere nel cluster vSphere. Se utilizzi un pool di risorse diverso da quello predefinito, fornisci il suo nome a vcenter.resourcepool
. Ad esempio:
vcenter: ... resourcepool: "my-pool"
Se vuoi che GKE On-Prem esegua il deployment dei suoi nodi nel pool di risorse predefinito del cluster vSphere, fornisci una stringa vuota a vcenter.resourcepool
. Ad esempio:
vcenter: ... resourcepool: ""
vcenter.datadisk
GKE On-Prem crea un disco virtuale della macchina (VMDK) per contenere i
dati dell'oggetto Kubernetes per il cluster di amministrazione. Il programma di installazione crea il VMDK per te, ma devi fornire un nome per il VMDK nel campo vcenter.datadisk
.
Ad esempio:
vcenter: ... datadisk: "my-disk.vmdk"
- Datastore vSAN: creazione di una cartella per il VMDK
Se utilizzi un datastore vSAN, devi inserire il VMDK in una cartella. La cartella deve essere creata manualmente in anticipo. Per farlo, puoi utilizzare
govc
per creare una cartella:govc datastore.mkdir -namespace=true my-gke-on-prem-folder
Quindi imposta
vcenter.datadisk
sul percorso del VMDK, inclusa la cartella. Ad esempio:vcenter: ... datadisk: "my-gke-on-prem-folder/my-disk.vmdk"
Nella versione 1.1.1, un problema noto richiede che tu fornisca il percorso dell'identificatore univoco universale (UUID) della cartella anziché il percorso del file a
vcenter.datadisk
. Copialo dall'output del comandogovc
riportato sopra.Quindi, fornisci l'UUID della cartella nel campo
vcenter.datadisk
. Non inserire una barra davanti all'UUID. Ad esempio:vcenter: ... datadisk: "14159b5d-4265-a2ba-386b-246e9690c588/my-disk.vmdk"
Questo problema è stato risolto nelle versioni 1.1.2 e successive.
vcenter.cacertpath
Quando un client, come GKE On-Prem, invia una richiesta al server vCenter, il server deve dimostrare la propria identità presentando un certificato o un bundle di certificati. Per verificare il certificato o il bundle, GKE On-Prem deve avere il certificato radice nella catena di attendibilità.
Imposta vcenter.cacertpath
sul percorso del certificato radice. Ad esempio:
vcenter: ... cacertpath: "/my-cert-folder/the-root.crt"
L'installazione di VMware ha un'autorità di certificazione (CA) che emette un certificato per il server vCenter. Il certificato radice nella catena di attendibilità è un certificato autofirmato creato da VMware.
Se non vuoi utilizzare VMWare, che è l'impostazione predefinita, puoi configurare VMware in modo che utilizzi un'autorità di certificazione diversa.
Se il server vCenter utilizza un certificato emesso dall'autorità di certificazione VMware predefinita, esistono diversi modi per ottenere il certificato radice:
curl -k "https://[SERVER_ADDRESS]/certs/download.zip" > download.zip
dove [SERVER_ADDRESS] è l'indirizzo del tuo server vCenter.
In un browser, inserisci l'indirizzo del server vCenter. Nella casella grigia a destra, fai clic su Scarica certificati CA radice attendibili.
Inserisci questo comando per ottenere il certificato di gestione:
true | openssl s_client -connect [SERVER_ADDRESS]:443 -showcerts
Nell'output, individua un URL come questo: https://[SERVER_ADDRESS]/afd/vecs/ca. Inserisci l'URL in un browser. da cui viene scaricato il certificato radice.
Il file scaricato è denominato download.zip
.
Installa il comando di decompressione e decomprimi il file:
sudo apt-get install unzip unzip download.zip
Se il comando Decomprimi non funziona la prima volta, inseriscilo di nuovo.
Cerca il file del certificato in certs/lin
.
proxy
Se la rete è protetta da un server proxy, imposta proxy.url
sull'indirizzo del server proxy.
Per proxy.noproxy
, fornisci un elenco di indirizzi IP, intervalli di indirizzi IP,
nomi host e nomi di dominio. Quando GKE On-Prem invia una richiesta a
uno di questi indirizzi, host o domini, la richiesta viene inviata direttamente. Non invierà la richiesta al server proxy. Ad esempio:
proxy: url: "https://my-proxy.example.local" noproxy: "10.151.222.0/24, my-host.example.local,10.151.2.1"
admincluster.ipblockfilepath
Poiché utilizzi indirizzi IP statici, devi disporre di un file di configurazione dell'host, come descritto in Configurare gli IP statici. Specifica il percorso del file di configurazione dell'host nel campo admincluster.ipblockfilepath
. Ad esempio:
admincluster: ipblockfilepath: "/my-config-directory/admin-hostconfig.yaml"
admincluster.bigip.credentials
GKE On-Prem deve conoscere l'indirizzo IP o il nome host, il nome utente
e la password del bilanciatore del carico BIG-IP di F5. Imposta i valori in admincluster.bigip
per fornire queste informazioni. Ad esempio:
admincluster: ... bigip: credentials: address: "203.0.113.2" username: "my-admin-f5-name" password: "rJDlm^%7aOzw"
admincluster.bigip.partition
In precedenza, hai
creato una partizione BIG-IP
per il tuo cluster di amministrazione. Imposta
admincluster.bigip.partition
sul nome della partizione. Ad esempio:
admincluster: ... bigip: partition: "my-admin-f5-partition"
admincluster.vips
Imposta il valore di admincluster.vips.controlplanevip
sull'indirizzo IP che hai scelto di configurare sul bilanciatore del carico per il server API di Kubernetes del cluster di amministrazione. Imposta il valore di
ingressvip
sull'indirizzo IP che hai scelto di configurare sul bilanciatore del carico
per il servizio in entrata del cluster di amministrazione. Ad esempio:
admincluster: ... vips: controlplanevip: 203.0.113.3 ingressvip: 203.0.113.4
admincluster.serviceiprange
e admincluster.podiprange
Il cluster di amministrazione deve avere un intervallo di indirizzi IP da utilizzare per i servizi e un intervallo di indirizzi IP da utilizzare per i pod. Questi intervalli sono
specificati dai campi admincluster.serviceiprange
e admincluster.podiprange
. Questi campi vengono compilati quando esegui gkectl create-config
. Se vuoi, puoi modificare i valori completati e scegliere quelli che preferisci.
Gli intervalli di servizi e pod non devono sovrapporsi. Inoltre, gli intervalli di servizi e pod non devono sovrapporsi agli indirizzi IP utilizzati per i nodi in qualsiasi cluster.
Esempio:
admincluster: ... serviceiprange: 10.96.232.0/24 podiprange: 192.168.0.0/16
usercluster.bigip.partition
In precedenza, hai
creato una partizione BIG-IP
per il tuo cluster utente. Imposta
usercluster.bigip.partition
sul nome della partizione. Ad esempio:
usercluster: ... bigip: partition: "my-user-f5-partition" ...
usercluster.vips
Imposta il valore di usercluster.vips.controlplanevip
sull'indirizzo IP che hai scelto di configurare sul bilanciatore del carico per il server API Kubernetes del cluster utente. Imposta il valore di
ingressvip
sull'indirizzo IP che hai scelto di configurare sul bilanciatore del carico
per il servizio in entrata del cluster utente. Ad esempio:
usercluster: ... vips: controlplanevip: 203.0.113.6 ingressvip: 203.0.113.7
usercluster.serviceiprange
e usercluster.podiprange
Il cluster utente deve avere un intervallo di indirizzi IP da utilizzare per i servizi e un intervallo di indirizzi IP da utilizzare per i pod. Questi intervalli sono
specificati dai campi usercluster.serviceiprange
e usercluster.podiprange
. Questi campi vengono compilati quando esegui gkectl create-config
. Se vuoi, puoi modificare
i valori scelti da te.
Gli intervalli di servizi e pod non devono sovrapporsi. Inoltre, gli intervalli di servizi e pod non devono sovrapporsi agli indirizzi IP utilizzati per i nodi in qualsiasi cluster.
Esempio:
usercluster: ... serviceiprange: 10.96.233.0/24 podiprange: 172.16.0.0/12
Disabilitazione delle regole di anti-affinità di VMware DRS
A partire dalla versione 1.1.0-gke.6, GKE On-Prem crea automaticamente le regole di anti-affinità di Distributed Resource Scheduler (DRS) di VMware per i nodi del cluster utente, rendendole distribuite su almeno tre host fisici nel tuo data center. A partire dalla versione 1.1.0-gke.6, questa funzionalità è abilitata automaticamente per i nuovi cluster e i cluster esistenti.
Questa funzionalità richiede che l'ambiente vSphere soddisfi le seguenti condizioni:
- VMware DRS è abilitato. VMware DRS richiede la versione di licenza vSphere Enterprise Plus. Per informazioni su come abilitare DRS, vedi Abilitare DRS VMware in un cluster.
- L'account utente vSphere fornito nel campo
vcenter
dispone dell'autorizzazioneHost.Inventory.EditCluster
. - Sono disponibili almeno tre host fisici.
Ricorda che, se hai una licenza vSpphere Standard, non puoi abilitare VMware DRS.
Se non hai abilitato DRS o se non hai almeno tre host per cui programmare le VM vSphere, aggiungi usercluster.antiaffinitygroups.enabled: false
al file di configurazione.
Ad esempio:
usercluster: ... antiaffinitygroups: enabled: false
gkeconnect
La specifica gkeconnect
contiene le informazioni necessarie a GKE On-Prem per configurare la gestione dei cluster on-prem da Google Cloud Console.
Imposta gkeconnect.projectid
sull'ID progetto del progetto Google Cloud in cui vuoi gestire i cluster on-prem.
Imposta il valore di gkeconnect.registerserviceaccountkeypath
sul percorso del
file della chiave JSON per il tuo
account di servizio di registrazione.
Imposta il valore di gkeconnect.agentserviceaccountkeypath
sul percorso del
file della chiave JSON per il tuo
account di servizio di connessione.
Esempio:
gkeconnect: projectid: "my-project" registerserviceaccountkeypath: "/my-key-directory/register-key.json" agentserviceaccountkeypath: "/my-key-directory/connect-key.json"
stackdriver
La specifica stackdriver
contiene le informazioni necessarie a GKE On-Prem per archiviare le voci di log generate dai cluster on-prem.
Imposta stackdriver.projectid
sull'ID del progetto Google Cloud che vuoi associare alla suite operativa di Google Cloud. Collega i log del cluster di esportazione da Stackdriver in questo progetto.
Imposta stackdriver.clusterlocation
su un'area geografica di Google Cloud in cui vuoi archiviare i log. È consigliabile scegliere un'area geografica vicina
al tuo data center on-prem.
Imposta stackdriver.proxyconfigsecretname
su un secret Kubernetes che definisci
nello spazio dei nomi kube-system
. Questo Secret deve avere un singolo valore che definisce
https_proxy_url
. Il Secret predefinito di stackdriver-proxy-config
è immutabile e
semplicemente come esempio.
Imposta stackdriver.enablevpc
su true
se la rete del cluster è controllata da un VPC. Ciò garantisce che tutta la
telemetria passi attraverso gli indirizzi IP limitati di Google.
Imposta stackdriver.serviceaccountkeypath
sul percorso del file della chiave JSON per l'account di servizio della suite operativa di Google Cloud.
Esempio:
stackdriver: projectid: "my-project" clusterlocation: "us-west1" enablevpc: false serviceaccountkeypath: "/my-key-directory/stackdriver-key.json"
gcrkeypath
Imposta il valore di gcrkeypath
sul percorso del file della chiave JSON dell'account di servizio inserito nella lista consentita. Ad esempio:
Nota: per ulteriori informazioni su questo comando, consulta
Esecuzione di controlli preflight.
gcrkeypath: "/my-key-directory/whitelisted-key.json"
Convalida del file di configurazione
Dopo aver modificato il file di configurazione, esegui gkectl check-config
per verificare che il file sia valido e possa essere utilizzato per l'installazione:
gkectl check-config --config config.yaml
Se il comando restituisce un messaggio FAILURE
, correggi i problemi e convalida di nuovo il file.
Se vuoi ignorare le convalide più lunghe, supera il flag --fast
.
Per ignorare le singole convalide, utilizza i flag --skip-validation-xxx
. Per
ulteriori informazioni sul comando check-config
, consulta
Esecuzione di controlli preflight.
Esecuzione del gkectl prepare
Esegui gkectl prepare
per inizializzare il tuo ambiente vSphere:
gkectl prepare --config config.yaml --skip-validation-all
Creazione dei cluster amministratore e utente
Crea il cluster di amministrazione e il cluster utente:
gkectl create cluster --config config.yaml --skip-validation-all
Il comando gkectl create cluster
crea un file denominato kubeconfig
nella directory corrente. La documentazione di GKE On-Prem utilizza il segnaposto
[ADMIN_CLUSTER_KUBECONFIG] per fare riferimento a questo file.
Per verificare che il cluster di amministrazione sia stato creato, inserisci il seguente comando:
kubectl get nodes --kubeconfig [ADMIN_CLUSTER_KUBECONFIG]
L'output mostra i nodi del cluster di amministrazione.
Il comando gkectl create cluster
crea un file denominato init-user-cluster-kubeconfig
nella directory corrente. La documentazione di GKE On-Prem utilizza il segnaposto [USER_CLUSTER_KUBECONFIG] per fare riferimento a questo file.
Per verificare che il cluster utente sia stato creato, inserisci il seguente comando:
kubectl get nodes --kubeconfig [USER_CLUSTER_KUBECONFIG]
L'output mostra i nodi del cluster utente. Ad esempio:
NAME STATUS ROLES AGE VERSION xxxxxx-1234-ipam-15008527 Ready <none> 12m v1.14.7-gke.24 xxxxxx-1234-ipam-1500852a Ready <none> 12m v1.14.7-gke.24 xxxxxx-1234-ipam-15008536 Ready <none> 12m v1.14.7-gke.24