Configurar node pools dedicados

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: false
  apigeeRuntime:
    key: "cloud.google.com/gke-nodepool"
    value: "apigee-runtime"
  apigeeData:
    key: "cloud.google.com/gke-nodepool"
    value: "apigee-data"

Mais uma vez, para garantir que os seus pods são agendados nos nós corretos, basta criar dois conjuntos de nós com os nomes apigee-data e apigee-runtime.

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 (a predefinição), 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 instalação falha, a menos que existam pools de nós que correspondam às chaves e aos valores nodeSelector configurados.

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.

Configuração do node pool do Anthos

Atualmente, o Apigee hybrid só é suportado no Anthos 1.1.1. Esta versão do Anthos não é compatível com a funcionalidade do conjunto de nós. Por isso, tem de etiquetar manualmente os nós de trabalho, conforme explicado abaixo. Execute os seguintes passos assim que o cluster híbrido estiver em funcionamento:

  1. Execute o seguinte comando para obter uma lista dos nós de trabalho no cluster:
    kubectl -n apigee 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
  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