Configurazione dei pool di nodi dedicati

Informazioni sui pool di nodi

Un pool di nodi è un gruppo di nodi all'interno di un cluster che hanno tutti 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 l'archiviazione permanente, mentre al contrario degli altri pod ibridi di Apigee.

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

Utilizzo di nodeSelectors predefiniti

La best practice è configurare due pool di nodi dedicati: uno per Cassandra e uno per tutti gli altri pod del runtime. Utilizzo del valore predefinito configurazioni di nodeSelector, il programma di installazione assegnerà i pod Cassandra a un pool di nodi stateful denominato apigee-data e gli altri pod a un pool di nodi stateless denominato apigee-runtime. Devi solo creare pool di nodi con questi nomi e Apigee hybrid gestirà per te i dettagli di pianificazione dei pod:

Nome pool di nodi predefinito Descrizione
apigee-data Un pool di nodi con stato.
apigee-runtime Un pool di nodi senza stato.

Di seguito è riportata la configurazione predefinita di nodeSelector. apigeeData specifica un pool di nodi per i pod Cassandra. apigeeRuntime specifica il pool di nodi per tutti gli altri pod. Puoi sostituire questi valori predefiniti del file di override, come spiegato più avanti in questo argomento:

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

Ancora una volta, per assicurarti che i pod siano pianificati sui nodi corretti, devi solo creare due pool di nodi con i nomi apigee-data e apigee-runtime.

La proprietà requiredForScheduling

La sezione della configurazione di 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 (il valore predefinito), i pod sottostanti verranno pianificati indipendentemente dal fatto che i pool di nodi siano o meno definiti con i nomi richiesti. Ciò significa che se dimentichi di creare pool di nodi o se per errore assegni a un pool di nodi un nome diverso da apigee-runtime o apigee-data, l'installazione del runtime ibrida andrà a buon fine. Kubernetes deciderà dove eseguire i pod.

Se imposti requiredForScheduling su true, l'installazione non andrà a buon fine a meno che non siano presenti pool di nodi corrispondenti 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 crearne di personalizzati e specificarli nella stanza nodeSelector. Ad esempio, la seguente configurazione assegna Pod Cassandra nel pool denominato my-cassandra-pool e a tutti gli altri pod nel 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"

Sostituzione 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 del pool di nodi GKE

In GKE, i pool di nodi devono avere un nome univoco che fornisci quando li crei. GKE 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 configurazione aggiuntiva. Se vuoi utilizzare nomi di nodo personalizzati, consulta Utilizzo di nomi di pool di nodi personalizzati.

Configurazione del pool di nodi Anthos

Apigee hybrid è attualmente supportato solo su Anthos 1.1.1. Questa versione di Anthos non supporta la funzionalità del pool di nodi; pertanto, devi etichettare manualmente i nodi worker come spiegato di seguito. Una volta avviato il cluster ibrida, segui questi passaggi:

  1. Esegui il seguente comando per ottenere un elenco dei nodi worker nel cluster:
    kubectl -n apigee get nodes

    Output di esempio:

    NAME                   STATUS   ROLES    AGE     VERSION
    apigee-092d639a-4hqt   Ready       7d      v1.14.6-gke.2
    apigee-092d639a-ffd0   Ready       7d      v1.14.6-gke.2
    apigee-109b55fc-5tjf   Ready       7d      v1.14.6-gke.2
    apigee-c2a9203a-8h27   Ready       7d      v1.14.6-gke.2
    apigee-c70aedae-t366   Ready       7d      v1.14.6-gke.2
    apigee-d349e89b-hv2b   Ready       7d      v1.14.6-gke.2
    
  2. Etichetta ciascun nodo per distinguere tra nodi di runtime e nodi di dati.

    Utilizza questo comando per etichettare i nodi:

    kubectl label node node_name key=value

    Ad esempio:

    $ kubectl label node apigee-092d639a-4hqt apigee.com/apigee-nodepool=apigee-runtime
    $ kubectl label node apigee-092d639a-ffd0 apigee.com/apigee-nodepool=apigee-runtime
    $ kubectl label node apigee-109b55fc-5tjf apigee.com/apigee-nodepool=apigee-runtime
    $ kubectl label node apigee-c2a9203a-8h27 apigee.com/apigee-nodepool=apigee-data
    $ kubectl label node apigee-c70aedae-t366 apigee.com/apigee-nodepool=apigee-data
    $ kubectl label node apigee-d349e89b-hv2b apigee.com/apigee-nodepool=apigee-data
    

Override del pool di nodi per componenti specifici su Anthos GKE

Puoi anche eseguire l'override delle configurazioni del pool di nodi a livello di singolo componente per un'installazione di Anthos GKE. 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 di questi componenti:

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