Expor serviços do Kubernetes a dispositivos externos
Se você trabalha com aplicativos do Kubernetes, talvez seja necessário tornar os serviços do Kubernetes acessíveis a dispositivos externos para que eles possam interagir com as cargas de trabalho implantadas. Este artigo explica como expor os serviços do Kubernetes em execução em um cluster do AKS Edge Essentials para dispositivos externos. Dependendo da configuração de rede usada para configurar o cluster do Kubernetes, há duas maneiras diferentes de expor os serviços:
- Cluster de máquina única com encaminhamento de porta.
- Cluster escalável com comutador virtual externo.
Observação
Se você usar os serviços do Kubernetes, certifique-se de configurar os parâmetros e Init.ServiceIPRangeStart
durante a Init.ServiceIPRangeSize
implantação. Para obter mais informações, consulte Parâmetros JSON de configuração de implantação.
Opção 1: cluster de máquina única com encaminhamento de porta
A configuração de cluster de máquina única do AKS Edge Essentials usa um comutador virtual interno para gerenciar a rede. Essa opção garante que toda a comunicação entre o sistema operacional host do Windows e o nó Linux/Windows seja feita usando uma rede interna que não seja acessível por dispositivos externos. Para obter mais informações sobre a rede do AKS Edge Essentials, consulte a Rede do AKS Edge Essentials.
Se você precisar acessar um serviço do Kubernetes de dispositivos externos, configure o encaminhamento de porta do sistema operacional host do Windows para o nó Linux ou Windows. Se você estiver usando um serviço do Kubernetes do tipo LoadBalancer, certifique-se de obter o ServiceIp correto usando o kubectl get services
comando. Se você estiver usando um serviço Kubernetes do tipo ClusterIp ou NodePort, use o endereço IP do nó do Kubernetes do Linux/Windows.
Para configurar o encaminhamento de porta, você pode usar o netsh
cmdlet. Para obter mais informações sobre netsh
sintaxe de comando, contextos e formatação, consulte Sintaxe, contextos e formatação de comando Netsh. Siga estas etapas para configurar o encaminhamento de porta:
Abra uma sessão do PowerShell elevada.
Habilite uma porta de regra de firewall para a porta externa do sistema operacional host do Windows. Para obter mais informações, consulte New-NetFirewallRule:
New-NetFirewallRule -DisplayName "<name-for-rule>" -Direction Inbound -LocalPort <Windows-host-OS-external-port> -Action Allow
Obtenha o endereço IP do serviço de destino em seu namespace:
kubectl get service -n <namespace>
Configure o encaminhamento de porta da porta do sistema operacional do host Windows para o endereço IP e a porta do serviço Kubernetes:
Parâmetro Descrição listen-port
Porta IPv4 do sistema operacional host Windows usada por dispositivos externos para se comunicar com o serviço Kubernetes. listen-address
Especifica o endereço IPv4 para o qual escutar no sistema operacional host Windows. Se um endereço não for especificado, o padrão é o computador local. connect-port
Especifica a porta IPv4 para a qual o tráfego será redirecionado. Essa porta deve ser a porta de serviço do Kubernetes. connect-address
Especifica o endereço IPv4 para o qual o tráfego será redirecionado. Essa porta deve ser o endereço IP do serviço Kubernetes. netsh interface portproxy add v4tov4 listenport=<listen-port> listenaddress=<listen-address> connectport=<connect-port> connectaddress=<connect-address>
Na figura de exemplo a seguir, há dois serviços do Kubernetes em execução em um dispositivo Windows com o endereço IPv4 10.0.0.2 :
- Linux-Svc executando um serviço NodePort com endereço IP do nó
192.168.0.2
e da porta30034
do Linux. Esse serviço deve ser acessível pela porta 8080 no sistema operacional host Windows. - Win-Svc em execução como um serviço LoadBalancer com endereço
192.168.0.5
IP e porta30035
. Esse serviço deve ser acessível pela porta 8081 no sistema operacional host Windows.
Para habilitar dispositivos externos que acessam esses serviços, configure o encaminhamento de porta para ambos os serviços. Para esse cenário, execute os seguintes comandos:
netsh interface portproxy add v4tov4 listenport=8080 listenaddress=10.0.0.2 connectport=30034 connectaddress=192.168.0.2
netsh interface portproxy add v4tov4 listenport=8081 listenaddress=10.0.0.2 connectport=30035 connectaddress=192.168.0.5
Aviso
Se você não usar uma configuração de rede estática, o endereço IPv4 do sistema operacional host do Windows poderá ser alterado. Isso pode afetar suas configurações de encaminhamento de porta e o endereço IPv4 de destino usado por dispositivos externos. Para minimizar o impacto de uma alteração de endereço IPv4, você pode usar um listenaddress
.
Opção 2: cluster escalável com comutador virtual externo
A configuração de cluster escalonável do AKS Edge Essentials usa um comutador virtual externo para gerenciar a rede. Como os nós são executados em dispositivos diferentes, todos os nós devem estar conectados à mesma rede para se comunicarem entre si. Para obter mais informações sobre a rede do AKS Edge Essentials, consulte a Rede do AKS Edge Essentials.
Nessa configuração, os nós do Kubernetes são conectados à rede externa, de modo que os serviços do Kubernetes podem ser acessados por dispositivos externos sem a necessidade de encaminhamento de porta. Seguindo as diretrizes para a opção 1, se você estiver usando um serviço Kubernetes do tipo LoadBalancer, certifique-se de obter o ServiceIp correto usando o kubectl get services
comando. Se você estiver usando um serviço Kubernetes do tipo ClusterIp ou NodePort, use o endereço IP do nó do Kubernetes do Linux/Windows.
Observação
É possível manter o cluster escalável em um dispositivo e usar a configuração do comutador virtual externo para expor os serviços do Kubernetes diretamente a dispositivos externos na rede externa sem a necessidade de encaminhamento de porta.