Rede Kubernetes no dispositivo GPU 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 Kubernetes é criado quando você configura a função de computação. Depois que o cluster Kubernetes é criado, os aplicativos em contêineres podem ser implantados no cluster Kubernetes em Pods. Há maneiras distintas de usar a rede para os Pods no cluster do Kubernetes.
Este artigo descreve a rede em um cluster Kubernetes em geral e especificamente no contexto do seu dispositivo GPU Azure Stack Edge Pro.
Requisitos de rede
Aqui está um exemplo de um aplicativo típico de duas camadas que é implantado no cluster Kubernetes.
- O aplicativo tem um front-end de servidor Web e um aplicativo de banco de dados no back-end.
- Cada pod recebe um IP, mas esses IPs podem mudar 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:
- Há uma necessidade de que o aplicativo externo seja acessado por um usuário de aplicativo fora do cluster Kubernetes por meio de um nome ou um endereço IP.
- Os aplicativos dentro do cluster Kubernetes, por exemplo, front-end e os pods de back-end aqui devem ser capazes de falar uns com os outros.
Para resolver ambas as necessidades acima, introduzimos um serviço Kubernetes.
Serviços de rede
Existem dois tipos de serviços Kubernetes:
Serviço IP de cluster - pense neste serviço como fornecendo 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 Kubernetes. O endereço IP usado com esses serviços vem do espaço de endereço na rede privada.
Para expor os pods dentro do cluster Kubernetes para acesso como outros pods e não como um serviço de balanceador de carga exposto externamente, consulte 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 através da página Computação na interface do usuário local do dispositivo.
A atribuição de IP destina-se a:
- IPs de nó do Kubernetes: esse intervalo de IP é usado para 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 de IP é usado para serviços externos (também conhecidos como serviços de balanceador de carga) que são expostos fora do cluster do Kubernetes.
Componentes de rede do Kubernetes
Calico, Metallb e Core DNS são todos os componentes instalados para rede na GPU do Azure Stack Edge Pro.
- O Calico atribui um endereço IP de um intervalo de IP privado a 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 a serviços do tipo
load balancer
. Os endereços IP do balanceador de carga são escolhidos a partir do intervalo de IP do serviço fornecido por meio da interface do usuário local. - Core DNS - Este complemento configura o nome do serviço de mapeamento de registros DNS para o endereço IP do cluster.
Quando você se conecta à interface do PowerShell do seu dispositivo, pode ver os componentes de rede acima em execução no cluster do Kubernetes.
Interfaces de rede, switches
Seu dispositivo está disponível como uma configuração de 1 nó que constitui o cluster de infraestrutura. O cluster Kubernetes é separado do cluster de infraestrutura e é implantado sobre o cluster de infraestrutura. O cluster Kubernetes tem um nó mestre e um nó de trabalho. Ambos os nós do Kubernetes são máquinas virtuais que executam seus aplicativos e fluxos de trabalho na nuvem.
As VMs mestre e de trabalho têm duas interfaces de rede, uma que se conecta ao comutador virtual interno e outra que se conecta ao comutador virtual externo.
Comutador virtual externo: este comutador é criado quando ativamos uma porta de dispositivo para computação através da página Computação na IU local. Este é o switch que você usa para sua infraestrutura de computação, por exemplo, esse switch é usado para as máquinas virtuais que você implanta em seu dispositivo.
Comutador virtual interno: este comutador é criado como parte das predefinições de fábrica no seu dispositivo. O comutador virtual interno usa NAT (Network Address Translation) para rotear o tráfego através da porta configurada com um gateway padrão. Por exemplo, essa opção roteia todas as solicitações de tempo de execução da IoT de 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 de tabela de roteamento que inclui os seguintes campos:
Parâmetro | Description |
---|---|
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 | A interface de rede que encaminha o pacote IP. |
Métrica | A métrica de roteamento determina a interface de rede preferida usada para chegar ao destino. |
Alterar o roteamento na rede de computação
Use o Add-HcsNetRoute
cmdlet para modificar o roteamento nas VMs mestre e de trabalho do Kubernetes. 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 nessa interface de rede.
- A porta 3 está conectada a uma rede privada que tem câmeras e outros sensores que estão alimentando dados brutos para o dispositivo Azure Stack Edge para processamento.
Se um gateway estiver configurado em seu ambiente na rede privada, considere definir rotas personalizadas para as VMs mestre e de trabalho do Kubernetes para que elas possam se comunicar com seu gateway apenas para o tráfego relevante. Isso permite que você esteja no controle do tráfego que flui na rede de computação versus as outras portas que você pode ter configurado em seu dispositivo Azure Stack Edge. Por exemplo, você pode querer que todo o outro tráfego voltado para a Internet flua pelas outras portas físicas do seu dispositivo. Neste caso, o tráfego voltado para a Internet pode passar pela Porta 2.
Você também deve levar em consideração estas outras considerações:
- Se você tiver uma sub-rede plana, não precisará adicionar essas rotas à rede privada. Você pode (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 depois que a computação do Kubernetes estiver configurada.
- Você só pode adicionar uma nova configuração de rota por meio da interface do PowerShell do dispositivo e não por meio da interface do usuário local.
- Verifique se a interface 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>
Aqui está 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 a essa entrada de roteamento uma métrica de roteamento de 100. Diminua a métrica de roteamento, maior a prioridade atribuída à rota.
Verificar configuração de rota
Use este cmdlet para verificar todas as configurações de rota personalizadas que você adicionou ao 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 ao seu dispositivo.
Remove-HcsNetRoute -InterfaceAlias <Port number> -DestinationPrefix <Destination IP or IP prefix>
Roteamento com várias interfaces de rede
Se várias portas de dispositivo estiverem conectadas, não há suporte para agrupamento NIC padrão ou SET (Switch Embedded Teaming), que permite agrupar vários adaptadores de rede física em um único adaptador de rede virtual em um ambiente Hyper-V.
Próximos passos
Para configurar a rede Kubernetes em sua GPU do Azure Stack Edge Pro, consulte: