Google Distributed Cloud (GDC) air-gapped ti consente di gestire i cluster Kubernetes dopo la creazione utilizzando GKE su GDC. Questo servizio ti consente di adattarti ai requisiti in evoluzione dei carichi di lavoro dei container.
Prima di iniziare
Per visualizzare e gestire i node pool in un cluster Kubernetes, devi disporre dei seguenti ruoli:
- Amministratore cluster utente (
user-cluster-admin
) - Visualizzatore nodi del cluster utente (
user-cluster-node-viewer
)
Questi ruoli non sono associati a uno spazio dei nomi.
Per eseguire comandi su un cluster Kubernetes, assicurati di disporre delle seguenti risorse:
Individua il nome del cluster Kubernetes o chiedi all'amministratore della piattaforma qual è il nome del cluster.
Accedi e genera il file kubeconfig per il cluster Kubernetes se non ne hai uno.
Utilizza il percorso kubeconfig del cluster Kubernetes per sostituire
KUBERNETES_CLUSTER_KUBECONFIG
in queste istruzioni.
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 e i 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 edit cluster KUBERNETES_CLUSTER_NAME \ -n KUBERNETES_CLUSTER_NAMESPACE \ --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG
Sostituisci quanto segue per il cluster Kubernetes:
KUBERNETES_CLUSTER_NAME
: il nome del cluster.KUBERNETES_CLUSTER_NAMESPACE
: lo spazio dei nomi del cluster.KUBERNETES_CLUSTER_KUBECONFIG
: Il percorso del file kubeconfig.
Dopo l'applicazione della configurazione del cluster, il cluster mette i nodi applicabili in modalità di manutenzione.
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 ...
Visualizza lo stato dei nodi nel cluster:
kubectl get nodes -n KUBERNETES_CLUSTER_NAME \ --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG
La risposta è simile alla seguente:
NAME STATUS ROLES AGE VERSION user-gdc-01 Ready master 2d22h v1.23.5-gke.1502 user-gdc-04 Ready none 2d22h v1.23.5-gke.1502 user-gdc-05 Ready,SchedulingDisabled none 2d22h v1.23.5-gke.1502 user-gdc-06 Ready none 2d22h v1.23.5-gke.1502
Lo stato
SchedulingDisabled
indica che un nodo è in modalità di manutenzione.Recupera il numero di nodi in modalità di manutenzione:
kubectl get nodepools --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG
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 KUBERNETES nell'ambiente GDC può avere il
pool di nodi ridimensionato per scalare in base alle modifiche del carico di lavoro. Per gestire i node pool in un cluster Kubernetes, devi disporre del ruolo Amministratore cluster utente (user-cluster-admin
).
Questo ruolo non è associato a uno spazio dei nomi.
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 Kubernetes Engine > 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/KUBERNETES_CLUSTER_NAME -n platform \ --kubeconfig MANAGEMENT_API_SERVER
Sostituisci quanto segue:
KUBERNETES_CLUSTER_NAME
: il nome del cluster che ospita ilpool di nodil.MANAGEMENT_API_SERVER
: il percorso kubeconfig del server API zonale in cui è ospitato il cluster Kubernetes. Se non hai ancora generato un file kubeconfig per il server API nella zona di destinazione, consulta Accedi per maggiori dettagli.
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/KUBERNETES_CLUSTER_NAME -n platform -o json \ --kubeconfig MANAGEMENT_API_SERVER | 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.
Spostare i cluster nella gerarchia del progetto
I progetti forniscono un raggruppamento logico delle istanze di servizio. Puoi aggiungere e rimuovere cluster Kubernetes dalla gerarchia dei progetti GDC per raggruppare i servizi in modo appropriato.
Collega il progetto a un cluster
Quando crei un cluster dalla console GDC, devi collegare almeno un progetto prima di poter eseguire il deployment dei carichi di lavoro dei container. Se devi aggiungere altri progetti a un cluster esistente, completa i seguenti passaggi:
- Nel menu di navigazione, seleziona Kubernetes Engine > Cluster.
- Fai clic sul cluster nell'elenco dei cluster per aprire la pagina Dettagli cluster.
- Seleziona Allega progetto.
- Seleziona i progetti disponibili da aggiungere dall'elenco dei progetti. Fai clic su Salva.
Scollegare un progetto da un cluster
Per scollegare un progetto da un cluster Kubernetes esistente, completa i seguenti passaggi:
- Nel menu di navigazione, seleziona Kubernetes Engine > Cluster.
- Fai clic sul cluster nell'elenco dei cluster per aprire la pagina Dettagli cluster.
Fai clic su delete Scollega per scollegare il progetto dal cluster.
Visualizzare tutti i cluster in un'organizzazione
Puoi visualizzare tutti i cluster Kubernetes disponibili in un'organizzazione, inclusi i relativi stati, le versioni di Kubernetes e altri dettagli. Poiché i cluster Kubernetes sono unarisorsa di zonae, puoi elencare i cluster solo per zona.
Console
Nel menu di navigazione, seleziona Kubernetes Engine > Cluster.
Vengono visualizzati tutti i cluster disponibili nell'organizzazione con i relativi stati e altre informazioni:
kubectl
Elenca i cluster Kubernetes disponibili della zona in un'organizzazione:
kubectl get clusters.cluster.gdc.goog -n platform \ --kubeconfig MANAGEMENT_API_SERVER
Sostituisci
MANAGEMENT_API_SERVER
con il percorso kubeconfig del server API zonale. Se non hai ancora generato un file kubeconfig per il server API nella zona di destinazione, consulta Accedi per i dettagli.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 Kubernetes, è 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 Kubernetes Engine > Cluster.
Nell'elenco dei cluster Kubernetes, 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 MANAGEMENT_API_SERVER
Sostituisci
MANAGEMENT_API_SERVER
con il percorso kubeconfig del server API zonale. Se non hai ancora generato un file kubeconfig per il server API nella zona di destinazione, consulta Accedi per i dettagli.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 GDC air-gapped 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, GDC 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 Ingress dopo aver creato un cluster Kubernetes.
Apri la specifica della risorsa personalizzata
Cluster
con l'interfaccia a riga di comandokubectl
utilizzando l'editor interattivo:kubectl edit clusters.cluster.gdc.goog/KUBERNETES_CLUSTER_NAME -n platform \ --kubeconfig MANAGEMENT_API_SERVER
Sostituisci quanto segue:
KUBERNETES_CLUSTER_NAME
: il nome del cluster che fornisce l'indirizzo IP.MANAGEMENT_API_SERVER
: il percorso kubeconfig del server API zonale in cui è ospitato il cluster Kubernetes. Se non hai ancora generato un file kubeconfig per il server API nella zona di destinazione, consulta Accedi per maggiori dettagli.
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.
Esegui l'upgrade di un cluster Kubernetes
Puoi eseguire un upgrade automatico o manuale del cluster Kubernetes. Per ulteriori istruzioni su come eseguire l'upgrade del cluster, consulta la sezione Upgrade del cluster.