Configure o tráfego externo com os níveis de serviço de rede

Esta página mostra como controlar a forma como o tráfego externo atinge os seus serviços em clusters do Google Kubernetes Engine (GKE) através dos níveis de serviço de rede. Os níveis de serviço de rede permitem-lhe otimizar o tráfego de rede em função do desempenho (nível Premium) ou da redução de custos (nível Standard).

O nível Premium fornece tráfego na rede de backbone premium da Google para uma velocidade e uma fiabilidade superiores. Por outro lado, o nível Standard usa redes de fornecedores de serviços de Internet (ISPs) normais que oferecem uma solução mais rentável.

Esta página destina-se a arquitetos da nuvem e especialistas em redes que concebem e arquitetam a rede da respetiva organização. Para saber mais acerca das funções comuns e das tarefas de exemplo que referimos no Google Cloud conteúdo, consulte o artigo Funções e tarefas comuns de utilizadores do GKE.

Como funcionam os níveis de serviço de rede no GKE

Esta secção mostra como gerir os níveis de serviço de rede no GKE.

  • Defina um nível da rede ao nível do projeto: pode definir o nível da rede predefinido para o seu projeto para usar o nível padrão ou o nível premium. Google Cloud Todos os novos clusters são criados com a definição network-default, que herda a definição de nível do projeto. Esta definição persiste nas atualizações do cluster. Os node pools criados no cluster herdam o nível de rede da configuração ao nível do projeto.

  • Definir um nível de rede ao criar novos clusters: pode configurar o nível de rede quando cria um novo cluster, independentemente da definição de nível no seu Google Cloud projeto. Os novos conjuntos de nós usam o nível de rede do cluster, e esta configuração persiste mesmo depois de atualizar os conjuntos de nós.

  • Defina um nível da rede ao atualizar clusters: pode configurar o nível da rede quando atualiza um cluster existente. Os novos conjuntos de nós e os novos serviços LoadBalancer herdam a configuração do nível atualizada, enquanto os conjuntos de nós e os serviços existentes continuam a usar a configuração do nível de rede original. A configuração do nível atualizada persiste depois de atualizar o cluster.

  • Defina um nível de rede ao atualizar os serviços LoadBalancer: os serviços LoadBalancer herdam o nível de rede do cluster. No entanto, pode substituir esta definição e atualizar o nível da rede no manifesto do serviço.

Níveis de serviço de rede e balanceamento de carga

Por predefinição, os balanceadores de carga de rede de encaminhamento externo usam o nível Premium. Pode atualizar esta configuração para que o serviço LoadBalancer use o nível padrão.

Se usar equilibradores de carga de aplicações com o gateway, não pode configurar os níveis de serviço de rede. Os níveis de serviço de rede no Gateway são controlados pelo recurso GatewayClass. Para mais informações, consulte o artigo Endereço IP do gateway.

O GKE Ingress para balanceadores de carga de aplicações externos não suporta o nível padrão para o encaminhamento de tráfego.

Antes de começar

Antes de começar, certifique-se de que realizou as seguintes tarefas:

  • Ative a API Google Kubernetes Engine.
  • Ative a API Google Kubernetes Engine
  • Se quiser usar a CLI gcloud para esta tarefa, instale-a e, em seguida, inicialize-a. Se instalou anteriormente a CLI gcloud, execute o comando gcloud components update para obter a versão mais recente. As versões anteriores da CLI gcloud podem não suportar a execução dos comandos neste documento.

Restrições

Aplicam-se as seguintes restrições:

  • Só pode configurar as definições do nível da rede ao nível do projeto ou do cluster. Não pode configurar diretamente o nível de rede dos conjuntos de nós.
  • O nível Standard não é suportado para endereços IPv4 ou IPv6 de pilha dupla externos globais. Para mais informações sobre os tipos de endereços IP, consulte o artigo Endereços IP.

Crie um cluster com níveis de serviço de rede

Para criar um cluster e especificar o nível da rede, execute o seguinte comando:

 gcloud container clusters create CLUSTER_NAME \
     --network-tier=NETWORK_TIER \
     ...

Substitua os seguintes valores:

  • CLUSTER_NAME: o nome do cluster.
  • NETWORK_TIER: a definição do nível de rede. Use network-default para a mesma definição de nível que a do seu Google Cloud projeto, Standard para o nível padrão ou Premium para o nível premium.

Migre um cluster existente para um nível diferente

A atualização do nível de rede de um cluster não afeta o nível de rede dos recursos existentes. Os recursos existentes continuam a usar o endereço IP associado ao nível de rede antigo. Para evitar interrupções do serviço, siga estes passos quando migrar o cluster para um novo nível de rede:

  1. Atualize o cluster: para atualizar um cluster existente com um nível de rede, execute o seguinte comando:

    gcloud container clusters update CLUSTER_NAME \
        --network-tier=NETWORK_TIER \
        ...
    

    Substitua os seguintes valores:

    • CLUSTER_NAME: o nome do cluster.
    • NETWORK_TIER: a definição do nível de rede. Use network-default para a mesma definição de nível que a do seu Google Cloud projeto, Standard para o nível padrão ou Premium para o nível premium.
  2. Crie novos conjuntos de nós e serviços: para que os clientes externos usem os novos endereços IP associados ao novo nível de rede, tem de criar novos conjuntos de nós e novos serviços LoadBalancer. Os novos conjuntos de nós e os novos serviços LoadBalancer herdam a configuração do nível atualizada, enquanto os conjuntos de nós e os serviços existentes continuam a usar a configuração do nível de rede original.

  3. Atualize os registos de DNS: altere os registos de DNS para apontarem para os novos endereços IP dos novos serviços LoadBalancer.

  4. Aguarde a propagação do DNS: aguarde a expiração do tempo de vida (TTL) do DNS para garantir que os clientes são direcionados para os novos serviços e evitar a publicação de registos desatualizados.

Atualize um balanceador de carga externo com níveis de serviço de rede

Para balanceadores de carga de rede de encaminhamento externo, o GKE usa por predefinição o nível de rede configurado no cluster para a regra de encaminhamento externo e o endereço IP. Se o nível de rede do cluster estiver definido como network-default, o equilibrador de carga usa o nível Premium. Pode substituir esta definição configurando a anotação cloud.google.com/network-tier no manifesto do serviço. Por exemplo:

    ```yaml
    apiVersion: v1
    kind: Service
    metadata:
      name: store-v1-lb-svc
      annotations:
        cloud.google.com/l4-rbs: "enabled"
        cloud.google.com/network-tier: Standard
    spec:
      type: LoadBalancer
      selector:
        app: store
      ports:
      - name: tcp-port
        protocol: TCP
        port: 8080
        targetPort: 8080
    ```

Para mais informações acerca dos parâmetros usados para serviços LoadBalancer, consulte os parâmetros de serviço.

Endereço IP estático: quando cria um serviço com um endereço IP estático, o nível de rede do endereço IP estático tem de corresponder ao nível de rede do serviço LoadBalancer. Se existir uma incompatibilidade, é apresentada a seguinte mensagem de erro quando executa o comando kubectl describe service:

Error syncing load balancer: failed to ensure load balancer: requested ip "standard-service" is neither static nor assigned to the LB

O que se segue?