Gestire i cluster Kubernetes

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:

  1. Individua il nome del cluster Kubernetes o chiedi all'amministratore della piattaforma qual è il nome del cluster.

  2. Accedi e genera il file kubeconfig per il cluster Kubernetes se non ne hai uno.

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

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

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

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

  1. Nella dashboard, seleziona il progetto in cui esiste il cluster che intendi modificare.
  2. Nel menu di navigazione, seleziona Kubernetes Engine > 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/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.
  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/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:

  1. Nel menu di navigazione, seleziona Kubernetes Engine > Cluster.
  2. Fai clic sul cluster nell'elenco dei cluster per aprire la pagina Dettagli cluster.
  3. Seleziona Allega progetto.
  4. 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:

  1. Nel menu di navigazione, seleziona Kubernetes Engine > Cluster.
  2. Fai clic sul cluster nell'elenco dei cluster per aprire la pagina Dettagli cluster.
  3. Fai clic su 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:

    Pagina dei dettagli del cluster per gli stati e altre informazioni per ogni cluster Kubernetes nell'organizzazione.

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

  1. Nel menu di navigazione, seleziona Kubernetes Engine > Cluster.

  2. Nell'elenco dei cluster Kubernetes, 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 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.

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

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.