Dopo aver creato un cluster, puoi modificare alcuni aspetti della sua configurazione. Ad esempio puoi:
- Aggiungi, rimuovi o sostituisci nodi.
- Aggiungi o rimuovi annotazioni nel cluster.
- Modifica i valori dei campi modificabili nelle risorse del cluster e del pool di nodi.
- Modificare altre risorse personalizzate.
Puoi utilizzare bmctl
o Google Cloud CLI per aggiornare un cluster. Se hai
creato un cluster di amministrazione o di un utente utilizzando Terraform, puoi utilizzare Terraform per
aggiornare il cluster. Tieni presente quanto segue:
Molti aspetti della configurazione del cluster sono immutabili e non possono essere aggiornati dopo aver creato il cluster. Per un elenco completo dei campi modificabili e immutabili, consulta la sezione Riferimento sui campi di configurazione del cluster. Il riferimento ai campi è una tabella ordinabile. Fai clic sulle intestazioni delle colonne per modificare l'ordinamento. Fai clic sul nome di un campo per visualizzarne la descrizione.
gcloud CLI e Terraform supportano solo l'aggiornamento dei cluster di amministrazione e utente. Devi utilizzare
bmctl
per aggiornare altri tipi di cluster.gcloud CLI e Terraform supportano solo le modifiche alle risorse del cluster e del pool di nodi. Devi utilizzare
kubectl
obmctl
per aggiornare altre risorse personalizzate che interessano il cluster.
Come aggiornare i cluster
In genere, per aggiornare un cluster devi eseguire la seguente sequenza di azioni:
bmctl
Modifica i valori dei campi applicabili nel file di configurazione del cluster, che per impostazione predefinita si trova qui:
bmctl-workspace/CLUSTER-NAME/CLUSTER-NAME.yaml
Aggiorna il cluster eseguendo il comando
bmctl update
:bmctl update cluster -c CLUSTER_NAME --kubeconfig=KUBECONFIG
Sostituisci quanto segue:
CLUSTER_NAME
: il nome del cluster che vuoi aggiornare.KUBECONFIG
: per i cluster di amministrazione, ibridi o autonomi, inserisci il percorso del file kubeconfig del cluster. Per un cluster utente, inserisci il percorso del file kubeconfig del cluster di admin.
Interfaccia a riga di comando gcloud
Specifica solo i flag per la configurazione che vuoi modificare.
Esegui il comando di aggiornamento applicabile:
Cluster di amministrazione:
gcloud container bare-metal admin-clusters update
Cluster utente:
gcloud container bare-metal clusters update
.Pool di nodi su un cluster utente:
gcloud container bare-metal node-pools update
Terraform
Modifica i valori dei campi applicabili nel file di configurazione Terraform che hai utilizzato per creare il cluster o il pool di nodi. Per descrizioni dettagliate dei campi, consulta la documentazione di riferimento di Terraform:
Aggiorna la configurazione eseguendo il comando
terraform apply
.
Le seguenti sezioni descrivono alcuni esempi comuni per l'aggiornamento di un cluster esistente.
Aggiungi o rimuovi nodi in un cluster
Un pool di nodi è un gruppo di nodi all'interno di un cluster con la stessa configurazione. Tieni presente che un nodo appartiene sempre a un pool di nodi. Per aggiungere un nuovo nodo a un cluster, devi aggiungerlo a un determinato pool di nodi. La rimozione di un nodo da un pool di nodi equivale alla rimozione completa del nodo dal cluster.
Esistono tre tipi di pool di nodi in GDCV per Bare Metal: piano di controllo, bilanciatore del carico e pool di nodi worker. Le seguenti sezioni descrivono come aggiungere o rimuovere nodi da ogni tipo di pool di nodi.
bmctl
Puoi aggiungere o rimuovere un nodo da un pool di nodi aggiungendo o rimuovendo l'indirizzo IP del nodo in una sezione specifica del file di configurazione del cluster. Il seguente elenco mostra la sezione da modificare per un determinato pool di nodi:
- Pool di nodi worker: aggiungi o rimuovi l'indirizzo IP del nodo nella sezione
spec.nodes
della specificaNodePool
. - Pool di nodi del piano di controllo: aggiungi o rimuovi l'indirizzo IP del nodo nella sezione
spec.controlPlane.nodePoolSpec.nodes
della specificaCluster
. - Pool di nodi del bilanciatore del carico: aggiungi o rimuovi l'indirizzo IP del nodo nella sezione
spec.loadBalancer.nodePoolSpec.nodes
della specificaCluster
.
Esempio: rimuovere un nodo worker
Ecco un file di configurazione del cluster di esempio che mostra le specifiche di due nodi worker:
---
apiVersion: baremetal.cluster.gke.io/v1
kind: NodePool
metadata:
name: nodepool1
namespace: cluster-cluster1
spec:
clusterName: cluster1
nodes:
- address: 192.0.2.1
- address: 192.0.2.2
Per rimuovere un nodo:
(Facoltativo) Se il nodo che stai rimuovendo esegue pod critici, attiva prima il nodo in modalità di manutenzione.
Puoi monitorare il processo di svuotamento dei nodi per i nodi worker visualizzando i campi
status.nodesDrained
estatus.nodesDraining
nella risorsaNodePool
.Modifica il file di configurazione del cluster per eliminare la voce dell'indirizzo IP per il nodo.
Aggiorna il cluster:
bmctl update cluster1 \ --kubeconfig=ADMIN_KUBECONFIG
Interfaccia a riga di comando gcloud
Utilizzi un comando update
per aggiungere o rimuovere nodi. Il comando update
che utilizzi e il flag in cui specifichi l'indirizzo IP dipendono dal tipo di pool di nodi che vuoi aggiornare:
Pool di nodi worker: esegui
gcloud container bare-metal node-pools update
e specifica l'indirizzo IP nel flag--node-configs 'node-ip=IP_ADDRESS'
.Pool di nodi del piano di controllo su un cluster di amministrazione: esegui
gcloud container bare-metal admin-clusters update
e specifica l'indirizzo IP nel flag--control-plane-node-configs 'node-ip=IP_ADDRESS'
.Pool di nodi del piano di controllo su un cluster utente: esegui
gcloud container bare-metal clusters update
e specifica l'indirizzo IP nel flag--control-plane-node-configs 'node-ip=IP_ADDRESS'
.Pool di nodi del bilanciatore del carico: esegui
gcloud container bare-metal clusters update
e specifica l'indirizzo IP nel flag--metal-lb-load-balancer-node-configs 'node-ip=IP_ADDRESS'
o
--bgp-load-balancer-node-configs 'node-ip=IP_ADDRESS'
Il flag in cui specifichi l'indirizzo IP accetta solo un node-ip
. Includi
il flag per ogni indirizzo IP nel pool di nodi.
I comandi update
sostituiscono tutti gli indirizzi IP con gli indirizzi IP specificati. Per aggiungere un nodo, includi gli indirizzi IP dei nodi esistenti e l'indirizzo IP del nuovo nodo nel comando update
. Allo stesso modo, rimuovi i nodi includendo solo gli indirizzi IP dei nodi che vuoi conservare.
Esempio: rimuovere un nodo worker
Questa sezione mostra come rimuovere un nodo worker da un pool di nodi utilizzando dati di esempio. Nei passaggi seguenti sono inclusi anche altri comandi dell'interfaccia a riga dellagcloud CLId che potrebbero esserti utili.
(Facoltativo) Se il nodo che stai rimuovendo esegue pod critici, attiva prima il nodo in modalità di manutenzione.
Puoi monitorare il processo di svuotamento dei nodi per i nodi worker visualizzando i campi
status.nodesDrained
estatus.nodesDraining
nella risorsaNodePool
.Esegui il comando
list
per elencare tutti i pool di nodi nel cluster:gcloud container bare-metal node-pools list \ --cluster=abm-user-cluster1 \ --project=example-project-12345 \ --location=us-central1
L'output è simile al seguente:
NAME LOCATION STATE node-pool-1 us-central1 RUNNING node-pool-2 asia-east1 RUNNING
Esegui il comando
describe
per elencare tutti gli indirizzi IP nel pool di nodi:gcloud container bare-metal node-pools describe node-pool-1 \ --cluster=abm-user-cluster1 \ --project=example-project-12345 \ --location=us-central1
Il seguente output di esempio viene troncato per una maggiore leggibilità:
annotations: ... baremetal.cluster.gke.io/version: 1.16 ... name: projects/example-project-12345/locations/us-central1/bareMetalClusters/abm-user-cluster1/bareMetalNodePools/node-pool-1 nodePoolConfig: nodeConfigs: - nodeIp: 192.0.2.1 - nodeIp: 192.0.2.2 operatingSystem: LINUX state: RUNNING ...
Tieni presente quanto segue nell'output di esempio:
Il campo
name
contiene il nome completo del pool di nodi. Quando specifichi il nome del pool di nodi in un comando, puoi specificare il nome completo o il nome del pool di nodi, ad esempionode-pool-1
, insieme ai flag--cluster
,--project
e--location
.La sezione
nodeConfigs
contiene due campinodeIp
con gli indirizzi IP dei nodi.
Esegui questo comando per rimuovere il nodo con l'indirizzo IP 192.0.2.1:
gcloud container bare-metal node-pools update node-pool-1 \ --cluster=abm-user-cluster1 \ --project=example-project-12345 \ --location=us-central1 \ --node-configs='node-ip=192.0.2.2'
Il comando
update
sostituisce tutti gli indirizzi IP con gli indirizzi IP specificati. Poiché 192.0.2.1 non è incluso, il nodo viene rimosso.L'output del comando è simile al seguente:
Waiting for operation [projects/example-project-12345/locations/us-central1/operations/operation-1697154681749-6078d9def4030-76686d6e-9fcb1de9] to complete
Nell'output di esempio, la stringa
operation-1697154681749-6078d9def4030-76686d6e-9fcb1de9
è la stringaOPERATION_ID
dell'operazione a lunga esecuzione. Puoi trovare lo stato dell'operazione eseguendo il comando seguente in un'altra finestra del terminale:gcloud container bare-metal operations describe operation-1697154681749-6078d9def4030-76686d6e-9fcb1de9 \ --project= example-project-12345 \ --location=us-central1
Puoi eseguire il comando di tanto in tanto per verificare lo stato.
Se la rimozione del nodo non va a buon fine, puoi forzarne la rimozione dal cluster. Per maggiori dettagli, consulta Forzare la rimozione dei nodi rotti.
Sostituisci i nodi del piano di controllo ad alta disponibilità
bmctl
Puoi utilizzare bmctl
per sostituire i nodi del piano di controllo ad alta disponibilità in tutti i tipi di cluster.
Per sostituire un nodo in un cluster, segui questi passaggi:
- Rimuovi l'indirizzo IP del nodo dal file di configurazione del cluster.
- Aggiorna il cluster.
- Controlla lo stato dei nodi nel cluster.
- Aggiungi l'indirizzo IP di un nuovo nodo allo stesso file di configurazione del cluster.
- Aggiorna il cluster.
Esempio: sostituzione di un nodo del piano di controllo ad alta disponibilità
Ecco un file di configurazione del cluster di esempio che mostra tre nodi del piano di controllo in un cluster utente:
---
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
name: user-cluster
namespace: cluster-user-cluster
spec:
controlPlane:
nodePoolSpec:
nodes:
- address: 192.0.2.11
- address: 192.0.2.12
- address: 192.0.2.13
Per sostituire l'ultimo nodo elencato nella sezione spec.controlPlane.nodePoolSpec.nodes
, segui questi passaggi:
Rimuovi il nodo eliminando la relativa voce di indirizzo IP nel file di configurazione del cluster. Dopo aver apportato questa modifica, il file di configurazione del cluster dovrebbe avere un aspetto simile a questo:
--- apiVersion: baremetal.cluster.gke.io/v1 kind: Cluster metadata: name: user-cluster namespace: cluster-user-cluster spec: controlPlane: nodePoolSpec: nodes: - address: 192.0.2.11 - address: 192.0.2.12
Aggiorna il cluster eseguendo questo comando:
bmctl update cluster -c CLUSTER_NAME \ --kubeconfig=KUBECONFIG
Apporta le seguenti modifiche:
- Sostituisci CLUSTER_NAME con il nome del cluster che vuoi aggiornare.
- Se il cluster è a gestione autonoma (ad esempio un cluster di amministrazione o autonomo), sostituisci KUBECONFIG con il percorso del file kubeconfig del cluster. Se il cluster è un cluster utente, come in questo esempio, sostituisci KUBECONFIG con il percorso del file kubeconfig del cluster admin.
Dopo la corretta esecuzione del comando
bmctl update
, occorre un po' di tempo per completare i jobmachine-preflight
emachine-init
. Puoi visualizzare lo stato dei nodi e dei rispettivi pool di nodi eseguendo i comandi descritti nella sezione Verifica gli aggiornamenti di questo documento. Quando il pool di nodi e i nodi sono in stato Pronto, puoi andare al passaggio successivo.Aggiungi un nuovo nodo del piano di controllo al pool di nodi aggiungendo l'indirizzo IP del nuovo nodo del piano di controllo alla sezione
spec.controlPlane.nodePoolSpec.nodes
del file di configurazione del cluster. Dopo aver apportato questa modifica, il file di configurazione del cluster dovrebbe avere il seguente aspetto:--- apiVersion: baremetal.cluster.gke.io/v1 kind: Cluster metadata: name: user-cluster namespace: cluster-user-cluster spec: controlPlane: nodePoolSpec: nodes: - address: 192.0.2.11 - address: 192.0.2.12 - address: 192.0.2.14
Aggiorna il cluster eseguendo questo comando:
bmctl update cluster -c CLUSTER_NAME \ --kubeconfig=KUBECONFIG
Interfaccia a riga di comando gcloud
Puoi utilizzare gcloud CLI per sostituire i nodi del piano di controllo ad alta disponibilità nei cluster di amministrazione e utente.
Per sostituire un nodo in un cluster, segui questi passaggi:
Rimuovi l'indirizzo IP del nodo eseguendo il comando
update
applicabile:- Cluster utente:
gcloud container bare-metal clusters update
- Cluster di amministrazione:
gcloud container bare-metal admin-clusters update
- Cluster utente:
Controlla lo stato della rimozione dei nodi nel cluster eseguendo
gcloud container bare-metal operations describe OPERATION_ID
.Aggiungi l'indirizzo IP del nuovo nodo eseguendo il comando
update
applicabile.
Esempio: sostituzione di un nodo del piano di controllo ad alta disponibilità
Questa sezione mostra come sostituire un piano di controllo da un cluster utilizzando dati di esempio. Nei passaggi seguenti sono inclusi anche altri comandi dell'interfaccia a riga dellagcloud CLId che potrebbero esserti utili.
Esegui il comando
list
per elencare tutti i cluster utente in un progetto Google Cloud:gcloud container bare-metal clusters list \ --project=example-project-12345 \ --location=-
Quando imposti
--location=-
, significa che vengono elencati tutti i cluster in tutte le regioni. Se devi limitare l'elenco, imposta--location
su una regione specifica.L'output è simile al seguente:
NAME LOCATION VERSION ADMIN_CLUSTER STATE abm-user-cluster1a us-central1 1.16 abm-admin-cluster1 RUNNING abm-user-cluster1b europe-west1 1.16 abm-admin-cluster1 RUNNING
Esegui il comando
describe
sul cluster:gcloud container bare-metal clusters describe abm-user-cluster1 \ --project=example-project-12345 \ --location=us-central1
L'output di esempio viene troncato per una migliore leggibilità:
... controlPlane: controlPlaneNodePoolConfig: nodePoolConfig: nodeConfigs: - nodeIp: 192.0.2.11 - nodeIp: 192.0.2.12 - nodeIp: 192.0.2.13 operatingSystem: LINUX ... name: projects/example-project-1234567/locations/us-central1/bareMetalClusters/abm-user-cluster1a ...
Tieni presente quanto segue nell'output di esempio:
Il campo
name
contiene il nome completo del cluster. Quando specifichi il nome del cluster in un comando, puoi specificare il nome completo o il nome del cluster, ad esempioabm-user-cluster1a
, insieme a--project
e--location flags
.La sezione
nodeConfigs
contiene tre campinodeIp
con gli indirizzi IP dei nodi del piano di controllo.
Rimuovi il nodo con l'indirizzo IP
192.0.2.13
:gcloud container bare-metal cluster update abm-user-cluster1a \ --project=example-project-12345 \ --location=us-central1 \ --control-plane-node-configs 'node-ip=192.0.2.11' --control-plane-node-configs 'node-ip=192.0.2.12'
L'output del comando è simile al seguente:
Waiting for operation [projects/example-project-12345/locations/us-central1/operations/operation-1956154681749-6078d9def4030-76686d6e-9fcb1d7] to complete
Nell'output di esempio, la stringa
operation-1956154681749-6078d9def4030-76686d6e-9fcb1de7
è la stringaOPERATION_ID
dell'operazione a lunga esecuzione. Puoi trovare lo stato dell'operazione eseguendo il comando seguente in un'altra finestra del terminale:gcloud container bare-metal operations describe operation-1956154681749-6078d9def4030-76686d6e-9fcb1de7 \ --project= example-project-12345 \ --location=us-central1
Puoi eseguire il comando di tanto in tanto per verificare lo stato.
Aggiungi il nuovo nodo con l'indirizzo IP
192.0.2.14
:gcloud container bare-metal cluster update abm-user-cluster1a \ --project=example-project-12345 \ --location=us-central1 \ --control-plane-node-configs 'node-ip=192.0.2.11' --control-plane-node-configs 'node-ip=192.0.2.12' --control-plane-node-configs 'node-ip=192.0.2.14'
Verificare gli aggiornamenti
kubectl
Puoi visualizzare lo stato dei nodi e dei rispettivi pool di nodi con il comando kubectl get
.
Ad esempio, il comando seguente mostra lo stato dei pool di nodi nello spazio dei nomi del cluster cluster-my-cluster
:
kubectl -n cluster-my-cluster get nodepools.baremetal.cluster.gke.io
Il sistema restituisce risultati simili ai seguenti:
NAME READY RECONCILING STALLED UNDERMAINTENANCE UNKNOWN
cluster-my-cluster 3 0 0 0 0
cluster-my-cluster-lb 2 0 0 0 0
np1 3 0 0 0 0
Reconciling=1
significa che il passaggio di riconciliazione è ancora in corso. Devi attendere che lo stato passi a Reconciling=0
.
Puoi anche controllare lo stato dei nodi in un cluster eseguendo questo comando:
kubectl get nodes --kubeconfig=KUBECONFIG
Interfaccia a riga di comando gcloud
Come descritto in precedenza, dopo aver eseguito un comando update
puoi controllare lo stato dell'operazione utilizzando gcloud container bare-metal
operations describe OPERATIONS_ID
. L'output del comando indica lo stato dei nodi, ad esempio:
...
metrics:
- intValue: '1'
metric: NODES_RECONCILING
- intValue: '2'
metric: NODES_HEALTHY
- intValue: '0'
metric: NODES_FAILED
- intValue: '0'
metric: NODES_IN_MAINTENANCE
- intValue: '3'
metric: NODES_TOTAL
stage: HEALTH_CHECK
...
Indipendentemente dallo strumento utilizzato per aggiornare un pool di nodi, puoi ottenere lo stato attuale di un pool di nodi eseguendo il comando describe
applicabile come mostrato in precedenza.
Se hai bisogno di ulteriori informazioni su come diagnosticare i cluster, consulta Creare snapshot per la diagnostica dei cluster.
Pool di indirizzi del bilanciatore del carico
BMC
La sezione addressPools
contiene i campi per specificare i pool di bilanciamento del carico per i bilanciatori del carico in bundle MetalLB e Border Gateway Protocol (BGP). Puoi aggiungere altri pool di indirizzi di bilanciamento del carico in qualsiasi momento, ma non puoi rimuovere alcun pool di indirizzi esistente. A partire da GKE su Bare Metal versione 1.16.0, puoi modificare i valori per addressPools.avoidBuggyIPs
e addressPools.manualAssign
in qualsiasi momento.
addressPools:
- name: pool1
addresses:
- 198.51.100.0-198.51.100.4
- 198.51.100.240/28
- name: pool2
addresses:
- 198.51.100.224/28
Interfaccia a riga di comando gcloud
Puoi aggiungere in qualsiasi momento altri pool di indirizzi di bilanciamento del carico per i bilanciatori del carico in bundle, ma non puoi rimuovere i pool di indirizzi esistenti. Il flag specificato in gcloud container bare-metal clusters update
per aggiungere un pool di indirizzi dipende dal tipo di bilanciatore del carico in bundle:
- MetalLB (livello 2): usa il flag
--metal-lb-address-pools
. - Border Gateway Protocol (BGP): utilizza il flag
--bgp-address-pools
.
Il valore dei flag ha il seguente formato:
'pool=NAME,avoid-buggy-ips=True|False,manual-assign=True|False,addresses=IP_ADDRESS_RANGE_1;IP_ADDRESS_RANGE_2;...' \
Il valore contiene segmenti che iniziano con le parole chiave pool
,
avoid-buggy-ip
, manual-assign
e addresses
. Separa ogni segmento
con una virgola.
pool
: un nome a tua scelta per il pool.avoid-buggy-ips
: se la imposti suTrue
, il controller di gestione degli indirizzi IP (IPAM) non assegnerà gli indirizzi IP che terminano con.0
o.255
ai servizi. In questo modo eviterai il problema dei dispositivi consumer con bug che causano erroneamente il traffico inviato a questi indirizzi IP speciali. Se non specificato, il valore predefinito èFalse
. A partire da GKE su Bare Metal versione 1.16.0, puoi modificare questo valore in un pool di indirizzi esistente.manual-assign
: se non vuoi che il controller IPAM assegni automaticamente gli indirizzi IP di questo pool ai servizi, imposta questo valore suTrue
. Uno sviluppatore può quindi creare un servizio di tipoLoadBalancer
e specificare manualmente uno degli indirizzi dal pool. Se non specificato, il valoremanual-assign
è impostato suFalse
. A partire da GKE su Bare Metal versione 1.16.0, puoi modificare questo valore in un pool di indirizzi esistente.Nell'elenco
addresses
: ogni indirizzo deve essere un intervallo in formato CIDR o con intervallo con trattino. Per specificare un singolo indirizzo IP in un pool (ad esempio per il VIP in entrata), utilizza/32
nella notazione CIDR (ad esempio 192.0.2.1/32).
Tieni presente le seguenti regole di sintassi:
- Racchiudi l'intero valore tra virgolette singole.
- Lo spazio vuoto non è consentito.
- Separa ogni intervallo di indirizzi IP con un punto e virgola.
Puoi specificare più di un'istanza del flag, come mostrato nell'esempio seguente:
--metal-lb-address-pools='pool=pool2,avoid-buggy-ips=False,manual-assign=True,addresses=198.51.100.0/30;198.51.100.64-198.51.100.72' --metal-lb-address-pools='pool=pool3,avoid-buggy-ips=True,manual-assign=True,addresses=203.0.113.0/28'
Per ulteriori informazioni sui pool di indirizzi del bilanciatore del carico, consulta loadBalancer.addressPools in Configurare il bilanciamento del carico in bundle.
Impedisci l'eliminazione involontaria del cluster
bmctl
Se aggiungi l'annotazione baremetal.cluster.gke.io/prevent-deletion: "true"
al file di configurazione del cluster, non potrai eliminare il cluster. Ad esempio, l'esecuzione di kubectl delete cluster
o bmctl reset
cluster
genera un errore.
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
name: ci-10c3c6f4d9c698e
namespace: cluster-ci-10c3c6f4d9c698e
annotations:
baremetal.cluster.gke.io/prevent-deletion: "true"
spec:
clusterNetwork:
Interfaccia a riga di comando gcloud
Se specifichi il flag --add-annotations
con il valore baremetal.cluster.gke.io/prevent-deletion="true"
, non potrai eliminare il cluster. Ad esempio:
Aggiungi l'annotazione per impedire l'eliminazione accidentale del cluster:
gcloud container bare-metal clusters update abm-user-cluster1a \ --project=example-project-12345 \ --location=us-central1 \ --add-annotations=baremetal.cluster.gke.io/prevent-deletion="true"
Prova a eliminare il cluster utente:
gcloud container bare-metal clusters delete abm-user-cluster1a \ --project=example-project-12345 \ --location=us-central1 \ --force \ --allow-missing
La risposta dal comando è simile alla seguente:
ERROR: (gcloud.container.bare-metal.clusters.delete) INVALID_ARGUMENT: invalid request: admission webhook "vcluster.kb.io" denied the request: annotations[baremetal.cluster.gke.io/prevent-deletion]: Invalid value: "true": Annotation "baremetal.cluster.gke.io/prevent-deletion" should be removed in order to delete this cluster
Per rimuovere l'annotazione, specifica
--remove-annotations=baremetal.cluster.gke.io/prevent-deletion="true"
nel comandoupdate
.
Bypassa i controlli preflight
Questa funzionalità è disponibile solo con bmctl update
.
Il valore predefinito del campo bypassPreflightCheck
è false
. Se imposti questo campo su true
nel file di configurazione del cluster, i controlli preflight interni vengono ignorati quando applichi risorse ai cluster esistenti.
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
name: cluster1
namespace: cluster-cluster1
annotations:
baremetal.cluster.gke.io/private-mode: "true"
spec:
bypassPreflightCheck: true
Aggiungi o rimuovi amministratori del cluster
bmctl
Puoi aggiungere o rimuovere un account utente o di servizio come amministratore del cluster per un cluster utente specificando gli indirizzi email nella sezione clusterSecurity.authorization.clusterAdmin.gcpAccounts
del file di configurazione del cluster. Agli account viene concesso il ruolo cluster-admin nel cluster, fornendo così l'accesso completo al cluster.
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
name: cluster1
namespace: cluster-cluster1
spec:
clusterSecurity:
authorization:
clusterAdmin:
gcpAccounts:
- alex@example.com
- hao@example.com
- my-sa@example-project-12345.iam.gserviceaccount.com
Quando aggiorni un cluster utente per aggiungere un account, assicurati di includere tutti gli account nell'elenco (sia esistenti che nuovi), in quanto bmctl update
sovrascrive l'elenco con ciò che hai specificato nel file di configurazione. Per rimuovere un account, rimuovilo dal file di configurazione del cluster ed esegui bmctl update
.
Interfaccia a riga di comando gcloud
Puoi aggiungere o rimuovere un account utente o di servizio come amministratore del cluster specificando un indirizzo email nel flag --admin-users
. Il flag accetta un solo indirizzo email. Per aggiungere più utenti, specifica un
account in ogni flag, ad esempio:
gcloud container bare-metal clusters update abm-user-cluster1a \
--project=example-project-12345 \
--location=us-central1 \
--admin-users=alex@example.com \
--admin-users=hao@example.com
--admin-users=my-sa@example-project-12345.iam.gserviceaccount.com
Il comando update
sovrascrive l'intero elenco delle concessioni. Specifica tutti gli utenti nuovi ed esistenti che devono essere amministratori del cluster.
Impostare un utente che esegue l'accesso
Puoi specificare un nome utente non root da utilizzare per l'accesso con funzionalità SUDO senza password alle macchine dei nodi nel cluster. La chiave SSH,
sshPrivateKeyPath
, deve funzionare per l'utente specificato. Le operazioni di creazione e aggiornamento del cluster controllano che sia possibile accedere alle macchine nodo con l'utente e la chiave SSH specificati.
bmctl
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
name: cluster1
namespace: cluster-cluster1
annotations:
baremetal.cluster.gke.io/private-mode: "true"
spec:
nodeAccess:
loginUser: abm
Interfaccia a riga di comando gcloud
Devi specificare l'utente che vuoi utilizzare per accedere alle macchine nodo nel flag --login-user
, ad esempio:
gcloud container bare-metal clusters update abm-user-cluster1a \
--project=example-project-12345 \
--location=us-central1 \
--login-user=abm
Networking avanzato
Puoi configurare funzionalità di networking avanzate in varie risorse personalizzate dopo la creazione del cluster. Per utilizzare le risorse personalizzate e le relative funzionalità di networking, devi abilitare il networking avanzato quando crei il cluster.
bmctl
Imposta clusterNetwork.advancedNetworking
su true
nella configurazione del cluster quando crei il cluster:
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
name: cluster1
namespace: cluster-cluster1
spec:
clusterNetwork:
...
advancedNetworking: true
...
Interfaccia a riga di comando gcloud
Includi il flag --enable-advanced-networking
nel comando gcloud container bare-metal clusters create
quando crei il cluster.
Dopo aver creato il cluster con il networking avanzato abilitato, puoi configurare le risorse personalizzate descritte in questa sezione utilizzando kubectl apply
.
NetworkGatewayGroup
La risorsa personalizzata NetworkGatewayGroup
viene utilizzata per fornire indirizzi IP mobili per funzionalità di networking avanzate, come il gateway NAT in uscita o la funzionalità di bilanciamento del carico in bundle con BGP.
apiVersion: networking.gke.io/v1
kind: NetworkGatewayGroup
name: default
namespace: cluster-bm
spec:
floatingIPs:
- 10.0.1.100
- 10.0.2.100
Bilanciamento del carico BGP
Puoi configurare il bilanciamento del carico del protocollo BGP (Border Gateway Protocol) nella risorsa cluster e in altre risorse personalizzate. I comandi gcloud container bare-metal clusters
create
e update
supportano la configurazione di BGP nella risorsa
cluster, ma non nelle risorse personalizzate.
Quando configuri i bilanciatori del carico in bundle con BGP, il bilanciamento del carico del piano dati utilizza, per impostazione predefinita, gli stessi peer esterni specificati per il peering del piano di controllo. In alternativa, puoi configurare separatamente il bilanciamento del carico del piano dati utilizzando la risorsa personalizzata BGPLoadBalancer
e la risorsa personalizzata BGPPeer
. Per ulteriori informazioni, consulta Configurare i bilanciatori del carico in bundle con BGP.
BGPLoadBalancer
apiVersion: networking.gke.io/v1
kind: BGPLoadBalancer
metadata:
name: default
namespace: cluster-bm
spec:
peerSelector:
cluster.baremetal.gke.io/default-peer: "true"
BGPPeer
apiVersion: networking.gke.io/v1
kind: BGPPeer
metadata:
name: bgppeer1
namespace: cluster-bm
labels:
cluster.baremetal.gke.io/default-peer: "true"
spec:
localASN: 65001
peerASN: 65002
peerIP: 10.0.3.254
sessions: 2
Aumenta il raggio d'azione della rete di servizi
Per creare più servizi rispetto al limite iniziale, puoi ridurre la maschera CIDR del servizio IPv4 per aumentare la rete di servizi del tuo cluster. La riduzione della maschera (il valore dopo "/") determina un intervallo di rete più ampio. Puoi solo aumentare l'intervallo del CIDR del servizio IPv4. L'intervallo di rete non può essere ridotto, il che significa che la maschera (il valore dopo "/") non può essere aumentata.
bmctl
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
name: cluster1
namespace: cluster-cluster1
spec:
...
clusterNetwork:
services:
cidrBlocks:
- 192.0.2.0/14
...
Interfaccia a riga di comando gcloud
Per aumentare l'intervallo del CIDR del servizio IPv4 su un cluster utente, specifica il nuovo intervallo nel flag --island-mode-service-address-cidr-blocks
.
gcloud container bare-metal clusters update cluster1 \
--project=example-project-12345 \
--location=us-central1 \
--island-mode-service-address-cidr-blocks=192.0.2.0/14
Configura le impostazioni pull dell'immagine kubelet
kubelet viene eseguito su ciascun nodo del cluster. kubelet è responsabile del monitoraggio dei container su un nodo e assicurarsi che siano integri. Se necessario, kubelet esegue query ed estrae le immagini da Container Registry.
Aggiornare manualmente le configurazioni kubelet e mantenerle sincronizzate su tutti i nodi del cluster può essere difficile. Inoltre, le modifiche manuali alla configurazione di kubelet sui nodi andranno perse quando esegui l'upgrade del cluster.
Per rendere gli aggiornamenti sincronizzati più semplici e permanenti, GKE su Bare Metal consente di specificare alcune impostazioni kubelet per ciascuno dei tuoi pool di nodi cluster: nodi del piano di controllo, del bilanciatore del carico e nodi worker. Le impostazioni si applicano a tutti i nodi in un determinato pool e vengono mantenute durante gli upgrade del cluster. I campi per queste impostazioni sono modificabili, quindi puoi aggiornarli in qualsiasi momento, non solo durante la creazione del cluster.
bmctl
I seguenti campi supportati controllano le operazioni di pull di Container Registry per kubelet:
registryBurst
(valore predefinito: 10)registryPullQPS
(valore predefinito: 5)serializeImagePulls
(valore predefinito: true)
Per saperne di più su ciascuno dei campi di configurazione kubelet, consulta la sezione Riferimento sui campi di configurazione del cluster.
Puoi specificare questi campi in kubeletConfig
sezioni della specifica del cluster e
nella specifica del pool di nodi per i seguenti pool di nodi:
- Specifiche cluster:
- Nodi del piano di controllo
spec.controlPlane.nodePoolSpec.kubeletConfig
- Nodi del bilanciatore del carico
spec.loadBalancer.nodePoolSpec.kubeletConfig
- Specifiche del pool di nodi:
- Nodi worker
spec.kubeletConfig
L'esempio seguente mostra i campi aggiunti con i relativi valori predefiniti nel file di configurazione del cluster. Tieni presente che l'annotazione preview.baremetal.cluster.gke.io/custom-kubelet: "enable"
è obbligatoria.
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
name: cluster1
namespace: cluster-cluster1
annotations:
preview.baremetal.cluster.gke.io/custom-kubelet: "enable"
spec:
...
controlPlane:
nodePoolSpec:
kubeletConfig:
registryBurst: 10
registryPullQPS: 5
serializeImagePulls: true
...
loadBalancer:
nodePoolSpec:
kubeletConfig:
registryBurst: 10
registryPullQPS: 5
serializeImagePulls: true
...
apiVersion: baremetal.cluster.gke.io/v1
kind: NodePool
metadata:
name: node-pool-new
namespace: cluster-cluster1
spec:
clusterName: cluster1
...
kubeletConfig:
registryBurst: 10
registryPullQPS: 5
serializeImagePulls: true
In ogni caso, l'impostazione si applica a tutti i nodi nel pool.
Interfaccia a riga di comando gcloud
I seguenti flag controllano le operazioni di pull di Container Registry per kubelet:
Nodi del piano di controllo
Nodi del bilanciatore del carico
- --bgp-load-balancer-registry-burst
- --bgp-load-balancer-registry-pull-qps
- --disable-bgp-load-balancer-serialize-image-pulls
- --enable-bgp-load-balancer-serialize-image-pulls
- --metal-lb-load-balancer-registry-burst
- --metal-lb-load-balancer-registry-pull-qps
- --disable-metal-lb-load-balancer-serialize-image-pull
- --enable-metal-lb-load-balancer-serialize-image-pulls
Nodi worker
Come utilizzarlo
Ecco alcune considerazioni per ottimizzare i pull delle immagini:
Poiché le immagini vengono estratte in serie per impostazione predefinita, un pull di immagini che richiede molto tempo può ritardare tutti gli altri pull di immagini pianificati su un nodo. Il ritardo di pull delle immagini può bloccare il processo di upgrade (soprattutto quando è necessario eseguire il deployment di nuove immagini GKE su Bare Metal su un nodo). Se sono interessati i ritardi di pull delle immagini, puoi disabilitare i pull delle immagini in serie per consentire i pull paralleli delle immagini.
Se riscontri errori di limitazione del pull delle immagini, come
pull QPS exceeded
, ti consigliamo di aumentare*-registry-pull-qps
e*-registry-burst
per aumentare la velocità effettiva di pull delle immagini. Questi due campi regolano la frequenza di pull e le dimensioni della coda e possono aiutare a risolvere altri problemi legati alla limitazione. I valori negativi non sono consentiti.