Configurazione dei pool di nodi dedicati

Informazioni sui node pool

Un node pool è un gruppo di nodi all'interno di un cluster che condividono la stessa configurazione. In genere, definisci pool di nodi separati quando hai pod con requisiti di risorse diversi. Ad esempio, i pod apigee-cassandra richiedono uno spazio di archiviazione permanente, mentre gli altri pod Apigee Hybrid no.

Questo argomento descrive come configurare i pool di nodi dedicati per un'installazione ibrida.

Utilizzo dei nodeSelector predefiniti

La best practice consiste nel configurare due pool di nodi dedicati: uno per i pod Cassandra e uno per tutti gli altri pod di runtime. Utilizzando le configurazioni predefinite di nodeSelector, il programma di installazione assegnerà i pod Cassandra a un pool di nodi stateful denominato apigee-data e tutti gli altri pod a un pool di nodi stateless denominato apigee-runtime. Tutto ciò che devi fare è creare pool di nodi con questi nomi e Apigee hybrid gestisce i dettagli di pianificazione dei pod per te:

Nome pool di nodi predefinito Descrizione
apigee-data Un pool di nodi stateful.
apigee-runtime Un pool di nodi stateless.

Di seguito è riportata la configurazione nodeSelector predefinita. La proprietà apigeeData specifica un pool di nodi per i pod Cassandra. apigeeRuntime specifica il pool di nodi per tutti gli altri pod. Puoi eseguire l'override di queste impostazioni predefinite nel file di override, come spiegato più avanti in questo argomento:

nodeSelector:
  requiredForScheduling: true
  apigeeRuntime:
    key: "cloud.google.com/gke-nodepool"
    value: "apigee-runtime"
  apigeeData:
    key: "cloud.google.com/gke-nodepool"
    value: "apigee-data"

Per assicurarti che i pod siano pianificati sui nodi corretti, crea due pool di nodi con i nomi apigee-data e apigee-runtime.

La proprietà requiredForScheduling

La sezione di configurazione nodeSelector ha una proprietà denominata requiredForScheduling:

nodeSelector:
  requiredForScheduling: false
  apigeeRuntime:
    key: "cloud.google.com/gke-nodepool"
    value: "apigee-runtime"
  apigeeData:
    key: "cloud.google.com/gke-nodepool"
    value: "apigee-data"

Se impostato su false, i pod sottostanti verranno pianificati indipendentemente dal fatto che i pool di nodi siano definiti con i nomi richiesti. Ciò significa che se dimentichi di creare node pool o se assegni accidentalmente a unpool di nodil un nome diverso da apigee-runtime o apigee-data, l'installazione di runtime ibrido andrà a buon fine. Kubernetes deciderà dove eseguire i pod.

Se imposti requiredForScheduling su true (il valore predefinito), l'installazione non andrà a buon fine a meno che non siano presenti pool di nodi che corrispondono alle chiavi e ai valori nodeSelector configurati.

Utilizzo di nomi di pool di nodi personalizzati

Se non vuoi utilizzare i pool di nodi con i nomi predefiniti, puoi creare pool di nodi con nomi personalizzati e specificarli nella sezione nodeSelector. Ad esempio, la seguente configurazione assegna i pod Cassandra al pool denominato my-cassandra-pool e tutti gli altri pod al pool denominato my-runtime-pool:

nodeSelector:
  requiredForScheduling: false
  apigeeRuntime:
    key: "cloud.google.com/gke-nodepool"
    value: "my-runtime-pool"
  apigeeData:
    key: "cloud.google.com/gke-nodepool"
    value: "my-cassandra-pool"

Eseguire l'override del pool di nodi per componenti specifici su GKE

Puoi anche sostituire le configurazioni del pool di nodi a livello di singolo componente. Ad esempio, la seguente configurazione assegna il pool di nodi con il valore apigee-custom al componente runtime:

runtime:
  nodeSelector:
    key: cloud.google.com/gke-nodepool
    value: apigee-custom

Puoi specificare un pool di nodi personalizzato su uno qualsiasi di questi componenti:

  • istio
  • mart
  • synchronizer
  • runtime
  • cassandra
  • udca
  • logger

Configurazione pool di nodi GKE e Google Distributed Cloud

Sulle piattaforme GKE e Google Distributed Cloud (GDC), i node pool devono avere un nome univoco che fornisci quando crei i pool e GKE/GDC etichetta automaticamente ogni nodo con quanto segue:

cloud.google.com/gke-nodepool=THE_NODE_POOL_NAME

Se crei pool di nodi denominati apigee-data e apigee-runtime, non è necessaria alcuna ulteriore configurazione. Se vuoi utilizzare nomi di nodi personalizzati, vedi Utilizzo di nomi di pool di nodi personalizzati.

Configurazione del node pool su altre piattaforme Kubernetes.

Per informazioni sull'etichettatura e la gestione dei node pool, consulta la documentazione della piattaforma Kubernetes.

Anche se i pool di nodi etichettano automaticamente i nodi worker per impostazione predefinita, puoi etichettarli manualmente con i seguenti passaggi:

  1. Esegui questo comando per ottenere un elenco dei nodi worker nel cluster:
    kubectl -n APIGEE_NAMESPACE get nodes

    Se utilizzi etichette del pool di nodi personalizzate, assicurati che ogni coppia chiave-valore sia univoca. Ad esempio:

    nodeSelector:
      requiredForScheduling: true
      apigeeRuntime:
        key: "pool1-key"
        value: "pool1-label"
      apigeeData:
        key: "pool2-key"
        value: "pool2-label"
    

    Eseguire l'override del pool di nodi per componenti specifici

    Puoi anche sostituire le configurazioni del pool di nodi a livello di singolo componente. Ad esempio, la seguente configurazione assegna il pool di nodi con il valore apigee-custom al componente runtime:

    runtime:
      nodeSelector:
        key: apigee.com/apigee-nodepool
        value: apigee-custom

    Puoi specificare un pool di nodi personalizzato su uno qualsiasi di questi componenti:

    • apigeeingressgateway
    • cassandra
    • logger
    • mart
    • metrics
    • runtime
    • synchronizer
    • udca