Gestire i pool di nodi

Un node pool è un gruppo di nodi all'interno di un cluster Kubernetes che condividono la stessa configurazione. I node pool utilizzano una specifica NodePool. Ogni nodo nel pool ha un'etichetta nodo Kubernetes il cui valore è il nome delpool di nodil. Per impostazione predefinita, tutti i nuovi pool di nodi eseguono la stessa versione di Kubernetes del piano di controllo.

Quando crei un cluster Kubernetes, il numero e il tipo di nodi che specifichi creano il primo pool di nodi del cluster. Puoi aggiungere al cluster ulteriori pool di nodi di dimensioni e tipi diversi. Tutti i nodi in un dato pool di nodi sono identici tra loro.

I pool di nodi personalizzati sono utili per la pianificazione di pod che richiedono più risorse rispetto ad altri, ad esempio più memoria o spazio su disco locale. Puoi utilizzare i taint dei nodi se hai bisogno di un maggiore controllo sulla pianificazione dei pod.

Puoi creare ed eliminare i pool di nodi singolarmente senza influire sull'intero cluster. Non puoi configurare un singolo nodo in un pool di nodi. Qualsiasi modifica alla configurazione influisce su tutti i nodi del pool di nodi.

Puoi ridimensionare i node pool in un cluster aumentando o diminuendo le dimensioni del pool. La riduzione delle dimensioni di un pool di nodi è un processo automatizzato in cui diminuisci le dimensioni del pool e il sistema GDC svuota ed espelle automaticamente un nodo arbitrario. Non puoi selezionare un nodo specifico da rimuovere quando riduci le dimensioni di un pool di nodi.

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.

Aggiungi un pool di nodi

Quando crei un cluster Kubernetes dalla console GDC, puoi personalizzare il pool di nodi predefinito e creare pool di nodi aggiuntivi prima dell'inizializzazione della creazione del cluster. Se devi aggiungere un pool di nodi a un cluster Kubernetes esistente, completa i seguenti passaggi:

Console

  1. Nel menu di navigazione, seleziona Kubernetes Engine > Cluster.
  2. Fai clic sul cluster nell'elenco dei cluster. Viene visualizzata la pagina Dettagli cluster.
  3. Seleziona Node pool > Aggiungi node pool.
  4. Assegna un nome al pool di nodi. Non puoi modificare il nome dopo aver creato il pool di nodi.
  5. Specifica il numero di nodi worker da creare nel pool di nodi.
  6. Seleziona la classe di macchine più adatta ai requisiti del tuo workload. Le classi di macchine vengono visualizzate nelle seguenti impostazioni:
    • Tipo di macchina
    • vCPU
    • Memoria
  7. 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 platform \
        --kubeconfig MANAGEMENT_API_SERVER
    

    Sostituisci quanto segue:

    • KUBERNETES_CLUSTER_NAME: il nome del cluster.
    • 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. Aggiungi una nuova voce nella sezione nodePools:

    nodePools:
    ...
    - 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 delpool di nodil. Visualizza i tipi di macchina disponibili per ciò che è disponibile per la configurazione.
    • NODE_POOL_NAME: il nome del pool di nodi.
    • NUMBER_OF_WORKER_NODES: il numero di nodi di lavoro di cui eseguire il provisioning nelpool di nodil.
    • TAINTS: le incompatibilità da applicare ai nodi di questo pool di nodi. Questo è un campo facoltativo.
    • LABELS: le etichette da applicare ai nodi di questopool di nodil. 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 è partizionata se questo campo non è impostato. Per i profili GPU multi-istanza (MIG) disponibili, vedi 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 menu di navigazione, seleziona Kubernetes Engine > Cluster.
  2. Fai clic sul cluster nell'elenco dei cluster. Viene visualizzata la pagina Dettagli cluster.
  3. 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 node pool di un cluster Kubernetes specifico:

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

    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
      }
    ]
    

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 tutti i pod in esecuzione. Se i pod hanno selettori di nodi specifici, potrebbero rimanere in una condizione non pianificabile se nessun altro nodo del cluster soddisfa i criteri.

Assicurati di avere almeno tre nodi di lavoro prima di eliminare un pool di nodi per assicurarti che il cluster disponga di spazio di calcolo sufficiente per funzionare in modo efficace.

Per eliminare un pool di nodi:

Console

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

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

  3. Seleziona Pool di nodi.

  4. 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 platform \
          --kubeconfig MANAGEMENT_API_SERVER
    

    Sostituisci quanto segue:

    • KUBERNETES_CLUSTER_NAME: il nome del cluster.
    • 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. Rimuovi la voce pool di nodi dalla sezione nodePools. Ad esempio, nello snippet seguente devi rimuovere i campi machineTypeName, name e nodeCount:

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