Dopo aver creato un cluster con bmctl
, puoi aggiornare le risorse personalizzate del cluster. Il file di configurazione viene archiviato come bmctl-workspace/CLUSTER-NAME/CLUSTER-NAME.yaml
, a meno che non hai specificato una posizione diversa.
Aggiungi o rimuovi nodi in un cluster
Nei cluster Anthos su Bare Metal, puoi aggiungere o rimuovere i nodi in un cluster modificando le definizioni dei pool di nodi nel cluster. Puoi usare il comando bmctl
per modificare queste definizioni.
Esistono tre diversi tipi di pool di nodi nei cluster Anthos su Bare Metal: piano di controllo, bilanciatore del carico e pool di nodi worker.
Visualizza stato nodo
Puoi visualizzare lo stato dei nodi e i rispettivi pool di nodi con il comando kubectl get
.
Ad esempio, il seguente comando mostra lo stato dei pool di nodi nello spazio dei nomi del cluster my-cluster
:
kubectl -n my-cluster get nodepools.baremetal.cluster.gke.io
Il sistema restituisce risultati simili ai seguenti:
NAME READY RECONCILING STALLED UNDERMAINTENANCE UNKNOWN
my-cluster 3 0 0 0 0
my-cluster-lb 2 0 0 0 0
np1 3 0 0 0 0
Se hai bisogno di maggiori informazioni sulla diagnostica dei cluster, vedi Creare snapshot per la diagnosi dei cluster.
Cambia nodi
La maggior parte delle modifiche ai nodi è specificata nel file di configurazione del cluster, che viene quindi applicato al cluster. Ti consigliamo di utilizzare il file di configurazione del cluster come origine principale per l'aggiornamento del cluster. Una best practice consiste nell'archiviazione del file di configurazione in un sistema di controllo della versione per tenere traccia delle modifiche apportate ai fini della risoluzione dei problemi. Per tutti i tipi di cluster, utilizza il comando bmctl update
per aggiornare il cluster con le modifiche ai nodi.
Il file di configurazione del cluster Anthos clusters on bare metal include una sezione di intestazione con informazioni sulle credenziali. Le voci delle credenziali e il resto del file di configurazione sono YAML validi, ma le voci delle credenziali non sono valide per la risorsa cluster. Usa bmctl update credentials
per gli aggiornamenti delle credenziali.
Quando rimuovi i nodi da un cluster, questi vengono prima svuotati di qualsiasi pod. I nodi non verranno rimossi dal cluster se non è possibile riprogrammare i pod su altri nodi. Il comando bmctl update
analizzerà il file di configurazione del cluster e applicherà le risorse personalizzate in base al risultato analizzato.
Di seguito è riportata una configurazione di esempio con due nodi:
---
apiVersion: baremetal.cluster.gke.io/v1
kind: NodePool
metadata:
name: nodepool1
namespace: cluster-cluster1
spec:
clusterName: cluster1
nodes:
- address: 172.18.0.5
- address: 172.18.0.6
Puoi rimuovere un nodo dal pool di nodi eliminando la relativa voce:
---
apiVersion: baremetal.cluster.gke.io/v1
kind: NodePool
metadata:
name: nodepool1
namespace: cluster-cluster1
spec:
clusterName: cluster1
nodes:
- address: 172.18.0.5
Per aggiornare il cluster, esegui il comando seguente per i cluster con gestione autonoma, ad esempio cluster amministrativi e autonomi:
bmctl update cluster -c CLUSTER_NAME \
--kubeconfig=KUBECONFIG
Una volta eseguito correttamente il comando bmctl update
, il completamento dei pod machine-init
o machine-reset
richiederà un po' di tempo.
Le seguenti sezioni descrivono alcune importanti differenze per l'aggiornamento di tipi di nodi specifici.
Nodi del piano di controllo e del bilanciatore del carico
Le specifiche del piano di controllo e del pool di nodi del bilanciatore del carico per Cluster Anthos on bare metal sono speciali. Queste specifiche dichiarano e controllano le risorse critiche del cluster. L'origine canonica per queste risorse è la sezione corrispondente nel file di configurazione del cluster:
spec.controlPlane.nodePoolSpec
spec.LoadBalancer.nodePoolSpec
Puoi aggiungere o rimuovere i nodi del piano di controllo o del bilanciatore del carico modificando l'array degli indirizzi in nodes
nella sezione corrispondente del file di configurazione del cluster.
In una configurazione ad alta disponibilità (HA), è necessario un numero dispari di pool di nodi del piano di controllo (tre o più) per stabilire un quorum per garantire che, in caso di errore di un piano di controllo, altri acquisiscano il controllo. Se hai un numero pari di nodi temporaneamente in fase di annuncio o di rimozione dei nodi per la manutenzione o la sostituzione, il deployment mantiene l'alta disponibilità purché tu disponga di quorum sufficiente.
Nodi worker
Puoi aggiungere o rimuovere i nodi worker direttamente con il comando bmctl
. I pool di nodi worker devono avere almeno un nodo desiderato. Tuttavia, se vuoi rimuovere l'intero pool di nodi, utilizza il comando kubectl
. Nell'esempio seguente, il comando elimina un pool di nodi denominato np1
, in cui la variabile per lo spazio dei nomi del cluster è my-cluster
:
kubectl -n my-cluster delete nodepool np1
Altri campi modificabili
Oltre ad aggiungere e rimuovere nodi, puoi anche usare il comando bmctl update
per modificare determinati elementi della configurazione del cluster. In genere, per aggiornare la risorsa nel cluster, devi modificare la versione locale del file di configurazione del cluster e utilizzare bmctl update
per applicare le modifiche. Il comando bmctl update
è simile al comando kubectl apply
.
Le seguenti sezioni descrivono alcuni esempi comuni per l'aggiornamento di un cluster esistente modificando un valore di campo o modificando una risorsa personalizzata correlata.
loadBalancer.addressPools
La sezione addressPools
contiene campi per specificare i pool di bilanciamento del carico per i bilanciatori del carico in bundle. Puoi aggiungere altri pool di indirizzi di bilanciamento del carico in qualsiasi momento, ma non puoi rimuovere o modificare i pool di indirizzi esistenti.
addressPools:
- name: pool1
addresses:
- 192.168.1.0-192.168.1.4
- 192.168.1.240/28
- name: pool2
addresses:
- 192.168.1.224/28
bypassPreflightCheck
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 e applichi le 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
loginUser
Puoi impostare il campo loginUser
nella configurazione dell'accesso al nodo. Questo campo supporta la funzionalità sudo
senza password per l'accesso alla macchina.
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
NetworkGatewayGroup
La risorsa personalizzata NetworkGatewayGroup
viene utilizzata per fornire indirizzi IP mobili per le funzionalità di networking avanzate, come il gateway NAT in uscita o la funzionalità di bilanciamento del carico in bundle con BGP.
Per utilizzare la risorsa personalizzata NetworkGatewayGroup
e le relative funzionalità di networking, devi impostare clusterNetwork.advancedNetworking
su true
quando crei i cluster.
apiVersion: networking.gke.io/v1
kind: NetworkGatewayGroup
name: default
namespace: cluster-bm
spec:
floatingIPs:
- 10.0.1.100
- 10.0.2.100
BGPLoadBalancer
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 il bilanciamento del carico del piano dati separatamente, utilizzando la risorsa personalizzata BGPLoadBalancer
e la risorsa personalizzata BGPPeer
. Per saperne di più, consulta
Configura bilanciatori del carico in bundle con BGP.
apiVersion: networking.gke.io/v1
kind: BGPLoadBalancer
metadata:
name: default
namespace: cluster-bm
spec:
peerSelector:
cluster.baremetal.gke.io/default-peer: "true"
BGPPeer
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 il bilanciamento del carico del piano dati separatamente, utilizzando la risorsa personalizzata BGPPeer
e la risorsa personalizzata BGPLoadBalancer
. Per saperne di più, consulta
Configura bilanciatori del carico in bundle con BGP.
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
NetworkAttachmentDefinition
Puoi utilizzare il comando bmctl update
per modificare le risorse personalizzate NetworkAttachmentDefinition
che corrispondono alla rete.
apiVersion: "k8s.cni.cncf.io/v1"
kind: NetworkAttachmentDefinition
metadata:
name: gke-network-1
namespace: cluster-my-cluster
spec:
config: '{
"type": "ipvlan",
"master": "enp2342",
"mode": "l2",
"ipam": {
"type": "whereabouts",
"range": "172.120.0.0/24"
Dopo aver modificato il file di configurazione, puoi aggiornare il cluster eseguendo il comando bmctl update
. Analizzerà il file di configurazione del cluster e applicherà risorse personalizzate in base al risultato analizzato.
Per i cluster con gestione autonoma, come quelli per amministratori e autonomi, esegui:
bmctl update cluster -c CLUSTER_NAME --kubeconfig=KUBECONFIG
Per i cluster utente, esegui:
bmctl update cluster -c CLUSTER_NAME --admin-kubeconfig=ADMIN_KUBECONFIG