Condividi tramite


Esporre i servizi Kubernetes a dispositivi esterni

Se si lavora con le applicazioni Kubernetes, potrebbe essere necessario rendere i servizi Kubernetes accessibili ai dispositivi esterni in modo che possano interagire con i carichi di lavoro distribuiti. Questo articolo illustra come esporre i servizi Kubernetes in esecuzione in un cluster Edge Essentials del servizio Azure Kubernetes a dispositivi esterni. A seconda della configurazione di rete usata per configurare il cluster Kubernetes, esistono due modi diversi per esporre i servizi:

  1. Cluster di computer singolo con port forwarding.
  2. Cluster scalabile con commutatore virtuale esterno.

Nota

Se si usano i servizi Kubernetes, assicurarsi di configurare i parametri e Init.ServiceIPRangeStart durante la Init.ServiceIPRangeSize distribuzione. Per altre informazioni, vedere Parametri JSON di configurazione della distribuzione.

Opzione 1: cluster a computer singolo con port forwarding

La configurazione del cluster a computer singolo AKS Edge Essentials usa un commutatore virtuale interno per gestire la rete. Questa opzione garantisce che tutte le comunicazioni tra il sistema operativo host Windows e il nodo Linux/Windows vengano eseguite usando una rete interna non accessibile dai dispositivi esterni. Per altre informazioni sulla rete di AKS Edge Essentials, vedere Rete AKS Edge Essentials.

Se è necessario accedere a un servizio Kubernetes da dispositivi esterni, configurare il port forwarding dal sistema operativo host Windows al nodo Linux o Windows. Se si usa un servizio Kubernetes di tipo LoadBalancer, assicurarsi di ottenere il serviceIp corretto usando il kubectl get services comando . Se si usa un servizio Kubernetes di tipo ClusterIp o NodePort, usare l'indirizzo IP del nodo Linux/Windows Kubernetes.

Per configurare il port forwarding, è possibile usare il netsh cmdlet . Per altre informazioni sulla netsh sintassi dei comandi, i contesti e la formattazione, vedere sintassi, contesti e formattazione dei comandi Netsh. Per configurare il port forwarding, seguire questa procedura:

  1. Aprire una sessione di PowerShell con privilegi elevati.

  2. Abilitare una porta della regola del firewall per la porta esterna del sistema operativo host Windows. Per altre informazioni, vedere New-NetFirewallRule:

    New-NetFirewallRule -DisplayName "<name-for-rule>" -Direction Inbound -LocalPort <Windows-host-OS-external-port> -Action Allow
    
  3. Ottenere l'indirizzo IP del servizio di destinazione nello spazio dei nomi:

    kubectl get service -n <namespace>
    
  4. Configurare il port forwarding dalla porta del sistema operativo host Windows all'indirizzo IP e alla porta del servizio Kubernetes:

    Parametro Descrizione
    listen-port Porta IPv4 del sistema operativo host Windows usata dai dispositivi esterni per comunicare con il servizio Kubernetes.
    listen-address Specifica l'indirizzo IPv4 per il quale rimanere in ascolto sul sistema operativo host Windows. Se non viene specificato un indirizzo, il valore predefinito è il computer locale.
    connect-port Specifica la porta IPv4 a cui reindirizzare il traffico. Questa porta deve essere la porta del servizio Kubernetes.
    connect-address Specifica l'indirizzo IPv4 a cui reindirizzare il traffico. Questa porta deve essere l'indirizzo IP del servizio Kubernetes.
    netsh interface portproxy add v4tov4 listenport=<listen-port> listenaddress=<listen-address> connectport=<connect-port> connectaddress=<connect-address>
    

Nella figura di esempio seguente sono disponibili due servizi Kubernetes in esecuzione in un dispositivo Windows con l'indirizzo IPv4 10.0.0.2 :

  • Linux-Svc che esegue un servizio NodePort con indirizzo IP del nodo 192.168.0.2 Linux e della porta 30034. Questo servizio deve essere raggiungibile dalla porta 8080 nel sistema operativo host Windows.
  • Win-Svc in esecuzione come servizio LoadBalancer con indirizzo 192.168.0.5 IP e porta 30035. Questo servizio deve essere raggiungibile dalla porta 8081 nel sistema operativo host Windows.

Per abilitare l'accesso a questi servizi da parte di dispositivi esterni, configurare il port forwarding per entrambi i servizi. Per questo scenario, eseguire i comandi seguenti:

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

Screenshot che mostra il port forwarding di rete interno.

Avviso

Se non si usa una configurazione di rete statica, l'indirizzo IPv4 del sistema operativo host Windows potrebbe cambiare. Ciò può influire sulle configurazioni di port forwarding e sull'indirizzo IPv4 di destinazione usato dai dispositivi esterni. Per ridurre al minimo l'impatto di una modifica dell'indirizzo IPv4, è possibile usare un oggetto più generico listenaddress.

Opzione 2: cluster scalabile con commutatore virtuale esterno

La configurazione scalabile del cluster Azure Kubernetes Edge Essentials usa un commutatore virtuale esterno per gestire la rete. Poiché i nodi vengono eseguiti all'interno di dispositivi diversi, tutti i nodi devono essere connessi alla stessa rete per comunicare tra loro. Per altre informazioni sulla rete di AKS Edge Essentials, vedere Rete AKS Edge Essentials.

In questa configurazione, i nodi Kubernetes sono connessi alla rete esterna, quindi i servizi Kubernetes sono raggiungibili da dispositivi esterni senza la necessità di port forwarding. Seguendo le indicazioni per l'opzione 1, se si usa un servizio Kubernetes di tipo LoadBalancer, assicurarsi di ottenere il serviceIp corretto usando il kubectl get services comando . Se si usa un servizio Kubernetes di tipo ClusterIp o NodePort, usare l'indirizzo IP del nodo Linux/Windows Kubernetes.

Nota

È possibile mantenere il cluster scalabile su un dispositivo e usare la configurazione del commutatore virtuale esterno per esporre i servizi Kubernetes direttamente ai dispositivi esterni nella rete esterna senza la necessità di port forwarding.

Passaggi successivi