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 condividono la stessa configurazione. In genere, i pool di nodi vengono definiti quando hai pod con requisiti di risorse diversi. Ad esempio, i pod apigee-cassandra richiedono l'archiviazione permanente, a differenza degli altri pod ibridi.

Questo argomento illustra 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 di Cassandra a un pool di nodi stateful denominato apigee-data e a tutti gli altri pod a un pool di nodi stateless denominato apigee-runtime. Non devi fare altro che creare pool di nodi con questi nomi e Apigee ibrido 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 sostituire 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"

Anche in questo caso, per assicurarti che i tuoi pod siano pianificati sui nodi corretti, è sufficiente 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 programmati indipendentemente dal fatto che i pool di nodi siano definiti o meno con i nomi richiesti. Ciò significa che se ti dimentichi di creare pool di nodi o se assegni accidentalmente un pool di nodi diverso da apigee-runtime o apigee-data, l'installazione del runtime ibrido riuscirà. Kubernetes deciderà dove eseguire i tuoi pod.

Se imposti requiredForScheduling su true, l'installazione non riuscirà a meno che non ci siano pool di nodi che corrispondono alle chiavi e ai valori nodeSelector configurati.

Utilizzo dei nomi dei pool di nodi personalizzati

Se non vuoi utilizzare i pool di nodi con nomi predefiniti, puoi creare pool di nodi con nomi personalizzati e specificarli nella riga 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"

Override 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 per uno qualsiasi dei seguenti 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 al momento della creazione dei pool, 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 sono richieste ulteriori configurazioni. Se vuoi utilizzare i nomi dei nodi personalizzati, consulta Utilizzo dei nomi dei pool di nodi personalizzati.

Configurazione del pool di nodi Anthos

Al momento, la soluzione ibrida di Apigee è supportata 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. Esegui i passaggi seguenti quando il cluster ibrido è in esecuzione:

  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. Assegna etichette a 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
    

Override del pool di nodi per componenti specifici su Anthos GKE

Puoi anche eseguire l'override delle configurazioni dei 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 per uno qualsiasi dei seguenti componenti:

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