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

Rede de túneis de contêineres

Modelo de rede de túnel de contêiner

A rede de túnel de contêiner é construída em, mas independente da rede de nó através do encapsulamento de túnel. Este modelo de rede usa VXLAN para encapsular pacotes Ethernet em pacotes UDP e transmiti-los em túneis. Open vSwitch serve como o comutador virtual de back-end. Embora com alguns custos de desempenho, o encapsulamento de pacotes e a transmissão de túnel permitem maior interoperabilidade e compatibilidade com recursos avançados (como isolamento baseado em políticas de rede) para os cenários mais comuns.
Figura 1 Rede de túneis de contêineres

Comunicação pod a pod

  • No mesmo nó: os pacotes são encaminhados diretamente através da ponte OVS no nó.
  • Entre os nós: os pacotes são encapsulados na ponte OVS e encaminhados para o nó de par.

Vantagens e desvantagens

Vantagens

  • A rede de contêineres é desacoplada da rede de nó e não é limitada pelas cotas de VPC e pela velocidade de resposta (como o número de rotas da VPC, o número de ENIs elásticos e a velocidade de criação).
  • O isolamento de rede é suportado. Para mais detalhes, consulte Políticas de rede.
  • Limites de largura de banda são suportados.
  • Redes em grande escala são suportadas.

Desvantagens

  • Alta sobrecarga de encapsulamento, rede complexa e baixo desempenho
  • Os pods não podem usar diretamente funcionalidades como EIPs e grupos de segurança.
  • As redes externas não podem ser conectadas diretamente aos endereços IP do contêiner.

Cenários aplicáveis

  • Baixos requisitos de desempenho: como a rede de túnel de contêiner requer encapsulamento de túnel VXLAN adicional, ela tem cerca de 5% a 15% de perda de desempenho quando comparada com os outros dois modelos de rede de contêiner. Portanto, a rede de túnel de contêiner aplica-se aos cenários que não têm requisitos de alto desempenho, como aplicações da Web e serviços de middle-end e back-end com um pequeno número de solicitações de acesso.
  • Rede em grande escala: diferentemente da rede da VPC que é limitada pela cota de rota da VPC, a rede de túnel de contêiner não tem nenhuma restrição na infraestrutura. Além disso, a rede de túnel de contêiner controla o domínio de transmissão até o nível do nó. A rede de túnel de contêiner suporta um máximo de 2000 nós.

Gerenciamento de endereços IP de contêiner

A rede de túnel de contêiner aloca endereços IP de contêiner de acordo com as seguintes regras:

  • O bloco CIDR do contêiner é alocado separadamente, o que é irrelevante para o bloco CIDR do nó.
  • Os endereços IP são alocados por nó. Um ou mais blocos CIDR com um tamanho fixo (16 por padrão) são alocados para cada nó em um cluster a partir do bloco CIDR do contêiner.
  • Quando os endereços IP em um nó são usados, você pode solicitar um novo bloco CIDR.
  • O bloco CIDR do contêiner aloca ciclicamente blocos CIDR para novos nós ou nós existentes em sequência.
  • Os pods agendados para um nó são endereços IP alocados ciclicamente de um ou mais blocos CIDR alocados para o nó.
Figura 2 Alocação de endereço IP da rede de túnel de contêiner

Número máximo de nós que podem ser criados no cluster usando a rede de túnel de contêiner = número de endereços IP no bloco CIDR do contêiner / tamanho do bloco CIDR de IP alocado ao nó pelo bloco CIDR do contêiner por vez (16 por padrão)

Por exemplo, se o bloco CIDR do contêiner for 172.16.0.0/16, o número de endereços IP será 65536. Se 16 endereços IP são atribuídos a um nó de cada vez, um máximo de 4096 (65536/16) nós podem ser criados no cluster. Este é um caso extremo. Se 4096 nós forem criados, um máximo de 16 pods podem ser criados para cada nó, pois apenas 16 blocos CIDR IP são alocados para cada nó. Além disso, o número de nós que podem ser criados em um cluster também depende da rede do nó e da escala do cluster.

Figura 3 Selecionar um modelo de rede (ao criar o cluster)

Recomendação para planejamento de blocos CIDR

Conforme descrito em Estrutura de rede do cluster, os endereços de rede em um cluster podem ser divididos em três partes: rede de nó, rede de contêineres e rede de serviço. Ao planejar endereços de rede, considere os seguintes aspectos:

  • Os três blocos CIDR não podem se sobrepor. Caso contrário, ocorre um conflito. Todas as sub-redes (incluindo aquelas criadas a partir do bloco CIDR secundário) na VPC em que o cluster reside não podem entrar em conflito com o contêiner e os blocos CIDR de serviço.
  • Certifique-se de que cada bloco CIDR tenha endereços IP suficientes.
    • Os endereços IP no bloco CIDR do nó devem corresponder à escala do cluster. Caso contrário, os nós não podem ser criados devido a endereços IP insuficientes.
    • Os endereços IP no bloco CIDR do contêiner devem corresponder à escala de serviço. Caso contrário, os pods não podem ser criados devido a endereços IP insuficientes. O número de pods que podem ser criados em cada nó também depende de outras configurações de parâmetros. Para mais detalhes, consulte Número máximo de pods que podem ser criados em um nó.

Exemplo de acesso à rede de túnel de contêiner

Crie um cluster que use o modelo de rede de túnel de contêiner. Crie uma Implementação no cluster.

kind: Deployment
apiVersion: apps/v1
metadata:
  name: example
  namespace: default
spec:
  replicas: 4
  selector:
    matchLabels:
      app: example
  template:
    metadata:
      labels:
        app: example
    spec:
      containers:
        - name: container-0
          image: 'nginx:perl'
          resources:
            limits:
              cpu: 250m
              memory: 512Mi
            requests:
              cpu: 250m
              memory: 512Mi
      imagePullSecrets:
        - name: default-secret

Visualize o pod criado.

$ kubectl get pod -owide
NAME                       READY   STATUS    RESTARTS   AGE     IP          NODE           NOMINATED NODE   READINESS GATES
example-5bdc5699b7-5rvq4   1/1     Running   0          3m28s   10.0.0.20   192.168.0.42   <none>           <none>
example-5bdc5699b7-984j9   1/1     Running   0          3m28s   10.0.0.21   192.168.0.42   <none>           <none>
example-5bdc5699b7-lfxkm   1/1     Running   0          3m28s   10.0.0.22   192.168.0.42   <none>           <none>
example-5bdc5699b7-wjcmg   1/1     Running   0          3m28s   10.0.0.52   192.168.0.64   <none>           <none>

Nesse caso, o endereço IP do pod não pode ser acessado diretamente fora do cluster na mesma VPC. Essa é uma característica da rede de túnel de contêineres.

No entanto, o pod pode ser acessado a partir de um nó no cluster ou no pod. Como mostrado na figura a seguir, o pod pode ser acessado diretamente do contêiner.

$ kubectl exec -it example-5bdc5699b7-5rvq4 -- curl 10.0.0.21
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>