Este conteúdo foi traduzido por máquina para sua conveniência e a Huawei Cloud não pode garantir que o conteúdo foi traduzido com precisão. Para exibir o conteúdo original, use o link no canto superior direito para mudar para a página em inglês.
Atualizado em 2024-11-28 GMT+08:00

Visão geral

Por que precisamos de ingresses

Um Serviço é geralmente usado para encaminhar solicitações de acesso baseadas em TCP e UDP e fornecer balanceamento de carga de camada 4 para clusters. No entanto, em cenários reais, se houver um grande número de solicitações de acesso HTTP/HTTPS na camada de aplicações, o Serviço não poderá atender aos requisitos de encaminhamento. Portanto, o cluster do Kubernetes fornece um modo de acesso baseado em HTTP, ingress.

Um ingress é um recurso independente no cluster do Kubernetes e define regras para o encaminhamento de tráfego de acesso externo. Conforme mostrado em Figura 1, você pode personalizar regras de encaminhamento com base em nomes de domínio e URLs para implementar a distribuição refinada do tráfego de acesso.

Figura 1 Diagrama de ingress

A seguir, descrevem-se as definições relacionadas ao ingress:

  • Ingress object: um conjunto de regras de acesso que encaminham solicitações para serviços específicos com base em nomes de domínio ou URLs. Ele pode ser adicionado, excluído, modificado e consultado chamando APIs.
  • Ingress Controller: um executor para encaminhamento de solicitações. Ele monitora as mudanças de objetos de recursos, como ingresses, Serviços, pontos de extremidade, segredos (principalmente certificados e chaves TLS), nós e ConfigMaps em tempo real, analisa regras definidas por ingresses e encaminha solicitações para os Serviços de back-end correspondentes.

Ingress Controllers fornecidos por diferentes fornecedores são implementados de maneiras diferentes. Com base nos tipos de balanceadores de carga, Ingress Controllers são classificados em ELB Ingress Controller e Nginx Ingress Controller. Ambos são suportados no CCE. O ELB Ingress Controller encaminha o tráfego através do ELB. O Nginx Ingress Controller usa os modelos e imagens mantidos pela comunidade Kubernetes para encaminhar o tráfego através do componente do Nginx.

Comparação de recursos de ingress

Tabela 1 Comparação entre recursos de ingress

Recurso

ELB Ingress Controller

Nginx Ingress Controller

O&M

Sem O&M

Auto-instalação, atualização e manutenção

Desempenho

Um ingress suporta apenas um balanceador de carga.

Vários ingresses suportam um balanceador de carga.

Balanceadores de carga de nível empresarial são usados para fornecer alto desempenho e alta disponibilidade. O encaminhamento de serviço não é afetado em cenários de atualização e falha.

O desempenho varia dependendo da configuração de recursos dos pods.

O carregamento dinâmico é suportado.

  • Os processos devem ser recarregados para alterações de ponto de extremidade não back-end, o que causa perda de conexões persistentes.
  • Lua suporta atualização a quente de alterações de ponto de extremidade.
  • Processos devem ser recarregados para uma modificação de Lua.

Implementação de componentes

Implementado no nó mestre

Implementado em nós de trabalho e custos operacionais necessários para o componente de Nginx

Redirecionamento de rota

Não compatível

Compatível

Configuração SSL

Compatível

Compatível

Usar ingress como um proxy para serviços de back-end

Compatível

Compatível, que pode ser implementado através de backend-protocol: anotações de HTTPS.

O ingress do ELB é essencialmente diferente do ingress do Nginx de código aberto. Portanto, seus tipos de Serviço suportados são diferentes. Para mais detalhes, consulte Serviços suportados por ingresses.

O ELB Ingress Controller é implementado em um nó principal. Todas as políticas e comportamentos de encaminhamento são configurados no lado do ELB. Balanceadores de carga fora do cluster podem se conectar a nós no cluster somente por meio do endereço IP da VPC em cenários de rede não passantes. Portanto, o Ingress do ELB oferece suporte apenas aos Serviços NodePort. No entanto, no cenário de rede de passagem (cluster do CCE Turbo + balanceador de carga dedicado), o ELB pode encaminhar diretamente o tráfego para pods no cluster. Neste caso, o ingress só pode interconectar com Serviços ClusterIP.

Nginx Ingress Controller é executado em um cluster e é exposto como um serviço através do NodePort. O tráfego é encaminhado para outros Serviços no cluster por meio do Nginx-ingress. O comportamento de encaminhamento de tráfego e o objeto de encaminhamento estão no cluster. Portanto, ambos os serviços ClusterIP e NodePort são suportados.

Em conclusão, o ELB Ingress usa balanceadores de carga de nível empresarial para encaminhar o tráfego e oferece alto desempenho e estabilidade. O Nginx Ingress Controller é implementado em nós de cluster, que consomem recursos de cluster, mas têm melhor capacidade de configuração.

Princípio de funcionamento do ELB Ingress Controller

O ELB Ingress Controller desenvolvido pelo CCE implementa o acesso de rede de camada 7 para a Internet e intranet (na mesma VPC) com base no ELB e distribui o tráfego de acesso aos Serviços correspondentes usando URLs diferentes.

O ELB Ingress Controller é impllementado no nó principal e vinculado ao balanceador de carga na VPC onde o cluster reside. Diferentes nomes de domínio, portas e políticas de encaminhamento podem ser configurados para o mesmo balanceador de carga (com o mesmo endereço IP). Figura 2 mostra o princípio de funcionamento do ELB Ingress Controller.

  1. Um usuário cria um objeto de ingress e configura uma regra de acesso de tráfego no ingress, incluindo o balanceador de carga, o URL, o SSL e a porta de serviço de back-end.
  2. Quando Ingress Controller detecta que o objeto de ingress muda, reconfigura a rota do servidor do ouvinte e do back-end no lado do ELB de acordo com a regra de acesso de tráfego.
  3. Quando um usuário acessa uma carga de trabalho, o tráfego é encaminhado para a porta de serviço de back-end correspondente com base na política de encaminhamento configurada no ELB e, em seguida, encaminhado para cada carga de trabalho associada por meio do Serviço.
Figura 2 Princípio de funcionamento do ELB Ingress Controller

Princípio de funcionamento do Nginx Ingress Controller

Um Nginx ingress usa ELB como entrada de tráfego. O complemento nginx-ingress é implementado em um cluster para equilibrar o tráfego e controlar o acesso.

O complemento nginx-ingress no CCE é implementado usando o gráfico e a imagem da comunidade de código aberto. O CCE não mantém o complemento. Portanto, não é recomendável que o complemento nginx-ingress seja usado comercialmente.

Você pode visitar a comunidade de código aberto para obter mais informações.

O Nginx Ingress Controller é implementado em nós de trabalho por meio de pods, o que resultará em custos de O&M e sobrecargas de execução de componentes Nginx. Figura 3 mostra os princípios de funcionamento do Nginx Ingress Controller.

  1. Depois de atualizar os recursos de entrada, o Nginx Ingress Controller grava uma regra de encaminhamento definida nos recursos de entrada no arquivo de configuração nginx.conf do Nginx.
  2. O componente interno do Nginx recarrega o arquivo de configuração atualizado para modificar e atualizar a regra de encaminhamento do Nginx.
  3. Quando o tráfego acessa um cluster, o tráfego é primeiro encaminhado pelo balanceador de carga criado para o componente do Nginx no cluster. Em seguida, o componente de Nginx encaminha o tráfego para cada carga de trabalho com base na regra de encaminhamento.
Figura 3 Princípio de funcionamento do Nginx Ingress Controller

Serviços suportados por ingresses

Tabela 2 lista os serviços suportados pelos ingressos do ELB.
Tabela 2 Serviços suportados pelo ELB Ingresses

Tipo de cluster

Tipo do ELB

ClusterIP

NodePort

Cluster do CCE

Balanceador de carga compartilhado

Não compatível

Compatível

Balanceador de carga dedicado

Não suportado (Falha ao acessar os balanceadores de carga dedicados porque nenhuma ENI está vinculada ao pod associado do Serviço ClusterIP.)

Compatível

Cluster do CCE Turbo

Balanceador de carga compartilhado

Não compatível

Compatível

Balanceador de carga dedicado

Compatível

Não suportado (Falha ao acessar os balanceadores de carga dedicados porque um ENI foi vinculado ao pod associado do Serviço NodePort.)

Tabela 3 lista os serviços suportados pelo Nginx Ingresses.
Tabela 3 Serviços suportados pelo Nginx Ingresses

Tipo de cluster

Tipo do ELB

ClusterIP

NodePort

Cluster do CCE

Balanceador de carga compartilhado

Compatível

Compatível

Balanceador de carga dedicado

Compatível

Compatível

Cluster do CCE Turbo

Balanceador de carga compartilhado

Compatível

Compatível

Balanceador de carga dedicado

Compatível

Compatível