Rede do Kubernetes em um dispositivo GPU do Azure Stack Edge Pro
APLICA-SE A: Azure Stack Edge Pro - GPUAzure Stack Edge Pro 2Azure Stack Edge Pro RAzure Stack Edge Mini R
No dispositivo GPU do Azure Stack Edge Pro, um cluster do Kubernetes é criado quando uma função de computação é configurada. Depois que o cluster do Kubernetes é criado, os aplicativos em contêineres podem ser implantados no cluster do Kubernetes em Pods. A rede é usada de maneiras distintas para os Pods no seu cluster do Kubernetes.
Este artigo descreve a rede em um cluster do Kubernetes, no geral e especificamente, no contexto do dispositivo GPU do Azure Stack Edge Pro.
Requisitos de rede
Aqui está um exemplo de um aplicativo típico de duas camadas implantado no cluster do Kubernetes.
- O aplicativo tem um front-end do servidor Web e um aplicativo de banco de dados no back-end.
- Um IP é atribuído para cada pod, mas esses IPs podem ser alterados na reinicialização e no failover do pod.
- Cada aplicativo é composto por vários pods e deve haver balanceamento de carga do tráfego em todas as réplicas do pod.
O cenário acima resulta nos seguintes requisitos de rede:
- É necessário que o aplicativo externo seja acessado por um usuário de aplicativo fora do cluster do Kubernetes por meio de um nome ou endereço IP.
- Os aplicativos no cluster do Kubernetes, por exemplo, front-end e os pods de back-end devem, aqui, ser capazes de se comunicar entre si.
Para resolver as necessidades acima, apresentamos um serviço do Kubernetes.
Serviços de rede
Há dois tipos de serviço com do Kubernetes:
Serviço de IP de cluster – considere esse serviço como fornecer um ponto de extremidade constante para os pods de aplicativo. Qualquer pod associado a esses serviços não pode ser acessado de fora do cluster do Kubernetes. O endereço IP usado com esses serviços é proveniente do espaço de endereço na rede privada.
Para expor os pods no cluster Kubernetes para acesso como outros pods e não como um serviço de balanceador de carga exposto externamente, confira como expor o serviço Kubernetes como serviço IP de cluster para comunicação interna.
IP do balanceador de carga - como o serviço IP do cluster, mas o IP associado vem da rede externa e pode ser acessado de fora do cluster do Kubernetes.
Configuração de rede do Kubernetes
Os endereços IP usados para nós do Kubernetes e os serviços externos são fornecidos por meio da página Computação na IU local do dispositivo.
A atribuição de IP é para:
- IPs do nó do Kubernetes: esse intervalo IP é usado para os nós mestre e de trabalho do Kubernetes. Esses IPs são usados quando os nós do Kubernetes se comunicam entre si.
- IPS de serviço externo do Kubernetes: esse intervalo IP é usado para serviços externos (também conhecidos como serviços do Load Balancer) que são expostos fora do cluster do Kubernetes.
Componentes de rede do Kubernetes
Calico, Metallb e DNS principal são todos os componentes que estão instalados para rede na GPU do Azure Stack Edge Pro.
- O Calico atribui um endereço IP de um intervalo IP privado para cada pod e configura a rede para esses pods para que o pod em um nó possa se comunicar com o pod em outro nó.
- O Metallb é executado em um pod no cluster e atribui o endereço IP aos serviços do tipo
load balancer
. Os endereços IP do balanceador de carga são escolhidos com base no intervalo IP do serviço fornecido por meio da IU local. - DNS principal - este complemento configura o nome do serviço de mapeamento de registros DNS para o endereço IP do cluster.
Quando você se conectar à interface do PowerShell do seu dispositivo, poderá ver os componentes de rede acima em execução no cluster Kubernetes.
Adaptadores de rede, comutadores
Seu dispositivo está disponível como uma configuração de um nó que constitui o cluster de infraestrutura. O cluster Kubernetes é separado do cluster de infraestrutura e é implantado na parte superior do cluster de infraestrutura. O cluster Kubernetes tem um nó mestre e um nó de trabalho. Os dois nós Kubernetes são máquinas virtuais que executam seus aplicativos e fluxos de trabalho de nuvem.
As VMs mestre e de trabalho têm dois adaptadores de rede, um que se conecta ao comutador virtual interno e outro que se conecta ao comutador virtual externo.
Comutador virtual externo: esse comutador é criado quando habilitamos uma porta de dispositivo para computação por meio da página Computação na IU local. Esse é o comutador que você usa para a infraestrutura de computação, por exemplo, esse comutador é usado para as máquinas virtuais que você implanta em seu dispositivo.
Comutador virtual interno: esse comutador é criado como parte das configurações padrão de fábrica em seu dispositivo. O comutador virtual interno usa a NAT (Conversão de Endereços de Rede) para rotear o tráfego por meio da porta configurada com um gateway padrão. Por exemplo, esse comutador roteia todas as solicitações de runtime de IoT das VMs para o portal do Azure.
Rotas de rede
Para as VMs do Kubernetes em seu dispositivo, você pode rotear o tráfego adicionando uma nova configuração de rota. Uma configuração de rota é uma entrada da tabela de roteamento que inclui os seguintes campos:
Parâmetro | Descrição |
---|---|
Destino | Um endereço IP ou um prefixo de endereço IP. |
Comprimento do prefixo | O comprimento do prefixo correspondente ao endereço ou intervalo de endereços no destino. |
Próximo salto | O endereço IP para o qual o pacote é encaminhado. |
Interface | O adaptador de rede que encaminha o pacote IP. |
Metric | A métrica de roteamento determina o adaptador de rede preferencial usado para alcançar o destino. |
Alterar o roteamento na rede de computação
Use o cmdlet Add-HcsNetRoute
para modificar o roteamento no trabalho do Kubernetes e nas VMs mestras. Considere o layout no diagrama abaixo.
- A Porta 2 está conectada à Internet e é o caminho desejado para o tráfego de saída.
- Você habilitou a computação na Porta 3 e isso criou um comutador virtual externo nesse adaptador de rede.
- A Porta 3 está conectada a uma rede privada que tem câmeras e outros sensores que estão alimentando dados brutos no dispositivo do Azure Stack Edge para processamento.
Se um gateway estiver configurado em seu ambiente na rede privada, considere definir rotas personalizadas para as VMs de trabalho e mestre do Kubernetes para que eles possam se comunicar com o gateway apenas para o tráfego relevante. Isso permite que você controle o tráfego que flui na rede de computação em comparação com as outras portas que você pode ter configurado em seu dispositivo do Azure Stack Edge. Por exemplo, você pode querer que todo o tráfego voltado para a Internet flua pelas outras portas físicas em seu dispositivo. Nesse caso, o tráfego voltado para a Internet pode passar pela Porta 2.
Você também deve levar em conta estas outras considerações:
- Se você tiver uma sub-rede simples, não precisará adicionar essas rotas à rede privada. Você poderá (opcionalmente) adicionar essas rotas quando houver várias sub-redes em sua rede privada.
- Você pode adicionar essas rotas somente às VMs mestre e de trabalho do Kubernetes, e não ao dispositivo (host Windows).
- A computação do Kubernetes não precisa ser configurada antes de adicionar essa rota. Você também pode adicionar ou atualizar rotas após a configuração da computação do Kubernetes.
- Você só pode adicionar uma nova configuração de rota por meio da interface do PowerShell do dispositivo, e não por meio da IU local.
- Verifique se o adaptador de rede que você usará tem uma configuração estática.
Adicionar uma configuração de rota
Para adicionar uma nova rota personalizada à rede privada, use o cmdlet da seguinte maneira:
Add-HcsNetRoute -InterfaceAlias <Port number> -DestinationPrefix <Destination IP address or IP address prefix> -NextHop <IP address of next hop> -RouteMetric <Route metric number>
Veja um exemplo de saída.
Add-HcsNetRoute -InterfaceAlias "Port3" -DestinationPrefix "192.168.20.0/24" -NextHop "192.168.20.1" -RouteMetric 100
O comando acima criará uma entrada na tabela de roteamento que define uma sub-rede de destino 192.168.20.0/24, especifica o próximo salto como 192.168.20.1 e atribui essa entrada de roteamento a uma métrica de roteamento de 100. Diminua a métrica de roteamento, aumente a prioridade atribuída à rota.
Verificar a configuração de rota
Use este cmdlet para verificar todas as configurações de rota personalizadas que você adicionou em seu dispositivo. Essas rotas não incluem todas as rotas do sistema ou rotas padrão que já existem no dispositivo.
Get-HcsNetRoute -InterfaceAlias <Port number>
Remover uma configuração de rota
Use este cmdlet para remover uma configuração de rota que você adicionou em seu dispositivo.
Remove-HcsNetRoute -InterfaceAlias <Port number> -DestinationPrefix <Destination IP or IP prefix>
Como fazer o roteamento com vários adaptadores de rede
Se várias portas de dispositivo estiverem conectadas, não haverá suporte para o agrupamento NIC padrão ou o SET (Switch Embedded Teaming) que permite agrupar vários adaptadores de rede física em um adaptador de rede virtual em um ambiente Hyper-V.
Próximas etapas
Para configurar a rede do Kubernetes na GPU do Azure Stack Edge Pro, confira: