Acerca dos node pools
Um conjunto de nós
é um grupo de nós num cluster que têm todos a mesma configuração.
Normalmente, define node pools separados quando tem pods com requisitos de recursos diferentes.
Por exemplo, os pods apigee-cassandra
requerem armazenamento persistente, enquanto os outros pods híbridos do Apigee não.
Este tópico aborda como configurar pools de nós dedicados para uma instalação híbrida.
Usar os nodeSelectors predefinidos
A prática recomendada é configurar dois conjuntos de nós dedicados: um para os pods do Cassandra e outro para todos os outros pods de tempo de execução. Com as configurações de nodeSelector predefinidas, o instalador atribui os pods do Cassandra a um conjunto de nós com estado denominado apigee-data
e todos os outros pods a um conjunto de nós sem estado denominado apigee-runtime
. Só tem de criar pools de nós com estes nomes, e o Apigee hybrid processa os detalhes de agendamento de pods por si:
Nome predefinido do node pool | Descrição |
---|---|
apigee-data |
Um node pool com estado. |
apigee-runtime |
Um node pool sem estado. |
Segue-se a configuração nodeSelector
predefinida. A propriedade apigeeData
especifica um conjunto de nós para os pods do Cassandra. O elemento apigeeRuntime
especifica o conjunto de nós para todos os outros pods. Pode substituir estas definições predefinidas no ficheiro de substituições, conforme explicado mais adiante neste tópico:
nodeSelector: requiredForScheduling: true apigeeRuntime: key: "cloud.google.com/gke-nodepool" value: "apigee-runtime" apigeeData: key: "cloud.google.com/gke-nodepool" value: "apigee-data"
Para garantir que os seus pods são agendados nos nós corretos, crie dois conjuntos de nós com os nomes apigee-data
e apigee-runtime
.
Consulte:
nodeSelector.apigeeRuntime.key
.nodeSelector.apigeeRuntime.value
.nodeselector.apigeeData.key
.nodeSelector.apigeeData.value
.
A propriedade requiredForScheduling
A secção de configuração nodeSelector
tem uma propriedade denominada
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 estiver definido como false
, os pods subjacentes são agendados independentemente de os conjuntos de nós
estarem definidos com os nomes necessários. Isto significa que, se se esquecer de criar pools de nós ou se atribuir acidentalmente a um pool de nós um nome diferente de apigee-runtime
ou apigee-data
, a instalação do tempo de execução híbrido é bem-sucedida. O Kubernetes
decide onde executar os seus pods.
Se definir requiredForScheduling
como true
(a predefinição), a instalação falha, a menos que existam pools de nós que correspondam às chaves e aos valores nodeSelector
configurados.
Consulte nodeSelector.requiredForScheduling
.
Usar nomes de node pools personalizados
Se não quiser usar conjuntos de nós com os nomes predefinidos, pode criar conjuntos de nós com nomes personalizados e especificar esses nomes na secção nodeSelector
. Por exemplo, a seguinte configuração atribui os pods do Cassandra ao conjunto denominado my-cassandra-pool
e todos os outros pods ao conjunto denominado 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"
Substituir o node pool para componentes específicos no GKE
Também pode substituir as configurações do conjunto de nós ao nível do componente individual. Por exemplo, a seguinte configuração atribui o valor apigee-custom
ao componente runtime
do conjunto de nós:
runtime: nodeSelector: key: cloud.google.com/gke-nodepool value: apigee-custom
Pode especificar um conjunto de nós personalizado em qualquer um destes componentes:
istio
mart
synchronizer
runtime
cassandra
udca
logger
Configuração do node pool do GKE
No GKE, os conjuntos de nós têm de ter um nome exclusivo que faculta quando cria os conjuntos, e o GKE etiqueta automaticamente cada nó com o seguinte:
cloud.google.com/gke-nodepool=THE_NODE_POOL_NAME
Desde que crie node pools com os nomes apigee-data
e apigee-runtime
,
não é necessária nenhuma configuração adicional. Se quiser usar nomes de nós personalizados, consulte o artigo Usar nomes de node pools personalizados.
Etiquetar nós manualmente
Embora os conjuntos de nós etiquetem automaticamente os nós de trabalho por predefinição, pode etiquetar opcionalmente os nós de trabalho manualmente com os seguintes passos:
- Execute o seguinte comando para obter uma lista dos nós de trabalho no cluster:
kubectl -n APIGEE_NAMESPACE get nodes
Exemplo de resultado:
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
- Etiquete cada nó para diferenciar entre nós de tempo de execução e nós de dados.
Use este comando para etiquetar os nós:
kubectl label node NODE_NAME KEY=VALUE
Por exemplo:
$ 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
Substituir o node pool para componentes específicos no Anthos GKE
Também pode substituir as configurações do conjunto de nós ao nível do componente individual para uma instalação do Anthos GKE. Por exemplo, a seguinte configuração atribui o conjunto de nós com o valor apigee-custom
ao componente runtime
:
runtime: nodeSelector: key: apigee.com/apigee-nodepool value: apigee-custom
Pode especificar um conjunto de nós personalizado em qualquer um destes componentes:
istio
mart
synchronizer
runtime
cassandra
udca
logger