L'appliance air-gapped Google Distributed Cloud (GDC) ti consente di gestire i cluster Kubernetes dopo la creazione, in modo da poterti adattare ai requisiti in evoluzione del carico di lavoro dei container.
Esegui la manutenzione del nodo
Quando devi riparare o eseguire la manutenzione dei nodi, per prima cosa mettili in modalità di manutenzione. L'attivazione della modalità di manutenzione sui nodi svuota in modo sicuro i pod/carichi di lavoro ed esclude i nodi dalla pianificazione dei pod. In modalità di manutenzione, puoi lavorare sui nodi senza correre il rischio di interrompere il traffico dei pod.
Come funziona
La modalità di manutenzione per GDC è simile all'esecuzione di kubectl
cordon
e kubectl drain
per un nodo specifico. Ecco alcuni dettagli rilevanti per la modalità di manutenzione:
- I nodi specificati sono contrassegnati come non pianificabili. Questa azione è ciò che fa
kubectl cordon
. - Le incompatibilità dei nodi vengono aggiunte ai nodi specificati per indicare che nessun pod può essere pianificato o eseguito sui nodi. Questa azione è simile a
kubectl drain
. - Viene applicato un timeout di 20 minuti per garantire che i nodi non rimangano bloccati in attesa dell'arresto dei pod. I pod potrebbero non terminare se sono configurati per tollerare tutte le contaminazioni o se hanno finalizzatori. I cluster GDC tentano di terminare tutti i pod, ma se il timeout viene superato, il nodo viene messo in modalità di manutenzione. Questo timeout impedisce ai pod in esecuzione di bloccare gli upgrade.
- Se sul nodo è in esecuzione un carico di lavoro basato su VM, i cluster GDC applicano un
NodeSelector
al pod dell'istanza di macchina virtuale (VMI), quindi arrestano il pod.NodeSelector
assicura che il pod VMI venga riavviato sullo stesso nodo quando il nodo viene rimosso dalla modalità di manutenzione.
Attivare la modalità di manutenzione di un nodo
Scegli i nodi da mettere in modalità di manutenzione specificando gli intervalli di indirizzi IP
per i nodi selezionati nella sezione maintenanceBlocks
del file di configurazione del cluster. I nodi che scegli devono essere in stato Ready
e
funzionare nel cluster.
Per attivare la modalità di manutenzione dei nodi:
Modifica il file di configurazione del cluster per selezionare i nodi da mettere in modalità di manutenzione.
Puoi modificare il file di configurazione con un editor a tua scelta oppure puoi modificare la risorsa personalizzata del cluster direttamente eseguendo il seguente comando:
kubectl -n CLUSTER_NAMESPACE edit cluster CLUSTER_NAME
Sostituisci quanto segue:
- CLUSTER_NAMESPACE: lo spazio dei nomi del cluster.
- CLUSTER_NAME: il nome del cluster.
Aggiungi la sezione
maintenanceBlocks
al file di configurazione del cluster per specificare un singolo indirizzo IP o un intervallo di indirizzi per i nodi che vuoi mettere in modalità di manutenzione.L'esempio seguente mostra come selezionare più nodi specificando un intervallo di indirizzi IP:
... metadata: name: my-cluster namespace: cluster-my-cluster spec: maintenanceBlocks: cidrBlocks: - 172.16.128.1-172.16.128.64 ...
Salva e applica la configurazione del cluster aggiornata:
kubectl apply -f my-cluster.yaml
Dopo l'applicazione della configurazione del cluster, il cluster mette i nodi applicabili in modalità di manutenzione.
Esegui questo comando per ottenere lo stato dei nodi nel cluster:
kubectl get nodes -n CLUSTER_NAME
La risposta è simile alla seguente:
NAME STATUS ROLES AGE VERSION user-gdch-01 Ready master 2d22h v1.23.5-gke.1502 user-gdch-04 Ready none 2d22h v1.23.5-gke.1502 user-gdch-05 Ready,SchedulingDisabled none 2d22h v1.23.5-gke.1502 user-gdch-06 Ready none 2d22h v1.23.5-gke.1502
Lo stato
SchedulingDisabled
indica che un nodo è in modalità di manutenzione.Esegui questo comando per ottenere il numero di nodi in modalità di manutenzione:
kubectl get nodepools
La risposta è simile al seguente output:
NAME READY RECONCILING STALLED UNDERMAINTENANCE UNKNOWN np1 3 0 0 1 0
La colonna
UNDERMAINTENANCE
in questo esempio mostra che un nodo è in modalità di manutenzione.I cluster aggiungono anche i seguenti taint ai nodi quando vengono messi in modalità di manutenzione:
baremetal.cluster.gke.io/maintenance:NoExecute
baremetal.cluster.gke.io/maintenance:NoSchedule
Ridimensiona i node pool
Qualsiasi cluster utente nell'ambiente GDC può avere il
pool di nodi ridimensionato per scalare in base alle modifiche del carico di lavoro. Per gestire i pool di nodi in un cluster utente, devi disporre del ruolo Amministratore cluster utente (user-cluster-admin
).
Per scalare un pool di nodi in un cluster esistente, completa i seguenti passaggi:
Console
- Nella dashboard, seleziona il progetto in cui esiste il cluster che intendi modificare.
- Nel menu di navigazione, seleziona Cluster.
- Seleziona il nome del cluster a cui è associato il pool di nodi. Viene visualizzata la pagina Dettagli cluster.
- Fai clic sulla scheda Pool di nodi.
- Seleziona l'icona edit Modifica per il pool di nodi che vuoi ridimensionare. Viene visualizzato il prompt Modifica node pool.
Aggiorna il campo Numero di nodi in modo che rifletta la nuova quantità di nodi necessari nelpool di nodil. Puoi aumentare o diminuire il numero di nodi per soddisfare i requisiti del tuo carico di lavoro.
Fai clic su Salva.
Torna alla scheda Node pool del cluster e verifica che il pool di nodi ridimensionato abbia lo stato
Ready
e il numero corretto di nodi. Potrebbero essere necessari alcuni minuti prima che il pool di nodi venga scalato in base alle tue specifiche.
API
Apri la specifica della risorsa personalizzata
Cluster
con l'interfaccia a riga di comandokubectl
utilizzando l'editor interattivo:kubectl edit clusters.cluster.gdc.goog/USER_CLUSTER_NAME -n platform \ --kubeconfig ORG_ADMIN_CLUSTER_KUBECONFIG
Aggiorna il campo
nodeCount
per il pool di nodi da ridimensionare:nodePools: ... - machineTypeName: n2-standard-2-gdc name: nodepool-1 nodeCount: NUMBER_OF_WORKER_NODES
Sostituisci
NUMBER_OF_WORKER_NODES
con il numero aggiornato di nodi worker da eseguire il provisioning nel pool di nodi.Salva il file ed esci dall'editor.
Verifica che lo scaling dei nodi sia completato controllando la configurazione del pool di nodi:
kubectl get clusters.cluster.gdc.goog/USER_CLUSTER_NAME -n platform -o json \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG | jq .status.workerNodePoolStatuses
Verifica che il numero
readyNodes
rifletta la quantità di nodi impostata per il pool di nodi. Potrebbero essere necessari alcuni minuti prima che il pool di nodi venga scalato in base alle tue specifiche.
Visualizzare tutti i cluster in un'organizzazione
Puoi visualizzare tutti i cluster utente disponibili in un'organizzazione, inclusi i relativi stati, le versioni di Kubernetes e altri dettagli.
Console
Nel menu di navigazione, seleziona Cluster.
Vengono visualizzati tutti i cluster disponibili nell'organizzazione con i relativi stati e altre informazioni:
kubectl
Elenca i cluster di utenti disponibili in un'organizzazione:
kubectl get clusters.cluster.gdc.goog -n platform \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG
L'output è simile al seguente:
NAME STATE K8S VERSION user-vm-1 Running 1.25.10-gke.2100 user-test Running 1.26.5-gke.2100
Visualizzare le proprietà aggiornabili
Per ogni cluster utente, è disponibile un insieme di proprietà da modificare dopo la creazione. Puoi modificare solo le proprietà modificabili che si trovano in spec
della risorsa personalizzata Cluster
. Non tutte le proprietà in spec
sono idonee per
l'aggiornamento dopo il provisioning del cluster. Per visualizzare queste proprietà aggiornabili,
completa i seguenti passaggi:
Console
Nel menu di navigazione, seleziona Cluster.
Nell'elenco dei cluster di utenti, fai clic sul nome di un cluster per visualizzarne le proprietà.
Le proprietà modificabili hanno un'icona edit Modifica.
kubectl
Visualizza l'elenco delle proprietà per la specifica
Cluster
e i valori validi corrispondenti a ciascuna proprietà:kubectl explain clusters.cluster.gdc.goog.spec \ --kubeconfig ORG_ADMIN_CLUSTER_KUBECONFIG
L'output è simile al seguente:
KIND: Cluster VERSION: cluster.gdc.goog/v1 RESOURCE: spec <Object> DESCRIPTION: <empty> FIELDS: clusterNetwork <Object> The cluster network configuration. If unset, the default configurations with pod and service CIDR sizes are used. Optional. Mutable. initialVersion <Object> The GDCH version information of the user cluster during cluster creation. Optional. Default to use the latest applicable version. Immutable. loadBalancer <Object> The load balancer configuration. If unset, the default configuration with the ingress service IP address size is used. Optional. Mutable. nodePools <[]Object> The list of node pools for the cluster worker nodes. Optional. Mutable. releaseChannel <Object> The release channel a cluster is subscribed to. When a cluster is subscribed to a release channel, GDCH maintains the cluster versions for users. Optional. Mutable.
Aggiorna queste impostazioni utilizzando la console GDC o la CLI
kubectl
. Ad esempio, puoi ridimensionare un node pool.
Scalare le dimensioni dell'indirizzo IP del servizio di ingresso
Puoi scalare le dimensioni dell'indirizzo IP del servizio di ingresso dopo aver creato un cluster utente.
Apri la specifica della risorsa personalizzata
Cluster
con l'interfaccia a riga di comandokubectl
utilizzando l'editor interattivo:kubectl edit clusters.cluster.gdc.goog/USER_CLUSTER_NAME -n platform \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG
Aggiorna il campo
ingressServiceIPSize
con la nuova dimensione dell'indirizzo IP:... spec: ... loadBalancer: ingressServiceIPSize: INGRESS_SERVICE_IP_SIZE ...
Sostituisci
INGRESS_SERVICE_IP_SIZE
con la dimensione dell'indirizzo IP del servizio di ingresso aggiornato.Salva il file ed esci dall'editor.
Non è previsto un limite prestabilito per le dimensioni dell'indirizzo IP del servizio di ingresso. La quantità di indirizzi IP che richiedi viene soddisfatta in base alla tua organizzazione. Se la richiesta non può essere soddisfatta, il cluster segnala un errore.