Como configurar pools de nós dedicados

Sobre pools de nós

Um pool de nós é um grupo de nós em um cluster, que têm a mesma configuração. Normalmente, você define pools de nós separados quando tem pods com requisitos de recursos diferentes. Por exemplo, os pods apigee-cassandra exigem armazenamento permanente, e os outros pods híbridos da Apigee não.

Neste tópico, você aprenderá a configurar pools de nós dedicados para uma instalação híbrida.

Como usar o nodeSelectors padrão

A prática recomendada é configurar dois pools de nós dedicados: um para os pods do Cassandra e outro para todos os outros pods de ambientes de execução. Usando as configurações nodeSelector padrão, o instalador atribuirá os pods do Cassandra a um pool de nós com estado chamado apigee-data e todos os outros pods para um pool de nós sem estado chamado apigee-runtime. Tudo o que você precisa fazer é criar pools de nós com esses nomes, e a Apigee híbrida gerenciará os detalhes da programação do pod para você:

Nome padrão do pool de nós Descrição
apigee-data Um pool de nós com estado.
apigee-runtime Um pool de nós sem estado.

Veja a seguir a configuração padrão de nodeSelector. A propriedade apigeeData especifica um pool de nós para os pods do Cassandra. O apigeeRuntime especifica o pool de nós de todos os outros pods. É possível modificar essas configurações padrão no seu arquivo de modificaçõ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"

Novamente, para garantir que seus pods sejam programados nos nós corretos, você só precisa criar dois pools de nós com os nomes apigee-data e apigee-runtime.

A propriedade requiredForScheduling

A seção de configuração nodeSelector tem uma propriedade chamada 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 definido como false (o padrão), os pods subjacentes serão programados independentemente dos pools de nós serem definidos com os nomes necessários. Isso significa que, se você esquecer de criar pools de nós ou acidentalmente nomear um pool de nós diferente de apigee-runtime ou apigee-data, a instalação do ambiente de execução híbrido será bem-sucedida. O Kubernetes decidirá onde executar os pods.

Se você definir requiredForScheduling como true, a instalação falhará, a menos que haja pools de nós que correspondam às chaves e aos valores nodeSelector configurados.

Como usar nomes de pool de nós personalizados

Se você não quiser usar pools de nós com os nomes padrão, crie pools de nós com nomes personalizados e especifique esses nomes na estrofe nodeSelector. Por exemplo, a configuração a seguir atribui os pods do Cassandra ao pool chamado my-cassandra-pool e todos os outros pods ao pool chamado 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"

Como modificar o pool de nós para componentes específicos no GKE

Também é possível substituir as configurações do pool de nós para cada componente. Por exemplo, a configuração a seguir atribui o pool de nós com o valor apigee-custom ao componente runtime:

runtime:
  nodeSelector:
    key: cloud.google.com/gke-nodepool
    value: apigee-custom

É possível especificar um pool de nós personalizado em qualquer um destes componentes:

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

Configuração do pool de nós do GKE

No GKE, os pools de nós precisam ter um nome exclusivo que você fornece ao criar os pools, e o GKE rotula automaticamente cada nó com os seguintes elementos:

cloud.google.com/gke-nodepool=THE_NODE_POOL_NAME

Desde que você crie pools de nós chamados apigee-data e apigee-runtime, nenhuma configuração adicional será necessária. Se você quiser usar nomes de nós personalizados, consulte Como usar nomes de pools de nós personalizados.

Configuração do pool de nós do Anthos

Atualmente, a Apigee híbrida só é suportada no Anthos 1.1.1. Esta versão do Anthos não é compatível com o recurso do pool de nós. Portanto, rotule manualmente os nós de trabalho, como explicado abaixo. Siga as etapas abaixo quando o cluster híbrido estiver em execução:

  1. Execute o seguinte comando para receber uma lista dos nós de trabalho no cluster:
    kubectl -n apigee get nodes

    Exemplo de saída:

    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. Rotule cada nó para diferenciar entre nós de ambiente de execução e de dados.

    Use este comando para rotular os nós:

    kubectl label node NODE_NAME KEY=VALUE

    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
    

Como modificar o pool de nós para componentes específicos no Anthos GKE

Também é possível modificar as configurações do pool de nós para cada componente para uma instalação do Anthos GKE. Por exemplo, a configuração a seguir atribui o pool de nós com o valor apigee-custom ao componente runtime:

runtime:
  nodeSelector:
    key: apigee.com/apigee-nodepool
    value: apigee-custom

É possível especificar um pool de nós personalizado em qualquer um destes componentes:

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