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

Esta página mostra-lhe 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 poupança 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 sobre as funções comuns e as tarefas de exemplo que referimos no conteúdo, consulte o artigo Funções e tarefas comuns do utilizador do GKE. Google Cloud

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 mantém-se após 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 gcloud components update para obter a versão mais recente.

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 da 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 da 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?