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

Comparação entre iptables e IPVS

kube-proxy é um componente importante de um cluster do Kubernetes. Ele é usado para balanceamento de carga e encaminhamento de dados entre um serviço e seus pods de back-end.

O CCE suporta os modos de encaminhamento iptables e IPVS.

  • O IPVS permite maior taxa de transferência e encaminhamento mais rápido. Esse modo se aplica a cenários em que a escala de cluster é grande ou o número de serviços é grande.
  • iptables é o modo kube-proxy tradicional. Esse modo se aplica ao cenário em que o número de serviços é pequeno ou há um grande número de conexões simultâneas curtas no cliente. Quando há mais de 1.000 Serviços no cluster, pode ocorrer atraso de rede.

Restrições

  • Em um cluster usando o modo de proxy IPVS, se o ingress e o Serviço usarem o mesmo balanceador de carga do ELB, o ingress não pode ser acessado dos nós e contêineres no cluster porque o kube-proxy monta o endereço do Serviço LoadBalancer na ponte ipvs-0. Essa ponte intercepta o tráfego do balanceador de carga conectado ao ingress. Use balanceadores de carga do ELB diferentes para o ingress e o Serviço.
  • No modo iptables, o ClusterIP não pode ser pingado. No modo IPVS, o ClusterIP pode ser pingado.

iptables

iptables é uma função do kernel do Linux para processar e filtrar um grande número de pacotes de dados. Ele permite sequências flexíveis de regras para ser anexado a vários ganchos no pipeline de processamento de pacotes. Quando o iptables é usado, o kube-proxy implementa a NAT e o balanceamento de carga no gancho de pré-roteamento da NAT.

kube-proxy é um algoritmo O(n), no qual n aumenta com a escala de cluster. A escala de cluster refere-se ao número de serviços e pods de back-end.

IPVS

O IP Virtual Server (IPVS) é construído sobre o Netfilter e equilibra as cargas da camada de transporte como parte do kernel do Linux. O IPVS pode direcionar solicitações de serviços baseados em TCP ou UDP para os servidores reais e fazer com que os serviços dos servidores reais apareçam como serviços virtuais em um único endereço IP.

No modo IPVS, o kube-proxy usa o balanceamento de carga do IPVS em vez do iptables. O IPVS foi projetado para equilibrar cargas para um grande número de Serviços. Ele possui um conjunto de APIs otimizadas e usa algoritmos de pesquisa otimizados em vez de simplesmente procurar regras em uma lista.

A complexidade do processo de conexão do kube-proxy baseado em IPVS é O(1). Na maioria dos casos, a eficiência de processamento da conexão é irrelevante para a escala do cluster.

O IPVS envolve vários algoritmos de balanceamento de carga, como round-robin, menor atraso esperado, menor quantidade de conexões e vários métodos de hash. No entanto, o iptables tem apenas um algoritmo para seleção aleatória.

Comparado com o iptables, o IPVS apresenta as seguintes vantagens:

  1. Oferece melhor escalabilidade e desempenho para grandes clusters.
  2. Suporta algoritmos de balanceamento de carga melhores que o iptables.
  3. Suporta funções, incluindo verificação de integridade do servidor e tentativas de conexão.