A rede no Google Kubernetes Engine (GKE) abrange um amplo conjunto de conceitos, incluindo pods, serviços, DNS, balanceamento de carga, segurança e gerenciamento de endereços IP. Embora a documentação explique cada recurso em detalhes, pode ser difícil saber por onde começar ao enfrentar um problema real.
Este documento ajuda você a navegar pela documentação de rede do GKE, vinculando desafios comuns aos recursos e seções que os resolvem. Cada caso de uso apresenta um cenário, identifica o desafio e direciona você para a documentação relevante. Este documento é destinado a arquitetos de nuvem, desenvolvedores e equipes de operações que precisam entender e resolver desafios comuns de rede no GKE.
Se você já conhece os desafios comuns de rede e prefere se aprofundar diretamente nos detalhes técnicos, explore os seguintes recursos para criar seu conhecimento básico sobre a rede do GKE:
- Aprenda os princípios básicos da rede do GKE.
- Aprenda a arquitetura de rede do GKE.
- Glossário de termos de rede do GKE (para uma atualização rápida sobre termos desconhecidos).
Caso de uso: projetar a base de rede para o GKE
Neste caso de uso, você é um arquiteto de nuvem que precisa projetar uma base de rede escalonável, segura e confiável para uma nova plataforma do GKE.
Desafio: evitar o esgotamento de endereços IP
Cenário:a complexidade e o uso do aplicativo devem aumentar. Portanto, é necessário projetar uma rede que possa ser escalonada para lidar com o aumento do tráfego e oferecer suporte ao crescimento de pods, serviços e nós. Você também precisa planejar a alocação de endereços IP para evitar o esgotamento.
Solução:planeje seu esquema de endereçamento IP para considerar o número de nós, pods e serviços de que você vai precisar. Esse plano inclui a escolha de intervalos de endereços IP adequados para cada um, considerando a densidade de pods e evitando sobreposições com outras redes. Para mais informações, consulte Gerenciar a migração de endereços IP no GKE.
Desafio: aplicar a segurança de defesa em profundidade
Cenário:você precisa proteger os perímetros do cluster e aplicar regras de confiança zero, de pod para pod.
Solução: use políticas de firewall para perímetros de cluster. Para mais informações, consulte Controlar a comunicação entre pods e serviços usando políticas de rede.
Desafio: rotear o tráfego para diferentes tipos de aplicativos
Cenário:você precisa garantir que outros serviços e usuários possam acessar diferentes tipos de aplicativos, como back-ends particulares e aplicativos HTTP(S) públicos.
Solução:use balanceadores de carga internos para back-ends particulares. Para aplicativos HTTP(S) públicos, use a API Entrada ou Gateway. Para mais informações, consulte Sobre o balanceamento de carga no GKE.
Desafio: usar ferramentas de observabilidade para monitorar e solucionar problemas de carga de trabalho
Cenário:você precisa corrigir problemas com o tráfego de rede e entender e monitorar os fluxos de tráfego do GKE para diagnosticar problemas de maneira eficaz.
Solução: implemente ferramentas de observabilidade para monitorar e solucionar problemas de tráfego de rede. Para mais informações, consulte Observar o tráfego usando a observabilidade do GKE Dataplane V2.
Caso de uso: expor um novo microsserviço
Neste caso de uso, você é um desenvolvedor que implanta um novo microsserviço no GKE. Você precisa tornar o microsserviço acessível a outros serviços no cluster e, mais tarde, a clientes externos.
Desafio: fornecer um endpoint estável para comunicação entre pods
Cenário:seu aplicativo precisa que os pods se comuniquem com outros pods, mas os endereços IP dinâmicos usados pelos pods tornam essa comunicação não confiável.
Solução:crie um serviço do Kubernetes. Um serviço ClusterIP fornece um endereço IP virtual estável e um nome DNS, com balanceamento de carga entre pods. Para mais informações, consulte Entender os serviços do Kubernetes.
Desafio: expor o serviço para acesso externo
Cenário:o microsserviço precisa estar acessível na Internet para uma demonstração.
Solução:crie um serviço LoadBalancer. O GKE provisiona um balanceador de carga de rede de passagem externa regional com um endereço IP público. Para tráfego HTTP(S), considere usar Entrada ou o Gateway, que fornecem recursos da camada 7. Para mais informações, consulte Sobre os serviços LoadBalancer.
Desafio: atribuir um URL permanente e fácil de usar
Cenário:o serviço precisa de um nome de domínio estável para clientes.
Solução:reserve um endereço IP estático e configure o DNS para um domínio personalizado. Para mais informações, consulte Configurar nomes de domínio com endereços IP estáticos.
Desafio: gerenciar o roteamento de tráfego avançado
Cenário:à medida que seu aplicativo cresce, você precisa de um controle mais sofisticado sobre como o tráfego é roteado. Por exemplo, talvez seja necessário fazer o seguinte:
- Hospedar vários sites (como api.example.com e shop.example.com) em um único balanceador de carga para economizar custos.
- Roteie solicitações para diferentes serviços com base no caminho do URL (por exemplo,
enviando
/para a carga de trabalho de front-end e/api/v1para a carga de trabalho de back-end). - Proteja seu aplicativo com HTTPS gerenciando certificados TLS.
- Implante novos recursos com segurança em etapas usando versões canário, em que você envia uma pequena parte do tráfego para uma nova versão antes de uma implantação completa.
Solução:use a API Gateway. A implementação da API Gateway do GKE oferece uma maneira poderosa e padronizada de gerenciar esse tipo de tráfego norte-sul, com suporte a recursos avançados, como roteamento baseado em caminho, correspondência de cabeçalho e divisão de tráfego. Para mais informações, consulte Sobre a API Gateway.
Caso de uso: escalonar a descoberta de serviços para um aplicativo em crescimento
À medida que seu aplicativo baseado em microsserviços cresce em tráfego e complexidade, as consultas DNS entre serviços aumentam significativamente. Embora os desenvolvedores precisem entender como criar aplicativos resilientes nesse ambiente, as equipes de plataforma e operações geralmente são responsáveis por implementar soluções de rede escalonáveis.
Desafio: ativar a comunicação entre serviços
Cenário:os pods precisam de uma maneira confiável de localizar outros serviços.
Solução:o GKE fornece um serviço DNS no cluster (como kube-dns ou Cloud DNS) que resolve nomes DNS estáveis para serviços, permitindo uma comunicação confiável entre pods. Para mais informações, consulte Descoberta de serviços e DNS.
Desafio: melhorar a performance do DNS em escala
Cenário:o alto volume de consultas causa atrasos na pesquisa.
Solução:ative o NodeLocal DNSCache. Cada nó armazena em cache as consultas DNS localmente, reduzindo a latência. Para mais informações, consulte Configurar o NodeLocal DNSCache visão geral.
Desafio: fornecer descoberta de serviços na VPC
Cenário:as VMs do Compute Engine precisam acessar serviços dentro do cluster.
Solução:integre-se ao Cloud DNS para que os registros DNS do serviço sejam resolvidos na VPC. Para mais informações, acesse Usar o Cloud DNS para GKE.
Caso de uso: proteger um aplicativo de várias camadas
Neste caso de uso, você está em uma equipe de engenharia de plataforma que está implantando um aplicativo de três camadas (front-end, faturamento, banco de dados) e precisa aplicar a comunicação de confiança zero.
Desafio: aplicar regras de tráfego rigorosas
Cenário:apenas serviços específicos precisam se comunicar entre si.
Solução:ative a aplicação da política de rede e aplique políticas de default deny, depois defina regras de permissão explícitas (por exemplo, o front-end permite o tráfego para o faturamento, o faturamento permite o tráfego para o banco de dados). Para mais informações, consulte
Configurar políticas de rede para aplicativos.
Desafio: auditar e verificar políticas de rede
Cenário:a segurança exige prova de aplicação e visibilidade.
Solução:ative a geração de registros de políticas de rede para registrar conexões permitidas e negadas. Para mais informações, consulte Usar a geração de registros de políticas de rede.
Desafio: expor um serviço de maneira particular aos consumidores
Cenário:um serviço de back-end, como um banco de dados ou uma API, precisa estar acessível aos consumidores em outras redes VPC sem expô-lo à Internet pública ou lidar com complexidades de peering de VPC.
Solução:use o Private Service Connect para publicar o serviço. Os consumidores podem criar um endpoint do PSC na própria VPC para acessar seu serviço de maneira particular e segura. Para mais informações, consulte Expor serviços com o Private Service Connect.
Caso de uso: alcançar alta disponibilidade em vários clusters
Neste caso de uso, você é um SRE que executa cargas de trabalho para uma empresa de comércio eletrônico em vários clusters do GKE em diferentes regiões para melhorar a confiabilidade.
Desafio: ativar a comunicação entre clusters
Cenário:os serviços em um cluster precisam descobrir e chamar serviços em outro.
Solução:use os serviços de vários clusters (MCS) do GKE para criar um nome DNS global e rotear o tráfego automaticamente para back-ends íntegros. Para mais informações, consulte Serviços de vários clusters.
Desafio: garantir um failover resiliente
Cenário:se um serviço regional ficar indisponível, o tráfego precisará ser redirecionado automaticamente.
Solução:o MCS fornece descoberta de serviços com reconhecimento de integridade, permitindo que os clientes resolvam um único nome DNS para um back-end íntegro no cluster disponível mais próximo. Essa abordagem permite um failover resiliente. Para mais informações, consulte Serviços de vários clusters.
Caso de uso: criar um ambiente do GKE multitenant seguro e eficiente
Como parte de uma equipe de engenharia de plataforma, você fornece clusters do GKE para várias equipes de aplicativos. Você precisa centralizar o controle de rede, conservar endereços IP e aplicar segurança rigorosa.
Desafio: centralizar o controle de rede
Cenário:várias equipes de aplicativos precisam dos próprios clusters, mas a rede precisa ser gerenciada de maneira centralizada.
Solução:use a VPC compartilhada. Os recursos de rede residem em um projeto host, mas os clusters de aplicativos são executados em projetos de serviço. Para mais informações, consulte Configurar clusters com a VPC compartilhada.
Desafio: gerenciar com eficiência endereços IP limitados
Cenário:o espaço de endereço IP é limitado e precisa ser usado com eficiência.
Solução: ajuste o número máximo de pods por nó e, se necessário, use intervalos que não sejam da RFC 1918 para endereços IP de pods. Para mais informações, consulte Gerenciar a migração de endereços IP no GKE.
Desafio: usar um plano de dados moderno e seguro e provisionar clusters com o novo plano de dados
Cenários :
- A empresa exige alta performance e aplicação de políticas integrada para oferecer suporte a cargas de trabalho exigentes e uma postura de segurança de confiança zero. Por exemplo, talvez você esteja executando microsserviços em grande escala que são sensíveis à latência de rede ou precise aplicar limites de segurança rigorosos entre aplicativos em um cluster multitenant para atender aos requisitos de conformidade regulatória.
- Os clusters precisam ser configurados para usar um plano de dados de rede moderno para alta performance e segurança, e precisam ser implantados na estrutura de rede gerenciada centralmente da organização.
Solução:use o GKE Dataplane V2, que é baseado em eBPF e oferece alta performance e aplicação de políticas de rede integrada. Para mais informações, consulte GKE Dataplane V2.
Caso de uso: observar e solucionar problemas de tráfego
Como um SRE, você está investigando por que um serviço de finalização de compra não consegue se conectar a um serviço de pagamento.
Desafio: resolver problemas de conectividade
Cenário:os pacotes são descartados, mas a causa não está clara.
Solução:ative a observabilidade do GKE Dataplane V2. Métricas como hubble_drop_total confirmam que os pacotes são negados. Para mais informações, consulte
Solucionar problemas com o Hubble.
Desafio: identificar a causa raiz dos pacotes descartados
Cenário:depois de confirmar que os pacotes de rede estão sendo descartados (por exemplo, usando hubble_drop_total), identifique qual política de rede específica está bloqueando o tráfego entre serviços.
Solução:use a interface de linha de comando ou a UI do Hubble para rastrear fluxos. A interface do Hubble fornece uma representação visual do tráfego, destacando a política mal configurada exata que está negando a conexão. Essa visualização permite que a equipe identifique rapidamente a causa raiz do problema e corrija a política. Para mais informações, consulte Observar o tráfego usando a observabilidade do GKE Dataplane V2.
Caso de uso de ponta a ponta: implantar e escalonar um aplicativo de varejo seguro
Neste cenário de ponta a ponta, uma equipe de engenharia de plataforma cria uma plataforma padronizada do GKE para várias equipes de aplicativos. A equipe implanta e otimiza um aplicativo de varejo de três camadas (front-end, faturamento, banco de dados). Esse processo inclui proteger, escalonar, melhorar a performance para cargas de trabalho de machine learning e integrar dispositivos de segurança avançados.
O diagrama a seguir ilustra a arquitetura de ponta a ponta de um aplicativo de varejo seguro de várias camadas implantado no GKE. A arquitetura evolui em várias fases:
- Fase 1:crie uma configuração básica usando a VPC compartilhada e o GKE Dataplane V2.
- Fase 2: exponha o aplicativo usando a API Gateway e serviços de vários clusters para alta disponibilidade.
- Fase 3:acelere as tarefas de ML usando a gVNIC e a rede de camada 1.
- Fase 4:implante dispositivos de segurança avançados usando o suporte a várias redes.
Fase 1: criar a base da plataforma
Desafio:centralizar a rede para várias equipes de aplicativos e alocar endereços IP suficientes para lidar com o escalonamento.
Solução :
- Use VPC compartilhada para controle centralizado.
- Planeje o endereçamento IP para garantir a escalonabilidade.
- Ative GKE Dataplane V2 para um plano de dados seguro e de alta performance.
- Use Private Service Connect para se conectar com segurança ao plano de controle do GKE.
Fase 2: implantar e proteger o aplicativo
Desafio:garantir uma comunicação confiável entre serviços e aplicar segurança de confiança zero.
Solução :
- Crie serviços ClusterIP para endpoints internos estáveis.
- Aplique políticas de rede com uma linha de base de negação padrão e regras de permissão explícitas.
Fase 3: expor o aplicativo e escalonar para crescimento
Desafio:fornecer acesso externo e reduzir a latência de busca DNS à medida que o tráfego aumenta.
Solução :
- Exponha o front-end com Gateway API para gerenciamento avançado de tráfego.
- Atribua um endereço IP estático com DNS.
- Ative o NodeLocal DNSCache para pesquisas mais rápidas.
Fase 4: alcançar alta disponibilidade e solucionar problemas
Desafio:garantir o failover regional e depurar o tráfego descartado.
Solução :
- Use serviços de vários clusters para failover entre regiões.
- Ative a observabilidade do GKE Dataplane V2 com o Hubble para diagnosticar e corrigir políticas de rede mal configuradas.
Fase 5: acelerar cargas de trabalho de machine learning
Desafio:eliminar gargalos de rede para treinamento de modelo baseados em GPU.
Solução :
- Ative a gVNIC para maior largura de banda.
- Configure rede de camada 1 em nós críticos para capacidade máxima.
Fase 6: implantar dispositivos de segurança avançados
Desafio:implante um firewall de terceiros e SDI com gerenciamento separado e tráfego de plano de dados com latência ultrabaixa.
Solução :
- Ative o suporte a várias redes para anexar várias interfaces a pods.
- Configure a rede de modo de dispositivo (DPDK).
A seguir
- Aprenda os princípios básicos da rede do GKE
- Aprenda a arquitetura de rede do GKE
- Glossário de termos de rede do GKE