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

Para garantir que seus pods sejam programados nos nós corretos, crie 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, 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 (o padrão), 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 e do Google Distributed Cloud

Nas plataformas GKE e Google Distributed Cloud (GDC), os pools de nós precisam ter um nome exclusivo que você fornece ao criar os pools, e o GKE/GDC 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 em outras plataformas do Kubernetes.

Consulte a documentação da sua plataforma Kubernetes para informações sobre como rotular e gerenciar pools de nós.

Embora os pools de nós rotulem automaticamente os nós de trabalho por padrão, é possível rotular os nós de trabalho manualmente seguindo estas etapas:

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

    Se você estiver usando rótulos personalizados de pool de nós, verifique se cada par de chave-valor é exclusivo. Exemplo:

    nodeSelector:
      requiredForScheduling: true
      apigeeRuntime:
        key: "pool1-key"
        value: "pool1-label"
      apigeeData:
        key: "pool2-key"
        value: "pool2-label"
    

    Como substituir o pool de nós para componentes específicos

    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: apigee.com/apigee-nodepool
        value: apigee-custom

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

    • apigeeingressgateway
    • cassandra
    • logger
    • mart
    • metrics
    • runtime
    • synchronizer
    • udca