Rede da VPC
Definição do modelo
Comunicação pod a pod
- No mesmo nó: os pacotes são encaminhados diretamente através de IPvlan.
- Entre os nós: os pacotes são encaminhados para o gateway padrão por meio de rotas padrão e, em seguida, para o nó do par por meio das rotas da VPC.
Vantagens e desvantagens
Vantagens
- Nenhum encapsulamento de túnel é necessário, de modo que os problemas de rede são fáceis de localizar e o desempenho é alto.
- Na mesma VPC, a rede externa do cluster pode ser conectada diretamente ao endereço IP do contêiner.
Desvantagens
- O número de nós é limitado pela cota de rota da VPC.
- Cada nó é atribuído a um bloco CIDR de um tamanho fixo, o que leva a um desperdício de endereços IP no bloco CIDR do contêiner.
- Os pods não podem usar diretamente funcionalidades como EIPs e grupos de segurança.
Cenários aplicáveis
- Requisitos de alto desempenho: como nenhum encapsulamento de túnel é necessário, o modelo de rede da VPC oferece um desempenho próximo ao de uma rede da VPC quando comparado ao modelo de rede de túnel de contêiner. Portanto, o modelo de rede da VPC se aplica a cenários que possuem altos requisitos de desempenho, como computação de IA e computação de Big Data.
- Redes de pequena e média escala: devido à limitação nas tabelas de roteamento da VPC, é recomendável que o número de nós em um cluster seja menor ou igual a 1000.
Gerenciamento de endereços IP de contêiner
A rede da VPC aloca endereços IP de contêiner de acordo com as seguintes regras:
- O bloco CIDR de contêiner é alocado separadamente.
- Os endereços IP são alocados por nó. Um bloco CIDR com um tamanho fixo (que é configurável) é alocado para cada nó em um cluster a partir do bloco CIDR do contêiner.
- O bloco CIDR do contêiner aloca ciclicamente blocos CIDR para novos nós em sequência.
- Os pods agendados para um nó são endereços IP alocados ciclicamente de blocos CIDR alocados para o nó.
Número máximo de nós que podem ser criados no cluster usando a rede VPC = número de endereços IP no bloco CIDR do contêiner /número de endereços IP no bloco CIDR alocados ao nó pelo bloco CIDR do contêiner
Por exemplo, se o bloco CIDR do contêiner for 172.16.0.0/16, o número de endereços IP será 65536. A máscara do bloco CIDR de contêiner alocado para o nó é 25. Ou seja, o número de endereços IP de contêiner em cada nó é 128. Portanto, um máximo de 512 (65536/128) nós podem ser criados. 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.
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ó.
Suponha que um cluster contenha 200 nós e o modelo de rede seja a rede da VPC.
Nesse caso, o número de endereços IP disponíveis na sub-rede de nó selecionada deve ser maior que 200. Caso contrário, os nós não podem ser criados devido a endereços IP insuficientes.
O bloco CIDR do contêiner é 10.0.0.0/16 e o número de endereços IP disponíveis é 65536. Conforme descrito em Gerenciamento de endereços IP de contêiner, a rede da VPC é alocada um bloco CIDR com o tamanho fixo (usando a máscara para determinar o número máximo de endereços IP de contêiner alocados para cada nó). Por exemplo, se o limite superior for 128, o cluster suportará um máximo de 512 (65536/128) nós, incluindo os três nós principais.
Exemplo de acesso à rede da VPC
Crie um cluster usando o modelo de rede da VPC. O cluster contém um nó.
$ kubectl get node NAME STATUS ROLES AGE VERSION 192.168.0.99 Ready <none> 9d v1.17.17-r0-CCE21.6.1.B004-17.37.5
Verifique a tabela de roteamento da VPC. O endereço de destino 172.16.0.0/25 é o bloco CIDR de contêiner alocado para o nó, e o próximo salto é o nó correspondente. Quando o endereço IP do contêiner é acessado, a rota da VPC encaminha a solicitação de acesso para o nó de próximo salto. Isso indica que o modelo de rede da VPC usa rotas da VPC.
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' imagePullSecrets: - name: default-secret
Verifique o pod.
$ kubectl get pod -owide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES example-86b9779494-l8qrw 1/1 Running 0 14s 172.16.0.6 192.168.0.99 <none> <none> example-86b9779494-svs8t 1/1 Running 0 14s 172.16.0.7 192.168.0.99 <none> <none> example-86b9779494-x8kl5 1/1 Running 0 14s 172.16.0.5 192.168.0.99 <none> <none> example-86b9779494-zt627 1/1 Running 0 14s 172.16.0.8 192.168.0.99 <none> <none>
Nesse caso, se você acessar o endereço IP do pod de um ECS (fora do cluster) na mesma VPC, o acesso será bem-sucedido. Esse é um recurso da rede da VPC. Os pods podem ser acessados diretamente de qualquer nó localizado fora do cluster e na mesma VPC dos pods usando os endereços IP dos pods.
Os pods podem ser acessados a partir de nós ou pods no mesmo cluster. No exemplo a seguir, você pode acessar diretamente os pods no contêiner.
$ kubectl exec -it example-86b9779494-l8qrw -- curl 172.16.0.7 <!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>