Gestire i pool di nodi

Quando crei un cluster Kubernetes Google Distributed Cloud (GDC) con air gap, il numero e il tipo di nodi che specifichi creano il primo pool di nodi del cluster. Puoi eseguire le seguenti attività pool di nodi per un cluster esistente man mano che cambiano i requisiti di computing:

  • Aggiungi un nuovo node pool: aggiungi nuovi node pool man mano che la domanda per i workload del cluster aumenta.

  • Visualizza un node pool: visualizza le caratteristiche e lo stato dei node pool esistenti.

  • Ridimensiona un node pool: aumenta o riduci manualmente i node pool per adattarli alle fluttuazioni del traffico del workload.

  • Elimina un node pool: rimuovi i node pool se la domanda per i workload del cluster diminuisce o se vuoi eliminare i tipi di macchine che non sono più adatti alle operazioni dei container.

Per saperne di più sui node pool in un cluster, consulta Informazioni sui nodi.

Questo documento è rivolto agli sviluppatori di applicazioni all'interno del gruppo di operatori di applicazioni e agli amministratori IT all'interno del gruppo di amministratori della piattaforma, responsabili della gestione dei cluster Kubernetes all'interno della propria organizzazione. Per saperne di più, consulta la documentazione relativa ai segmenti di pubblico per GDC con air gap.

Prima di iniziare

Per completare le attività descritte in questo documento, devi richiedere le autorizzazioni necessarie e preparare l'ambiente.

Richiedi ruoli IAM

Devi disporre di ruoli specifici per ottenere le autorizzazioni necessarie per gestire i node pool in un cluster Kubernetes. I ruoli necessari dipendono dal fatto che tu stia lavorando all'interno di un cluster condiviso con ambito a livello di organizzazione o di un cluster standard con ambito a livello di progetto. Per saperne di più, consulta Configurazioni dei cluster Kubernetes.

Ruoli cluster condivisi

Per creare, eliminare, modificare o visualizzare i node pool di un cluster condiviso, contatta l'amministratore dell'organizzazione IAM per richiedere il ruolo Amministratore cluster utente (user-cluster-admin). Questo ruolo non è associato a uno spazio dei nomi.

Ruoli cluster standard

Contatta l'amministratore del progetto IAM per richiedere i seguenti ruoli:

  • Amministratore cluster standard (standard-cluster-admin): crea, elimina, modifica o visualizza i node pool di un cluster standard.

  • Sviluppatore cluster (cluster-developer): crea, elimina, modifica o visualizza un cluster standard. Questo ruolo è necessario per visualizzare i dettagli pool di nodi del cluster dalla console GDC.

Questi ruoli sono associati allo spazio dei nomi del progetto.

prepara l'ambiente

Per eseguire comandi su un cluster Kubernetes utilizzando l'API, assicurati di disporre delle seguenti risorse:

  • Individua il nome del cluster Kubernetes o chiedi a un membro del gruppo di amministratori della piattaforma qual è il nome del cluster.

  • Utilizza il nome del cluster Kubernetes per sostituire KUBERNETES_CLUSTER_NAME in queste istruzioni.

  • Accedi e genera il file kubeconfig del server API di gestione per il cluster Kubernetes.

  • Utilizza il percorso kubeconfig del server API di gestione per sostituire MANAGEMENT_API_SERVER in queste istruzioni.

Aggiungi un node pool

Per aggiungere un pool di nodi a un cluster Kubernetes esistente, completa i seguenti passaggi:

Console

  1. Nel selettore di progetti, seleziona il tuo progetto o la tua organizzazione.

    I cluster standard hanno un ambito a livello di progetto, mentre i cluster condivisi hanno un ambito a livello di organizzazione. Seleziona l'ambito corretto per visualizzare il tipo di cluster Kubernetes appropriato.

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

  3. Fai clic sul cluster nell'elenco dei cluster. Viene visualizzata la pagina Dettagli cluster.

  4. Seleziona Pool di nodi > Aggiungi pool di nodi.

  5. Assegna un nome al pool di nodi. Non puoi modificare il nome dopo aver creato il pool di nodi.

  6. Specifica il numero di nodi worker da creare nel pool di nodi.

  7. Seleziona la classe di macchina più adatta ai requisiti del tuo workload. Le classi di macchine vengono visualizzate nelle seguenti impostazioni:

    • Tipo di macchina
    • vCPU
    • Memoria
  8. Fai clic su Salva.

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 KUBERNETES_CLUSTER_NAMESPACE \
        --kubeconfig MANAGEMENT_API_SERVER
    

    Sostituisci quanto segue:

    • KUBERNETES_CLUSTER_NAME: il nome del cluster.
    • KUBERNETES_CLUSTER_NAMESPACE: lo spazio dei nomi del cluster. Per i cluster condivisi, utilizza lo spazio dei nomi platform. Per i cluster Standard, utilizza lo spazio dei nomi del progetto del cluster.
    • MANAGEMENT_API_SERVER: il percorso kubeconfig del server API di zona in cui è ospitato il cluster Kubernetes.
  2. Aggiungi una nuova voce nella sezione nodePools:

    nodePools:
    # Several lines of code are omitted here.
    - machineTypeName: MACHINE_TYPE
      name: NODE_POOL_NAME
      nodeCount: NUMBER_OF_WORKER_NODES
      taints: TAINTS
      labels: LABELS
      acceleratorOptions:
        gpuPartitionScheme: GPU_PARTITION_SCHEME
    

    Sostituisci quanto segue:

    • MACHINE_TYPE: il tipo di macchina per i nodi worker del pool di nodi. Consulta i tipi di macchine disponibili per scoprire cosa puoi configurare.
    • NODE_POOL_NAME: il nome del pool di nodi.
    • NUMBER_OF_WORKER_NODES: il numero di nodi worker di cui eseguire il provisioning nel pool di nodi.
    • TAINTS: i taint da applicare ai nodi di questo pool di nodi. Questo è un campo facoltativo.
    • LABELS: le etichette da applicare ai nodi di questo pool di nodi. Contiene un elenco di coppie chiave-valore. Questo è un campo facoltativo.
    • GPU_PARTITION_SCHEME: lo schema di partizionamento della GPU, se esegui workload GPU. Ad esempio, mixed-2. La GPU non viene partizionata se questo campo non è impostato. Per i profili GPU multi-istanza (MIG) disponibili, consulta Profili MIG supportati.
  3. Salva il file ed esci dall'editor.

Visualizza i node pool

Per visualizzare i node pool esistenti in un cluster Kubernetes, completa i seguenti passaggi:

Console

  1. Nel selettore di progetti, seleziona il tuo progetto o la tua organizzazione.

    I cluster standard hanno un ambito a livello di progetto, mentre i cluster condivisi hanno un ambito a livello di organizzazione. Seleziona l'ambito corretto per visualizzare il tipo di cluster Kubernetes appropriato.

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

  3. Fai clic sul cluster nell'elenco dei cluster. Viene visualizzata la pagina Dettagli cluster.

  4. Seleziona Pool di nodi.

Viene visualizzato l'elenco dei node pool in esecuzione nel cluster. Da questa pagina puoi gestire i pool di nodi del cluster.

API

  • Visualizza i node pool di un cluster Kubernetes specifico:

    kubectl get clusters.cluster.gdc.goog/KUBERNETES_CLUSTER_NAME \
        -n KUBERNETES_CLUSTER_NAMESPACE \
        -o json --kubeconfig MANAGEMENT_API_SERVER | \
        jq .status.workerNodePoolStatuses
    

    Sostituisci quanto segue:

    • KUBERNETES_CLUSTER_NAME: il nome del cluster.
    • KUBERNETES_CLUSTER_NAMESPACE: lo spazio dei nomi del cluster. Per i cluster condivisi, utilizza lo spazio dei nomi platform. Per i cluster Standard, utilizza lo spazio dei nomi del progetto del cluster.

    L'output è simile al seguente:

    [
      {
        "conditions": [
          {
            "lastTransitionTime": "2023-08-31T22:16:17Z",
            "message": "",
            "observedGeneration": 2,
            "reason": "NodepoolReady",
            "status": "True",
            "type": "Ready"
          },
          {
            "lastTransitionTime": "2023-08-31T22:16:17Z",
            "message": "",
            "observedGeneration": 2,
            "reason": "ReconciliationCompleted",
            "status": "False",
            "type": "Reconciling"
          }
        ],
        "name": "worker-node-pool",
        "readyNodes": 3,
        "readyTimestamp": "2023-08-31T18:59:46Z",
        "reconcilingNodes": 0,
        "stalledNodes": 0,
        "unknownNodes": 0
      }
    ]
    

Ridimensiona i node pool

Puoi ridimensionare manualmente i node pool in un cluster Kubernetes eseguendo lo scale up o lo scale down del pool. Non puoi selezionare un nodo specifico da rimuovere quando esegui lo scale down di un pool di nodi.

Per scalare un pool di nodi in un cluster esistente, completa i seguenti passaggi:

Console

  1. Nel selettore di progetti, seleziona il tuo progetto o la tua organizzazione.

    I cluster standard hanno un ambito a livello di progetto, mentre i cluster condivisi hanno un ambito a livello di organizzazione. Seleziona l'ambito corretto per visualizzare il tipo di cluster Kubernetes appropriato.

  2. Nella dashboard, seleziona il progetto in cui si trova il cluster che vuoi modificare.

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

  4. Seleziona il nome del cluster a cui è associato il pool di nodi. Viene visualizzata la pagina Dettagli cluster.

  5. Fai clic sulla scheda Pool di nodi.

  6. Seleziona l'icona Modifica per il node pool che vuoi ridimensionare. Viene visualizzato il messaggio Modifica node pool.

  7. Aggiorna il campo Numero di nodi in modo che rifletta il nuovo numero di nodi richiesti nel pool di nodi. Puoi aumentare o diminuire il numero di nodi per soddisfare i requisiti del tuo workload.

  8. Fai clic su Salva.

  9. Torna alla scheda Pool di nodi del tuo cluster e verifica che il pool di nodi ridimensionato abbia lo stato Ready e il numero corretto di nodi. La scalabilità del pool di nodi in base alle tue specifiche può richiedere alcuni minuti.

    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 KUBERNETES_CLUSTER_NAMESPACE \
        --kubeconfig MANAGEMENT_API_SERVER
    

    Sostituisci quanto segue:

    • KUBERNETES_CLUSTER_NAME: il nome del cluster che ospita il pool di nodi.
    • KUBERNETES_CLUSTER_NAMESPACE: lo spazio dei nomi del cluster. Per i cluster condivisi, utilizza lo spazio dei nomi platform. Per i cluster Standard, utilizza lo spazio dei nomi del progetto del cluster.
    • MANAGEMENT_API_SERVER: il percorso kubeconfig del server API di zona in cui è ospitato il cluster Kubernetes.
  2. Aggiorna il campo nodeCount per il pool di nodi da ridimensionare:

    nodePools:
    # Several lines of code are omitted here.
    - 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 di cui eseguire il provisioning nel pool di nodi.

  3. Salva il file ed esci dall'editor.

  4. Verifica che la scalabilità dei nodi sia stata completata controllando la configurazione del pool di nodi:

    kubectl get clusters.cluster.gdc.goog/KUBERNETES_CLUSTER_NAME \
        -n KUBERNETES_CLUSTER_NAMESPACE -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. La scalabilità del pool di nodi in base alla tua specifica può richiedere alcuni minuti.

Elimina un node pool

L'eliminazione di un pool di nodi comporta l'eliminazione dei nodi e delle relative route. Questi nodi rimuovono e ripianificano i pod in esecuzione su di essi. Se i pod hanno selettori di nodi specifici, potrebbero rimanere in una condizione non pianificabile se nessun altro nodo nel cluster soddisfa i criteri.

Assicurati di avere almeno tre nodi worker prima di eliminare un pool di nodi per garantire che il cluster abbia spazio di calcolo sufficiente per funzionare in modo efficace.

Per eliminare un pool di nodi, completa i seguenti passaggi:

Console

  1. Nel selettore di progetti, seleziona il tuo progetto o la tua organizzazione.

    I cluster standard hanno un ambito a livello di progetto, mentre i cluster condivisi hanno un ambito a livello di organizzazione. Seleziona l'ambito corretto per visualizzare il tipo di cluster Kubernetes appropriato.

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

  3. Fai clic sul cluster che ospita il pool di nodi che vuoi eliminare.

  4. Seleziona Pool di nodi.

  5. Fai clic su Elimina accanto al pool di nodi da eliminare.

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 KUBERNETES_CLUSTER_NAMESPACE \
        --kubeconfig MANAGEMENT_API_SERVER
    

    Sostituisci quanto segue:

    • KUBERNETES_CLUSTER_NAME: il nome del cluster.
    • KUBERNETES_CLUSTER_NAMESPACE: lo spazio dei nomi del cluster. Per i cluster condivisi, utilizza lo spazio dei nomi platform. Per i cluster Standard, utilizza lo spazio dei nomi del progetto del cluster.
    • MANAGEMENT_API_SERVER: il percorso kubeconfig del server API di zona in cui è ospitato il cluster Kubernetes.
  2. Rimuovi la voce pool di nodi dalla sezione nodePools. Ad esempio, nello snippet seguente, devi rimuovere i campi machineTypeName, name e nodeCount:

    nodePools:
    # Several lines of code are omitted here.
    - machineTypeName: n2-standard-2-gdc
      name: nodepool-1
      nodeCount: 3
    

    Assicurati di rimuovere tutti i campi per il pool di nodi che stai eliminando.

  3. Salva il file ed esci dall'editor.

Passaggi successivi