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 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 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. 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 del pool di nodi predefinito | Descrizione |
---|---|
apigee-data |
Un pool di nodi stateful. |
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 sostituire questi valori predefiniti
del 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à 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 pool di nodi
o se per errore assegni un nome a un pool di nodi diverso da apigee-runtime
oppure
apigee-data
, l'installazione del runtime ibrido verrà eseguita. 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 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 viene specificato al momento della creazione i 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 è necessaria alcuna configurazione aggiuntiva. Se vuoi utilizzare nomi di nodo personalizzati, consulta
Utilizzo di nomi di pool di nodi personalizzati.
Etichettatura manuale dei nodi
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. Esegui i seguenti passaggi una volta che il deployment di elaborazione è in esecuzione:
- Esegui questo 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
- 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 eseguire l'override delle configurazioni del pool di nodi
a livello di singolo componente per un'installazione
di Anthos GKE. Ad esempio,
assegnati dalla configurazione
sul 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