Manutenzione dei cluster

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:

  1. 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.
  2. 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
    ...
    
  3. 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.

  4. 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.

  5. 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

  1. Nella dashboard, seleziona il progetto in cui esiste il cluster che intendi modificare.
  2. Nel menu di navigazione, seleziona Cluster.
  3. Seleziona il nome del cluster a cui è associato il pool di nodi. Viene visualizzata la pagina Dettagli cluster.
  4. Fai clic sulla scheda Pool di nodi.
  5. Seleziona l'icona Modifica per il pool di nodi che vuoi ridimensionare. Viene visualizzato il prompt Modifica node pool.
  6. 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.

  7. Fai clic su Salva.

  8. 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.

    Verifica che il pool di nodi sia pronto utilizzando la console.

API

  1. Apri la specifica della risorsa personalizzata Cluster con l'interfaccia a riga di comando kubectl utilizzando l'editor interattivo:

    kubectl edit clusters.cluster.gdc.goog/USER_CLUSTER_NAME -n platform \
          --kubeconfig ORG_ADMIN_CLUSTER_KUBECONFIG
    
  2. 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.

  3. Salva il file ed esci dall'editor.

  4. 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:

    Pagina dei dettagli del cluster per stati e altre informazioni per ogni cluster utente dell'organizzazione.

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

  1. Nel menu di navigazione, seleziona Cluster.

  2. Nell'elenco dei cluster di utenti, fai clic sul nome di un cluster per visualizzarne le proprietà.

  3. Le proprietà modificabili hanno un'icona 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.

  1. Apri la specifica della risorsa personalizzata Cluster con l'interfaccia a riga di comando kubectl utilizzando l'editor interattivo:

    kubectl edit clusters.cluster.gdc.goog/USER_CLUSTER_NAME -n platform \
        --kubeconfig ADMIN_CLUSTER_KUBECONFIG
    
  2. 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.

  3. 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.