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, si definiscono node pool separati quando si hanno 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 predefinito del pool di nodi 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 node pool 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: 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 vengano pianificati sui nodi corretti, devi solo creare 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 (valore predefinito), 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, 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

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

Configurazione del pool di nodi Anthos

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 che il cluster ibrido è operativo, segui questi passaggi:

  1. Esegui questo 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    <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 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
    

Eseguire l'override 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 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 qualsiasi di questi componenti:

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