Gestire i pool di nodi

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

  • Aggiungi un nuovo pool di nodi: aggiungi nuovi pool di nodi man mano che aumenta la domanda per i carichi di lavoro del cluster.

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

  • Ridimensiona un pool di nodi: aumenta o riduci manualmente i pool di nodi per adattarli alle fluttuazioni del traffico dei carichi di lavoro.

  • Elimina un pool di nodi: rimuovi i pool di nodi se la domanda per i carichi di lavoro del cluster diminuisce o se vuoi eliminare i tipi di macchine che non sono più prudenti per le operazioni dei container.

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

Questo documento è destinato agli sviluppatori di applicazioni del gruppo di operatori di applicazioni e agli amministratori IT del gruppo di amministratori della piattaforma responsabili della gestione dei cluster Kubernetes all'interno della propria organizzazione. Per saperne di più, consulta Pubblico della documentazione 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 pool di nodi in un cluster Kubernetes. I ruoli richiesti 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 Configurazione dei cluster Kubernetes.

Ruoli del cluster condiviso

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

Ruoli del cluster standard

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

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

  • Sviluppatore del cluster (cluster-developer): crea, elimina, modifica o visualizza un cluster standard. Questo ruolo è necessario per visualizzare i dettagli del 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 pool di nodi

Per aggiungere un pool di nodi a un cluster Kubernetes esistente, segui questi passaggi:

Console

  1. Nel selettore dei progetti, seleziona il progetto o l'organizzazione.

    I cluster standard hanno ambito a livello di progetto e i cluster condivisi hanno 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 macchine più adatta ai requisiti del tuo carico di lavoro. 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 zonale 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. Visualizza i tipi di macchine disponibili per la configurazione.
    • 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: le incompatibilità 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 carichi di lavoro 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 pool di nodi

Per visualizzare i pool di nodi esistenti in un cluster Kubernetes, segui questi passaggi:

Console

  1. Nel selettore dei progetti, seleziona il progetto o l'organizzazione.

    I cluster standard hanno ambito a livello di progetto e i cluster condivisi hanno 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 pool di nodi in esecuzione nel cluster. Da questa pagina puoi gestire i pool di nodi del cluster.

API

  • Visualizza i pool di nodi 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 pool di nodi

Puoi ridimensionare manualmente i pool di nodi in un cluster Kubernetes aumentando o riducendo le dimensioni del pool. Quando riduci le dimensioni di un pool di nodi, non puoi selezionare un nodo specifico da rimuovere.

Per scalare un pool di nodi in un cluster esistente, segui questi passaggi:

Console

  1. Nel selettore dei progetti, seleziona il progetto o l'organizzazione.

    I cluster standard hanno ambito a livello di progetto e i cluster condivisi hanno 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 esiste il cluster che intendi 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 pool di nodi che vuoi ridimensionare. Viene visualizzato il prompt Modifica pool di nodi.

  7. Aggiorna il campo Numero di nodi in modo che rifletta la nuova quantità di nodi richiesta nel pool di nodi. Puoi aumentare o diminuire il numero di nodi in base ai requisiti del carico di lavoro.

  8. Fai clic su Salva.

  9. Torna alla scheda Pool di nodi 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 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 zonale 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 il ridimensionamento dei nodi sia stato completato 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. Potrebbero essere necessari alcuni minuti prima che il pool di nodi venga scalato in base alle tue specifiche.

Elimina un pool di nodi

L'eliminazione di un pool di nodi comporta l'eliminazione dei nodi e delle relative route. Questi nodi espellono e riprogrammano tutti i pod in esecuzione. Se i pod hanno selettori di nodi specifici, potrebbero rimanere in uno stato non pianificabile se nessun altro nodo del cluster soddisfa i criteri.

Prima di eliminare un pool di nodi, assicurati di avere almeno tre nodi worker per garantire che il cluster disponga di spazio di calcolo sufficiente per essere eseguito in modo efficace.

Per eliminare un pool di nodi, segui questi passaggi:

Console

  1. Nel selettore dei progetti, seleziona il progetto o l'organizzazione.

    I cluster standard hanno ambito a livello di progetto e i cluster condivisi hanno 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 zonale in cui è ospitato il cluster Kubernetes.
  2. Rimuovi la voce del pool di nodi dalla sezione nodePools. Ad esempio, nel seguente snippet 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