Nesta página, mostramos como controlar o acesso do tráfego externo aos seus serviços em clusters do Google Kubernetes Engine (GKE) usando os níveis de serviço de rede. Com os níveis de serviço de rede, é possível otimizar o tráfego da rede para desempenho (nível Premium) ou economia de custos (nível Standard).
O nível Premium oferece tráfego na rede de backbone premium do Google para velocidade e confiabilidade superiores. Em contraste, o nível Standard usa redes comuns de provedores de acesso à Internet (ISP, na sigla em inglês), que oferecem uma solução mais econômica.
Esta página é destinada a arquitetos de nuvem e especialistas em redes que projetam e arquitetam a rede da organização. Para saber mais sobre papéis comuns e exemplos de tarefas que mencionamos no conteúdo do Google Cloud , consulte Tarefas e funções de usuário comuns do GKE.
Como os níveis de serviço de rede funcionam no GKE
Nesta seção, mostramos como gerenciar os níveis de serviço de rede no GKE.
Definir um nível de rede no nível do projeto: é possível definir o nível de rede padrão para seu projeto Google Cloud usar o nível padrão ou premium. Todos os novos clusters são criados com a configuração
network-default
, que herda a configuração de nível do projeto. Essa configuração persiste durante os upgrades do cluster. Os pools de nós criados no cluster herdam o nível de rede da configuração no nível do projeto.Defina um nível de rede ao criar novos clusters: é possível configurar o nível de rede ao criar um novo cluster, independente da configuração de nível no projeto Google Cloud . Os novos pools de nós usam o nível de rede do cluster, e essa configuração persiste mesmo depois de fazer upgrade dos pools de nós.
Definir um nível de rede ao atualizar clusters: é possível configurar o nível de rede ao atualizar um cluster existente. Os novos pools de nós e os novos serviços LoadBalancer herdam a configuração de nível atualizada, enquanto os pools de nós e os serviços atuais continuam usando a configuração de nível de rede original. A configuração de nível atualizada persiste depois que você faz upgrade do cluster.
Defina um nível de rede ao atualizar serviços LoadBalancer: os serviços LoadBalancer herdam o nível de rede do cluster. No entanto, é possível substituir essa configuração e atualizar o nível de rede no manifesto do serviço.
Níveis de serviço de rede e balanceamento de carga
Por padrão, os balanceadores de carga de rede de passagem externa usam o nível Premium. É possível atualizar essa configuração para que o serviço LoadBalancer use o nível Standard.
Se você usar balanceadores de carga de aplicativo com o Gateway, não será possível 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 Endereço IP do gateway.
O Ingress do GKE para balanceadores de carga de aplicativo externos não é compatível com o nível Standard para o roteamento de tráfego.
Antes de começar
Antes de começar, verifique se você realizou as tarefas a seguir:
- Ativar a API Google Kubernetes Engine. Ativar a API Google Kubernetes Engine
- Se você quiser usar a CLI do Google Cloud para essa tarefa,
instale e inicialize a
gcloud CLI. Se você instalou a gcloud CLI anteriormente, instale a versão
mais recente executando
gcloud components update
.
Restrições
As seguintes restrições são aplicadas:
- É possível configurar as configurações de nível de rede apenas no nível do projeto ou do cluster. Não é possível configurar o nível de rede dos pools de nós diretamente.
- O nível Standard não é compatível com endereços IPv4 ou IPv6 de pilha dupla externos globais. Para mais informações sobre os tipos de endereços IP, consulte Endereços IP.
Criar um cluster com níveis de serviço de rede
Para criar um cluster e especificar o nível de 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 configuração do nível de rede. Usenetwork-default
para a mesma configuração de nível do seu projeto Google Cloud ,Standard
para o nível Standard ouPremium
para o nível Premium.
Migrar um cluster atual 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 atuais. Os recursos atuais continuam usando o endereço IP associado ao nível de rede antigo. Para evitar interrupções no serviço, siga estas etapas ao migrar o cluster para um novo nível de rede:
Atualize o cluster: para atualizar um cluster atual 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 configuração do nível de rede. Usenetwork-default
para a mesma configuração de nível do seu projeto Google Cloud ,Standard
para o nível Standard ouPremium
para o nível Premium.
Crie novos pools de nós e serviços: para que clientes externos usem os novos endereços IP associados à nova camada de rede, crie novos pools de nós e serviços LoadBalancer. Novos pools de nós e serviços LoadBalancer herdam a configuração de nível atualizada, enquanto os pools de nós e serviços atuais continuam usando a configuração original do nível de rede.
Atualize os registros DNS: mude os registros DNS para apontar para os novos endereços IP dos novos serviços LoadBalancer.
Aguarde a propagação do DNS: espere o vencimento do Time to Live (TTL) do DNS para garantir que os clientes sejam direcionados aos novos serviços e evitar o fornecimento de registros desatualizados.
Atualizar um balanceador de carga externo com níveis de serviço de rede
Para balanceadores de carga de rede de passagem externa, o GKE usa por padrão o nível de rede
configurado no cluster para a regra de encaminhamento externa e o endereço IP. Se o nível de rede do cluster estiver definido como network-default
, o balanceador de carga usará o nível Premium. Para modificar essa configuração, configure a anotação cloud.google.com/network-tier
no manifesto do serviço. 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 sobre os parâmetros usados nos serviços LoadBalancer, consulte Parâmetros de serviço.
Endereço IP estático: quando você cria um serviço com um endereço IP estático, o nível de rede do endereço IP estático precisa corresponder ao nível de rede do serviço LoadBalancer. Se houver uma incompatibilidade, a seguinte mensagem de erro vai aparecer quando você executar 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
A seguir
- Leia a visão geral dos Níveis de serviço de rede.
- Saiba como criar um balanceador de carga externo baseado em serviço de back-end.