Partilhar via


Expor os serviços do Kubernetes a dispositivos externos

Se você trabalha com aplicativos Kubernetes, talvez seja necessário tornar os serviços Kubernetes acessíveis a dispositivos externos para que eles possam interagir com as cargas de trabalho que você implantou. Este artigo explica como expor os serviços do Kubernetes em execução em um cluster do AKS Edge Essentials a dispositivos externos. Dependendo da configuração de rede usada para configurar o cluster do Kubernetes, há duas maneiras diferentes de expor os serviços:

  1. Cluster de máquina única com encaminhamento de porta.
  2. Cluster escalável com comutador virtual externo.

Nota

Se você usa 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 Windows e o nó Linux/Windows seja feita usando uma rede interna que não é acessível por dispositivos externos. Para obter mais informações sobre a rede do AKS Edge Essentials, consulte Rede do AKS Edge Essentials.

Se você precisar acessar um serviço Kubernetes a partir de dispositivos externos, configure o encaminhamento de porta do sistema operacional host Windows para o nó Linux ou Windows. 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ó Linux/Windows Kubernetes.

Para configurar o encaminhamento de portas, 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 comandos Netsh. Siga estas etapas para configurar o encaminhamento de portas:

  1. Abra uma sessão do PowerShell com privilégios elevados.

  2. Habilite uma porta de regra de firewall para a porta externa do sistema operacional host 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
    
  3. Obtenha o endereço IP do serviço de destino em seu namespace:

    kubectl get service -n <namespace>
    
  4. Configure o encaminhamento de porta da porta do seu sistema operacional host Windows para o endereço IP e a porta do serviço Kubernetes:

    Parâmetro Description
    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 do Windows. Se um endereço não for especificado, o padrão será 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 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 Linux e porta 30034. Este 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 porta 30035. Este serviço deve ser acessível pela porta 8081 no sistema operacional host Windows.

Para permitir que dispositivos externos acessem 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

Captura de ecrã a mostrar o reencaminhamento de portas de rede internas.

Aviso

Se você não usar uma configuração de rede estática, o endereço IPv4 do sistema operacional host do Windows pode mudar. Isso pode afetar as 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 listenaddressarquivo .

Opção 2: cluster escalável com comutador virtual externo

A configuração de cluster escalável do AKS Edge Essentials usa um comutador virtual externo para gerenciar a rede. Como os nós são executados dentro de 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 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 portas. Seguindo as orientações 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ó Linux/Windows Kubernetes.

Nota

É possível manter o cluster escalável para 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 portas.

Próximos passos