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: 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.

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.

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 conjunto de nós do GKE e do Google Distributed Cloud

Nas plataformas GKE e Google Distributed Cloud (GDC), os conjuntos de nós têm de ter um nome exclusivo que fornece quando cria os conjuntos, e o GKE/GDC 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 noutras plataformas Kubernetes.

Consulte a documentação da plataforma Kubernetes para obter informações sobre a etiquetagem e a gestão de conjuntos de nós.

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:

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

    Se estiver a usar etiquetas de node pool personalizadas, certifique-se de que cada par de chave-valor é único. Por exemplo:

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

    Substituir o node pool para componentes específicos

    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 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:

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