As redes no Google Kubernetes Engine (GKE) abrangem um vasto conjunto de conceitos, incluindo pods, serviços, DNS, equilíbrio de carga, segurança e gestão de endereços IP. Embora a documentação explique cada funcionalidade em detalhe, pode ser difícil saber por onde começar quando se depara com um problema do mundo real.
Este documento ajuda a navegar na documentação de rede do GKE associando desafios comuns às funcionalidades e secções que os resolvem. Cada exemplo de utilização apresenta um cenário, identifica o desafio e indica a documentação relevante. Este documento destina-se a arquitetos da nuvem, programadores e equipas de operações que têm de compreender e resolver desafios de rede comuns no GKE.
Se já conhece os desafios comuns de trabalho em rede e prefere aprofundar os detalhes técnicos, explore os seguintes recursos para criar os seus conhecimentos básicos sobre o trabalho em rede do GKE:
- Aprenda os princípios básicos das redes do GKE.
- Saiba mais sobre a arquitetura de rede do GKE.
- Glossário de termos de rede do GKE (para relembrar rapidamente termos desconhecidos).
Exemplo de utilização: conceba a base de rede para o GKE
Neste exemplo de utilização, é um arquiteto de nuvem que precisa de criar uma base de rede escalável, segura e fiável para uma nova plataforma do GKE.
Desafio: impedir o esgotamento de endereços IP
Cenário: prevê-se que a complexidade e a utilização da sua aplicação aumentem, pelo que tem de criar uma rede que possa ser dimensionada para processar o aumento do tráfego e suportar o crescimento de pods, serviços e nós. Também tem de planear a atribuição de endereços IP para evitar o esgotamento
Solução: planeie o seu esquema de endereçamento IP para ter em conta o número de nós, pods e serviços de que vai precisar. Este plano inclui a escolha de intervalos de endereços IP adequados para cada um, tendo em conta a densidade de pods e evitando sobreposições com outras redes. Para mais informações, consulte o artigo Faça a gestão da migração de endereços IP no GKE.
Desafio: aplique a segurança de defesa em profundidade
Cenário: precisa de proteger os perímetros do cluster e aplicar a confiança zero, bem como regras de pod para pod.
Solução: use políticas de firewall para perímetros de cluster. Para mais informações, consulte o artigo Controle a comunicação entre Pods e Serviços através de políticas de rede.
Desafio: encaminhar tráfego para diferentes tipos de aplicações
Cenário: tem de se certificar de que outros serviços e utilizadores podem aceder a diferentes tipos de aplicações, como backends privados e aplicações HTTP(S) públicas.
Solução: use equilibradores de carga internos para back-ends privados. Para aplicações HTTP(S) públicas, use a API Ingress ou Gateway. Para mais informações, consulte o artigo Acerca do balanceamento de carga no GKE.
Desafio: use ferramentas de observabilidade para monitorizar e resolver problemas de cargas de trabalho
Cenário: tem de corrigir problemas com o tráfego de rede e compreender e monitorizar os fluxos de tráfego do GKE para diagnosticar problemas de forma eficaz.
Solução: implemente ferramentas de observabilidade para monitorizar e resolver problemas de tráfego de rede. Para mais informações, consulte o artigo Observe o seu tráfego através da observabilidade do GKE Dataplane V2.
Exemplo de utilização: exponha um novo microsserviço
Neste exemplo de utilização, é um programador que implementa um novo microsserviço no GKE. Tem de tornar o microsserviço acessível a outros serviços no cluster e, mais tarde, a clientes externos.
Desafio: fornecer um ponto final estável para a comunicação entre pods
Cenário: a sua aplicação precisa de Pods para comunicar com outros Pods, mas os endereços IP dinâmicos usados pelos Pods tornam esta comunicação não fiável.
Solução: crie um serviço do Kubernetes. Um serviço ClusterIP fornece um endereço IP virtual e um nome DNS estáveis, com equilíbrio de carga entre os pods. Para mais informações, consulte o artigo Compreenda os serviços Kubernetes.
Desafio: exponha o serviço para acesso externo
Cenário: o microsserviço tem de estar acessível a partir da Internet para uma demonstração.
Solução: crie um serviço LoadBalancer. O GKE aprovisiona um balanceador de carga de rede de encaminhamento regional externo com um endereço IP público. Para tráfego HTTP(S), considere usar a entrada ou o gateway, que oferecem funcionalidades da camada 7. Para mais informações, consulte o artigo Acerca dos serviços LoadBalancer.
Desafio: atribuir um URL permanente e intuitivo
Cenário: o serviço precisa de um nome de domínio estável para os clientes.
Solução: reserve um endereço IP estático e configure o DNS para um domínio personalizado. Para mais informações, consulte o artigo Configure nomes de domínios com endereços IP estáticos.
Desafio: faça a gestão do encaminhamento de tráfego avançado
Cenário: à medida que a sua aplicação cresce, precisa de um controlo mais sofisticado sobre como o tráfego é encaminhado. Por exemplo, pode ter de fazer o seguinte:
- Alojamento de vários Websites (como api.example.com e shop.example.com) num único equilibrador de carga para poupar custos.
- Encaminhar pedidos para diferentes serviços com base no caminho do URL (por exemplo, enviar
/para a carga de trabalho de front-end e/api/v1para a carga de trabalho de back-end). - Proteja a sua aplicação com HTTPS através da gestão de certificados TLS.
- Implemente novas funcionalidades em segurança por fases através de lançamentos canary, em que envia uma pequena parte do tráfego para uma nova versão antes de uma implementação completa.
Solução: use a API Gateway. A implementação da API Gateway do GKE oferece uma forma poderosa e padronizada de gerir este tipo de tráfego norte-sul, suportando funcionalidades avançadas como o encaminhamento baseado em caminhos, a correspondência de cabeçalhos e a divisão de tráfego. Para mais informações, consulte o artigo Acerca da API Gateway.
Exemplo de utilização: escalar a descoberta de serviços para uma aplicação em crescimento
À medida que a sua aplicação baseada em microsserviços aumenta em termos de tráfego e complexidade, as consultas de DNS entre os serviços aumentam significativamente. Embora os programadores tenham de compreender como criar aplicações resilientes neste ambiente, as equipas de plataforma e operações são frequentemente responsáveis pela implementação de soluções de rede escaláveis.
Desafio: ativar a comunicação entre serviços
Cenário: os pods precisam de uma forma fiável de localizar outros serviços.
Solução: o GKE fornece um serviço DNS no cluster (como o
kube-dns ou o Cloud DNS) que resolve nomes DNS estáveis para serviços,
permitindo uma comunicação fiável entre pods. Para mais informações, consulte o artigo Deteção de serviços e DNS.
Desafio: melhorar o desempenho do DNS em grande escala
Cenário: o elevado volume de consultas causa atrasos na pesquisa.
Solução: ative a DNSCache local do nó. Cada nó armazena em cache as consultas de DNS localmente, o que reduz a latência. Para mais informações, consulte o artigo Configurar a vista geral da NodeLocal DNSCache.
Desafio: fornecer deteção de serviços na VPC
Cenário: as VMs do Compute Engine precisam de aceder a serviços no cluster.
Solução: faça a integração com o Cloud DNS para que os registos DNS do serviço sejam resolvidos na VPC. Para mais informações, consulte o artigo Use o Cloud DNS para o GKE.
Exemplo de utilização: proteger uma aplicação de vários níveis
Neste exemplo de utilização, faz parte de uma equipa de engenharia de plataformas que está a implementar uma aplicação de três camadas (interface, faturação e base de dados) e tem de aplicar a comunicação de confiança zero.
Desafio: aplique regras de trânsito rigorosas
Cenário: apenas serviços específicos devem comunicar entre si.
Solução: ative a aplicação de políticas de rede e aplique default deny
políticas. Em seguida, defina regras de permissão explícitas (por exemplo, o front-end permite tráfego
para a faturação, e a faturação permite tráfego para a base de dados). Para mais informações, consulte o artigo
Configure políticas de rede para aplicações.
Desafio: audite e valide as políticas de rede
Cenário: a segurança requer um comprovativo de aplicação e visibilidade.
Solução: ative o registo da política de rede para registar as ligações permitidas e recusadas. Para mais informações, consulte o artigo Use o registo da política de rede.
Desafio: exponha um serviço de forma privada aos consumidores
Cenário: um serviço de back-end, como uma base de dados ou uma API, tem de estar acessível aos consumidores noutras redes VPC sem o expor à Internet pública nem lidar com as complexidades da interligação de VPCs.
Solução: use o Private Service Connect para publicar o serviço. Em seguida, os consumidores podem criar um ponto final do PSC na respetiva VPC para aceder ao seu serviço de forma privada e segura. Para mais informações, consulte o artigo Exponha serviços com o Private Service Connect.
Exemplo de utilização: alcançar uma elevada disponibilidade em vários clusters
Neste exemplo de utilização, é um EFS 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 fiabilidade.
Desafio: ative a comunicação entre clusters
Cenário: os serviços num cluster têm de descobrir e chamar serviços noutro.
Solução: use os serviços de vários clusters (MCS) do GKE para criar um nome DNS global e encaminhar automaticamente o tráfego para back-ends em bom estado. Para mais informações, consulte os serviços multicluster.
Desafio: garantir uma comutação por falha resiliente
Cenário: se um serviço regional ficar indisponível, o tráfego tem de ser reencaminhado automaticamente.
Solução: o MCS oferece deteção de serviços com reconhecimento do estado de funcionamento, o que permite aos clientes resolver um único nome DNS para um back-end em bom estado de funcionamento no cluster disponível mais próximo. Esta abordagem permite uma comutação por falha resiliente. Para mais informações, consulte o artigo Serviços de vários clusters.
Exemplo de utilização: crie um ambiente GKE multi-inquilino seguro e eficiente
Como parte de uma equipa de engenharia de plataformas, fornece clusters do GKE a várias equipas de aplicações. Precisa de centralizar o controlo da rede, conservar os endereços IP e aplicar uma segurança rigorosa.
Desafio: centralizar o controlo da rede
Cenário: várias equipas de apps precisam dos seus próprios clusters, mas a rede tem de ser gerida centralmente.
Solução: use a VPC partilhada. Os recursos de rede residem num projeto anfitrião, mas os clusters de apps são executados em projetos de serviço. Para mais informações, consulte o artigo Configure clusters with Shared VPC.
Desafio: gerir de forma eficiente endereços IP limitados
Cenário: o espaço de endereços IP é limitado e tem de ser usado de forma eficiente.
Solução: ajuste o número máximo de agrupamentos por nó e, se necessário, use intervalos não RFC 1918 para endereços IP de agrupamentos. Para mais informações, consulte o artigo Faça a gestão da migração de endereços IP no GKE.
Desafio: use um plano de dados moderno e seguro, e aprovisione clusters com o novo plano de dados
Cenários:
- A empresa requer um elevado desempenho e a aplicação de políticas incorporada para suportar cargas de trabalho exigentes e uma postura de segurança de confiança zero. Por exemplo, pode estar a executar microsserviços de grande escala sensíveis à latência da rede ou pode ter de aplicar limites de segurança rigorosos entre aplicações num cluster multi-inquilino para cumprir os requisitos de conformidade regulamentar.
- Os clusters têm de ser configurados para usar um plano de dados de rede moderno para um elevado desempenho e segurança, e têm de ser implementados na estrutura de rede gerida centralmente da organização.
Solução: use o GKE Dataplane V2, que se baseia no eBPF e oferece um elevado desempenho e aplicação de políticas de rede incorporada. Para mais informações, consulte o artigo GKE Dataplane V2.
Exemplo de utilização: observe e resolva problemas de tráfego
Enquanto SRE, está a investigar o motivo pelo qual um serviço de pagamento não consegue estabelecer ligação a um serviço de pagamento.
Desafio: resolva problemas de conetividade
Cenário: os pacotes são ignorados, mas a causa não é clara.
Solução: ative a observabilidade do GKE Dataplane V2. As métricas, como
hubble_drop_total, confirmam que os pacotes são recusados. Para mais informações, consulte o artigo
Resolva problemas com o Hubble.
Desafio: identifique a causa principal dos pacotes ignorados
Cenário: depois de confirmar que os pacotes de rede estão a ser ignorados (por exemplo, usando hubble_drop_total), identifique que política de rede específica está a bloquear o tráfego entre serviços.
Solução: use a interface de linhas de comando ou a IU do Hubble para rastrear fluxos. A IU do Hubble oferece uma representação visual do tráfego, realçando a política configurada incorretamente que está a negar a ligação. Esta visualização permite à equipa identificar rapidamente a causa principal do problema e corrigir a política. Para mais informações, consulte o artigo Monitorize o seu tráfego com a observabilidade do GKE Dataplane V2.
Exemplo de utilização completo: implemente e dimensione uma aplicação de retalho segura
Neste cenário ponto a ponto, uma equipa de engenharia de plataformas cria uma plataforma GKE padronizada para várias equipas de aplicações. A equipa implementa e otimiza uma aplicação de retalho de três camadas (interface, faturação e base de dados). Este processo inclui proteger, dimensionar, melhorar o desempenho das cargas de trabalho de aprendizagem automática e integrar dispositivos de segurança avançados.
O diagrama seguinte ilustra a arquitetura ponto a ponto de uma aplicação de retalho segura de vários níveis implementada no GKE. A arquitetura evolui através de várias fases:
- Fase 1: crie uma configuração fundamental através da VPC partilhada e do GKE Dataplane V2.
- Fase 2: exponha a aplicação através da API Gateway e dos serviços de vários clusters para garantir a elevada disponibilidade.
- Fase 3: acelere as tarefas de ML usando a gVNIC e a rede de nível 1.
- Fase 4: implemente dispositivos de segurança avançados através do suporte de várias redes.
Fase 1: crie a base da plataforma
Desafio: centralizar a rede para várias equipas de aplicações e atribuir endereços IP suficientes para processar o dimensionamento.
Solução:
- Use a VPC partilhada para um controlo centralizado.
- Planeie o endereçamento IP para garantir a escalabilidade.
- Ative o GKE Dataplane V2 para um plano de dados seguro e de alto desempenho.
- Use o Private Service Connect para estabelecer ligação em segurança ao plano de controlo do GKE.
Fase 2: implemente e proteja a aplicação
Desafio: garantir uma comunicação fiável entre serviços e aplicar a segurança de confiança zero.
Solução:
- Crie serviços ClusterIP para pontos finais internos estáveis.
- Aplique políticas de rede com uma base de recusa predefinida e regras de permissão explícitas.
Fase 3: exponha a aplicação e dimensione-a para o crescimento
Desafio: fornecer acesso externo e reduzir a latência de procura de DNS à medida que o tráfego aumenta.
Solução:
- Exponha o front-end com a API Gateway para uma gestão de tráfego avançada.
- Atribua um endereço IP estático com DNS.
- Ative a opção NodeLocal DNSCache para pesquisas mais rápidas.
Fase 4: alcance uma elevada disponibilidade e resolva problemas
Desafio: garantir a comutação por falha regional e depurar o tráfego rejeitado.
Solução:
- Use serviços em vários clusters para a ativação pós-falha entre regiões.
- Ative a observabilidade do plano de dados V2 do GKE com o Hubble para diagnosticar e corrigir políticas de rede configuradas incorretamente.
Fase 5: acelere as cargas de trabalho de aprendizagem automática
Desafio: eliminar gargalos de rede para a preparação de modelos baseados em GPU.
Solução:
- Ative o gVNIC para uma largura de banda mais elevada.
- Configure a rede de nível 1 em nós críticos para um débito máximo.
Fase 6: implemente dispositivos de segurança avançados
Desafio: implemente uma firewall e um IDS de terceiros com gestão e tráfego do plano de dados separados com uma latência ultrabaixa.
Solução:
- Ative o suporte de várias redes para anexar várias interfaces a pods.
- Configure a rede no modo de dispositivo (DPDK).