Aggiorna cluster

Dopo aver creato un cluster con bmctl, puoi aggiornare le risorse personalizzate di quel cluster. Ad esempio, puoi aggiungere o rimuovere nodi in un pool di nodi. Il file di configurazione viene archiviato come bmctl-workspace/CLUSTER-NAME/CLUSTER-NAME.yaml, a meno che tu non abbia specificato una posizione diversa.

Questo documento mostra quali opzioni di configurazione del cluster possono essere aggiornate dopo aver creato un cluster, ad esempio per aggiungere o rimuovere nodi.

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 del cluster. Puoi utilizzare l'indirizzo IP dei nodi per aggiungerli o rimuoverli da un pool di nodi. 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 del nodo

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 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 ulteriori informazioni sulla diagnosi 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. Ti consigliamo di archiviare il 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 al nodo.

Il file di configurazione dei cluster Anthos su Bare Metal Cluster 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 del cluster. Usa bmctl update credentials per gli aggiornamenti delle credenziali.

Quando rimuovi i nodi da un cluster, vengono prima svuotati di tutti i 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 eliminando la relativa voce di indirizzo IP:

---
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 ad autogestione, ad esempio cluster amministrativi e cluster autonomi:

bmctl update cluster -c CLUSTER_NAME \
    --kubeconfig=KUBECONFIG

Una volta eseguito correttamente il comando bmctl update, sarà necessario un po' di tempo per il completamento dei pod machine-init o machine-reset.

Le seguenti sezioni descrivono alcune importanti differenze per l'aggiornamento di tipi di nodi specifici.

Nodi del piano di controllo e bilanciatore del carico

Le specifiche del pool di nodi del piano di controllo e del bilanciatore del carico per i cluster Anthos su Bare Metal sono speciali. Queste specifiche dichiarano e controllano le risorse del cluster critiche. L'origine canonica di queste risorse è la loro rispettiva sezione 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 di indirizzi in nodes nella sezione corrispondente del file di configurazione del cluster.

In una configurazione ad alta disponibilità (HA), è richiesto 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 prenderanno il controllo. Se temporaneamente hai un numero pari di nodi durante l'aggiunta o la rimozione di nodi per la manutenzione o la sostituzione, il deployment mantiene alta disponibilità purché tu abbia un 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, dove 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 alcuni elementi della configurazione del cluster. In genere, per aggiornare la risorsa cluster, è necessario 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 illustrano alcuni esempi comuni di 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 interni di preflight vengono ignorati per applicare 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à senza password per l'accesso alla macchina sudo.

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 maggiori informazioni, consulta la pagina Configurare i 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 maggiori informazioni, consulta la pagina Configurare i 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 autogestibili, come cluster amministrativi 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