Dopo aver creato un cluster, puoi modificare alcuni aspetti configurazione. Ad esempio, puoi:
- Aggiungere, rimuovere o sostituire nodi.
- Aggiungi o rimuovi annotazioni per il 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
creato un cluster di amministrazione o un cluster utente con Terraform, puoi usare Terraform
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 modelli campi immutabili, vedi Riferimento per il campo di configurazione del cluster. Il riferimento del campo è un che può essere ordinata. Fai clic sulle intestazioni delle colonne per modificare l'ordinamento. Fai clic su nome del campo per visualizzarne la descrizione.
gcloud CLI e Terraform supportano solo l'aggiornamento di amministratori e utenti cluster. Devi utilizzare
bmctl
per aggiornare altri tipi di cluster.gcloud CLI e Terraform supportano solo le modifiche al del cluster e del pool di nodi. Devi utilizzare
kubectl
obmctl
per aggiornare le altre risorse personalizzate che interessano il cluster.
Come aggiornare i cluster
In genere, si esegue la seguente sequenza di azioni per aggiornare un cluster:
bmctl
Modifica i valori dei campi applicabili nella configurazione del cluster file, 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 aggiornamento.KUBECONFIG
: per amministratore, ibrido o autonomo inserisci il percorso del file kubeconfig del cluster. Per un utente inserisci il percorso del file kubeconfig del cluster 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 in Terraform di configurazione utilizzato per creare il cluster o il pool di nodi. Consulta la documentazione di riferimento di Terraform per una descrizione dettagliata dei campi:
Aggiorna la configurazione eseguendo il comando
terraform apply
.
Le seguenti sezioni descrivono alcuni esempi comuni per l'aggiornamento di un modello esistente in un cluster Kubernetes.
Aggiungi o rimuovi nodi in un cluster
Un pool di nodi è un gruppo di nodi all'interno di un cluster che hanno la stessa configurazione. Tieni presente che ogni nodo appartiene sempre a un pool di nodi. Per aggiungere un nuovo nodo a un cluster, per aggiungerlo a un determinato pool di nodi. Rimuovere un nodo da un pool di nodi alla rimozione completa del nodo dal cluster.
In Google Distributed Cloud esistono tre tipi di pool di nodi: piano di controllo, bilanciatore del carico e pool di nodi worker. Le seguenti sezioni descrivono come aggiungi o rimuovi 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. La nell'elenco seguente viene mostrata 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 nel
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 del 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 sul nodo che vuoi rimuovere sono in esecuzione pod critici, innanzitutto metti il nodo in modalità di manutenzione.
Puoi monitorare il processo di svuotamento dei nodi per i nodi worker visualizzando la Campi
status.nodesDrained
estatus.nodesDraining
nelNodePool
risorsa.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
Puoi utilizzare un comando update
per aggiungere o rimuovere nodi. Il comando update
che utilizzi e il flag in cui specifichi l'indirizzo IP dipende dal tipo
del 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: esecuzione
gcloud container bare-metal admin-clusters update
e specifica l'IP indirizzo nella bandiera--control-plane-node-configs 'node-ip=IP_ADDRESS'
.Pool di nodi del piano di controllo su un cluster utente: esecuzione
gcloud container bare-metal clusters update
e specifica l'IP indirizzo nella bandiera--control-plane-node-configs 'node-ip=IP_ADDRESS'
.Pool di nodi del bilanciatore del carico: esecuzione
gcloud container bare-metal clusters update
e specifica l'IP indirizzo nella bandiera--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
. Tu
includi il flag per ogni indirizzo IP nel pool di nodi.
I comandi update
sostituiscono tutti gli indirizzi IP con gli indirizzi IP che
da te specificato. Per aggiungere un nodo, includi gli indirizzi IP del nodo esistente
nodi e l'indirizzo IP del nuovo nodo nel comando update
. Analogamente,
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. Altri comandi dell'interfaccia alla gcloud CLI utili sono incluse anche nei passaggi seguenti.
(Facoltativo) Se sul nodo che vuoi rimuovere sono in esecuzione pod critici, innanzitutto metti il nodo in modalità di manutenzione.
Puoi monitorare il processo di svuotamento dei nodi per i nodi worker visualizzando la Campi
status.nodesDrained
estatus.nodesDraining
nelNodePool
risorsa.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
L'output di esempio seguente è troncato per migliorarne la leggibilità:
annotations: ... baremetal.cluster.gke.io/version: 1.29 ... 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 a--cluster
,--project
e--location
flag.La sezione
nodeConfigs
contiene due campinodeIp
con l'IP degli 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 che da te specificato. 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
è ilOPERATION_ID
dell'operazione a lunga esecuzione. Puoi scoprire lo stato dell'operazione eseguendo questo 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 nuovamente il comando ogni tanto per controllare lo stato.
Se la rimozione del nodo non va a buon fine, puoi forzarne la rimozione dal cluster. Per maggiori dettagli, vedi Rimozione forzata 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
per tutti i tipi di cluster.
Puoi sostituire un nodo in un cluster eseguendo 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: sostituire un nodo del piano di controllo ad alta disponibilità
Ecco un file di configurazione del cluster di esempio che mostra tre piani di controllo nodi 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 in spec.controlPlane.nodePoolSpec.nodes
, procedi nel seguente modo:
Rimuovi il nodo eliminando la voce dell'indirizzo IP nel cluster di configurazione del deployment. Dopo aver apportato questa modifica, il file di configurazione del cluster dovrebbe avere un aspetto simile al seguente:
--- 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 aggiornamento.
- Se il cluster è un cluster a gestione autonoma (ad esempio amministratore o autonomo) del cluster), sostituisci KUBECONFIG con il percorso kubeconfig. Se il cluster è un cluster utente, come in questo caso, Ad esempio, sostituisci KUBECONFIG con il percorso dell'account admin kubeconfig del cluster.
Una volta eseguito correttamente il comando
bmctl update
, sono necessari per completare i jobmachine-preflight
emachine-init
. Puoi visualizza lo stato dei nodi e dei rispettivi pool di nodi eseguendo il comando descritti nella sezione Verificare gli aggiornamenti di questo documento. Quando il pool di nodi e i nodi sono in stato di pronto, può andare al passaggio successivo.Aggiungi un nuovo nodo del piano di controllo al pool di nodi aggiungendo l'indirizzo IP di dal nuovo nodo del piano di controllo a
spec.controlPlane.nodePoolSpec.nodes
del file di configurazione del cluster. Dopo questa modifica, di configurazione del cluster dovrebbe avere un aspetto simile al seguente:--- 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 l'alta disponibilità (HA) dei nodi del piano di controllo nei cluster di amministrazione e utente.
Puoi sostituire un nodo in un cluster eseguendo 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: sostituire 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. Altri comandi dell'interfaccia alla gcloud CLI utili sono incluse anche nei passaggi seguenti.
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=-
L'impostazione di
--location=-
consente di elencare tutti i cluster in regioni. Se devi restringere l'ambito dell'elenco, imposta--location
su un una specifica regione.L'output è simile al seguente:
NAME LOCATION VERSION ADMIN_CLUSTER STATE abm-user-cluster1a us-central1 1.29 abm-admin-cluster1 RUNNING abm-user-cluster1b europe-west1 1.29 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 è troncato per migliorarne la 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 esempio,abm-user-cluster1a
, insieme a--project
e--location flags
.La sezione
nodeConfigs
contiene tre campinodeIp
con l'IP degli 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
è ilOPERATION_ID
dell'operazione a lunga esecuzione. Puoi scoprire lo stato dell'operazione eseguendo questo 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 nuovamente il comando ogni tanto per controllare 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'
Verifica gli aggiornamenti
kubectl
Puoi visualizzare lo stato dei nodi e dei rispettivi pool di nodi con il
Comando kubectl get
.
Ad esempio, il seguente comando mostra lo stato dei pool di nodi nella
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
indica che il passaggio della riconciliazione è ancora in corso. Tu
deve attendere che lo stato diventi Reconciling=0
.
Puoi anche controllare lo stato dei nodi in un cluster eseguendo :
kubectl get nodes --kubeconfig=KUBECONFIG
Interfaccia a riga di comando gcloud
Come descritto in precedenza, dopo aver eseguito un comando update
, puoi
controlla lo stato dell'operazione utilizzando gcloud container bare-metal
operations describe OPERATIONS_ID
. L'output di
il comando fornisce 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 che utilizzi per aggiornare un pool di nodi, puoi ottenere
stato 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 Crea snapshot per diagnosticare i cluster.
Pool di indirizzi del bilanciatore del carico
Bmctl
La addressPools
contiene i campi per specificare i pool di bilanciamento del carico per MetalLB
e BGP (Border Gateway Protocol)
in bundle con i bilanciatori del carico. Puoi aggiungerne altri
dei pool di indirizzi per il bilanciamento del carico in qualsiasi momento, ma non puoi rimuovere eventuali
pool di indirizzi. A partire da Google Distributed Cloud versione 1.16.0, puoi
modifica i valori di 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 altri pool di indirizzi di bilanciamento del carico in qualsiasi momento per il bundle
bilanciatori del carico, ma non puoi rimuovere i pool di indirizzi esistenti. Il flag che
da te specificato in gcloud container bare-metal clusters update
per aggiungere un indirizzo
dipende dal tipo di bilanciatore del carico in bundle:
- MetalLB (livello 2): usa il flag
--metal-lb-address-pools
. - BGP (Border Gateway Protocol): 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 la piscina.avoid-buggy-ips
: se la imposti suTrue
, la gestione degli indirizzi IP (IPAM) non assegnerà indirizzi IP che terminano con.0
o.255
a Servizi. In questo modo si evita il problema dei dispositivi consumer con errori eliminando il traffico inviato a questi indirizzi IP speciali. Se non specificato, il valore predefinito èFalse
. A partire da Google Distributed Cloud versione 1.16.0, puoi modificare questo valore in un pool di indirizzi esistente.manual-assign
: se non vuoi che il controller IPAM assegnare automaticamente gli indirizzi IP da questo pool ai servizi, impostare aTrue
. Quindi uno sviluppatore può creare un servizio di tipoLoadBalancer
e specificare manualmente uno degli indirizzi nel piscina. Se non specificato, il criteriomanual-assign
è impostato suFalse
. A partire da Google Distributed Cloud versione 1.16.0, puoi modificare in un pool di indirizzi esistente.Nell'elenco di
addresses
: ogni indirizzo deve essere un intervallo in CIDR o formato dell'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 in 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 saperne di più sui pool di indirizzi dei bilanciatori 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, ti verrà impedito di eliminare
in un cluster Kubernetes. 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"
, ti è stato impedito di
l'eliminazione del 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"
Tentativo di 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
bypassPreflightCheck
è false
. Se imposti questo campo su true
nella configurazione del cluster
i controlli preflight interni vengono ignorati quando applichi le risorse
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 cluster
bmctl
Puoi aggiungere o rimuovere un account utente o di servizio come amministratore del cluster
per un cluster utente specificando gli indirizzi email nel clusterSecurity.authorization.clusterAdmin.gcpAccounts
del file di configurazione del cluster. Agli account viene concesso
cluster-admin sul cluster, fornendo 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
account nell'elenco (account nuovi ed esistenti) perché bmctl update
sovrascrive l'elenco con quanto specificato nel file di configurazione. A
rimuovi 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
. La bandiera
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 di concessioni. Specifica tutti i segmenti di pubblico
ai nuovi utenti che vuoi
essere amministratori del cluster.
Imposta un utente di accesso
Puoi specificare un nome utente non root che vuoi utilizzare per sudo
senza password
alle macchine nodo nel tuo cluster. La tua chiave SSH,
sshPrivateKeyPath
,
deve funzionare per l'utente specificato. Il controllo delle operazioni di creazione e aggiornamento del cluster
per consentire l'accesso 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
Specifica l'utente che vuoi utilizzare per accedere alle macchine nodo nella
--login-user
, ad esempio:
gcloud container bare-metal clusters update abm-user-cluster1a \
--project=example-project-12345 \
--location=us-central1 \
--login-user=abm
Per attivare l'accesso senza password a sudo
per un utente, segui questi passaggi per ogni
del nodo cluster:
Usa
sudo visudo
per aprire il file sudoers per la modifica:sudo visudo -f /etc/sudoers
Il comando
visudo
blocca il file sudoers per impedire modifiche simultanee e convalida la sintassi del file al momento del salvataggio.Per l'utente di accesso, aggiungi una voce al file sudoers come segue:
USERNAME ALL=(ALL) NOPASSWD: ALL
Chiudi e salva il file.
Per eseguire comandi con i privilegi dell'utente di accesso, esegui quanto segue :
su - USERNAME
Per verificare che l'utente di accesso non richieda una password per eseguire
sudo
esegui questo comandosudo
:sudo ip a
Networking avanzato
Le funzionalità di networking avanzate vengono configurate in varie risorse personalizzate viene creato il cluster. Per utilizzare le risorse personalizzate e il networking correlato devi abilitare il networking avanzato quando crei il cluster.
bmctl
Imposta clusterNetwork.advancedNetworking
a true
nella configurazione del cluster al momento della creazione:
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
in
il 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 un IP mobile
per le funzionalità di networking avanzate, come
gateway NAT o
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
Configuri il bilanciamento del carico BGP (Border Gateway Protocol) nel cluster
e altre risorse personalizzate. I comandi gcloud container bare-metal clusters
create
e update
supportano la configurazione di BGP nel cluster
ma non le risorse personalizzate.
Quando configuri bilanciatori del carico in bundle con BGP, il piano dati carica
per impostazione predefinita utilizza gli stessi peer esterni specificati
il peering del piano di controllo. In alternativa, puoi configurare il carico del piano dati
di Google Cloud, utilizzando la risorsa personalizzata BGPLoadBalancer
e
BGPPeer
risorsa personalizzata. Per ulteriori informazioni, vedi
Configura 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 l'intervallo della rete di servizi
Per creare più servizi rispetto al limite iniziale, puoi ridurre il servizio IPv4 Maschera CIDR per aumentare la rete di servizi del cluster. Riduzione della maschera (il valore dopo "/") comporta un intervallo di rete più ampio. Puoi solo Aumenta 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 in 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 delle immagini kubelet
Il kubelet viene eseguito su ciascun nodo del cluster. Il kubelet è responsabile il monitoraggio dei container su un nodo e assicurandosi che siano integri. Se necessario, il kubelet esegue query ed estrae immagini da Container Registry.
Aggiornamento manuale delle configurazioni kubelet e mantenimento sincronizzate in tutti i nodi del cluster può essere impegnativo. A peggiorare le cose, le modifiche manuali alla configurazione kubelet sui nodi andranno perse quando esegui l'upgrade nel tuo cluster.
Per rendere gli aggiornamenti sincronizzati più semplici e persistenti, Google Distributed Cloud consente di specificare alcune impostazioni kubelet per ciascuno dei pool di nodi cluster: nodi del piano di controllo, nodi bilanciatore del carico e nodi worker. Si applicano le impostazioni per tutti i nodi in un determinato pool e vengono mantenuti attraverso gli upgrade del cluster. I campi perché queste impostazioni sono modificabili, quindi puoi aggiornarle in qualsiasi momento, non solo durante la creazione del cluster.
bmctl
I seguenti campi supportati controllano le operazioni pull di Container Registry per kubelet:
registryBurst
(valore predefinito: 10)registryPullQPS
(valore predefinito: 5)serializeImagePulls
(valore predefinito: true)
Per ulteriori informazioni su ciascun campo di configurazione kubelet, consulta Riferimento per il campo di configurazione del cluster.
Puoi specificare questi campi nelle sezioni kubeletConfig
delle specifiche del cluster.
la specifica del pool di nodi per i seguenti pool di nodi:
- Specifiche del cluster:
- Nodi del piano di controllo
spec.controlPlane.nodePoolSpec.kubeletConfig
- Nodi del bilanciatore del carico
spec.loadBalancer.nodePoolSpec.kubeletConfig
- Specifica del pool di nodi:
- Nodi worker
spec.kubeletConfig
L'esempio seguente mostra i campi aggiunti con i relativi valori predefiniti in
il 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 control plane
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 l'ottimizzazione dei pull delle immagini:
Poiché per impostazione predefinita le immagini vengono estratte in serie, il pull delle immagini richiede può ritardare tutte le altre operazioni di pull delle immagini pianificate su un nodo. Pull delle immagini ritardati possono bloccare il processo di upgrade (soprattutto quando il nuovo Google Distributed Cloud il deployment delle immagini deve essere eseguito su un nodo). Se ti riguarda il pull delle immagini ritardi, puoi disattivare il pull delle immagini seriali per consentire le immagini parallele pull.
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 si adattano la frequenza di pull e le dimensioni della coda e può aiutare a risolvere altri problemi che le applicazioni presentino problemi di prestazioni. Non sono consentiti valori negativi.