Configurazione dei pool di nodi dedicati

Informazioni sui node pool

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 uno spazio di archiviazione permanente, mentre gli altri pod ibride Apigee no.

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

Utilizzo dei valori nodeSelectors 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. 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. 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 delle sostituzioni, 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à chiamata 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 o meno definiti con i nomi richiesti. Ciò significa che se dimentichi di creare node pool 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 (il valore predefinito), 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 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"

Sostituzione del pool di nodi per componenti specifici su GKE

Puoi anche sostituire le configurazioni dei 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 di questi componenti:

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

Configurazione 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 nodi personalizzati, consulta Utilizzare nomi di pool di nodi personalizzati.

Etichettatura manuale dei nodi

Al momento Apigee Hybrid è 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_NAMESPACE get nodes

    Output di esempio:

    NAME                   STATUS   ROLES    AGE     VERSION
    apigee-092d639a-4hqt   Ready    <none>   7d      v1.14.6-gke.2
    apigee-092d639a-ffd0   Ready    <none>   7d      v1.14.6-gke.2
    apigee-109b55fc-5tjf   Ready    <none>   7d      v1.14.6-gke.2
    apigee-c2a9203a-8h27   Ready    <none>   7d      v1.14.6-gke.2
    apigee-c70aedae-t366   Ready    <none>   7d      v1.14.6-gke.2
    apigee-d349e89b-hv2b   Ready    <none>   7d      v1.14.6-gke.2
  2. Etichetta ogni nodo per distinguere i nodi di runtime dai 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

Sostituzione del pool di nodi per componenti specifici su Anthos GKE

Puoi anche sostituire le configurazioni del pool di nodi a livello di singolo componente per un'installazione 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