Exposer des services Kubernetes à des appareils externes
Si vous travaillez avec des applications Kubernetes, vous devrez peut-être rendre les services Kubernetes accessibles aux appareils externes afin qu’ils puissent interagir avec les charges de travail que vous avez déployées. Cet article explique comment exposer les services Kubernetes s’exécutant sur un cluster AKS Edge Essentials sur des appareils externes. Selon la configuration réseau que vous avez utilisée pour configurer le cluster Kubernetes, il existe deux façons différentes d’exposer les services :
- Cluster d’ordinateur unique avec transfert de port.
- Cluster évolutif avec commutateur virtuel externe.
Remarque
Si vous utilisez des services Kubernetes, veillez à configurer les paramètres et Init.ServiceIPRangeStart
les paramètres pendant le Init.ServiceIPRangeSize
déploiement. Pour plus d’informations, consultez paramètres JSON de configuration de déploiement.
Option 1 : cluster d’ordinateur unique avec transfert de port
La configuration du cluster à ordinateur unique AKS Edge Essentials utilise un commutateur virtuel interne pour gérer la mise en réseau. Ce commutateur garantit que toutes les communications entre le système d’exploitation hôte Windows et le nœud Linux/Windows sont effectuées à l’aide d’un réseau interne qui n’est pas accessible par les appareils externes. Pour plus d’informations sur la mise en réseau AKS Edge Essentials, consultez Mise en réseau AKS Edge Essentials.
Si vous devez accéder à un service Kubernetes à partir d’appareils externes, configurez le transfert de port à partir du système d’exploitation hôte Windows vers le nœud Linux ou Windows. Si vous utilisez un service Kubernetes de type LoadBalancer, veillez à obtenir le ServiceIp correct à l’aide de la kubectl get services
commande. Si vous utilisez un service Kubernetes de type ClusterIp ou NodePort, utilisez l’adresse IP du nœud Kubernetes Linux/Windows.
Pour configurer le transfert de port, vous pouvez utiliser l’applet de netsh
commande. Pour plus d’informations sur netsh
la syntaxe de commande, les contextes et la mise en forme, consultez la syntaxe de commande Netsh, les contextes et la mise en forme. Procédez comme suit pour configurer le transfert de port :
Ouvrez une session PowerShell avec élévation de privilèges.
Activez un port de règle de pare-feu pour le port externe du système d’exploitation hôte Windows. Pour plus d’informations, consultez New-NetFirewallRule :
New-NetFirewallRule -DisplayName "<name-for-rule>" -Direction Inbound -LocalPort <Windows-host-OS-external-port> -Action Allow
Obtenez l’adresse IP du service ciblé dans votre espace de noms :
kubectl get service -n <namespace>
Configurez le transfert de port à partir de votre port de système d’exploitation hôte Windows vers l’adresse IP et le port du service Kubernetes :
Paramètre Description listen-port
Port IPv4 du système d’exploitation hôte Windows utilisé par les appareils externes pour communiquer avec le service Kubernetes. listen-address
Spécifie l’adresse IPv4 pour laquelle écouter le système d’exploitation hôte Windows. Si aucune adresse n’est spécifiée, la valeur par défaut est l’ordinateur local. connect-port
Spécifie le port IPv4 vers lequel rediriger le trafic. Ce port doit être le port du service Kubernetes. connect-address
Spécifie l’adresse IPv4 vers laquelle rediriger le trafic. Ce port doit être l’adresse IP du service Kubernetes. netsh interface portproxy add v4tov4 listenport=<listen-port> listenaddress=<listen-address> connectport=<connect-port> connectaddress=<connect-address>
Dans l’exemple suivant, il existe deux services Kubernetes s’exécutant sur un appareil Windows avec l’adresse IPv4 10.0.0.2 :
- Linux-Svc exécutant un service NodePort avec l’adresse IP du nœud
192.168.0.2
et du port30034
Linux. Ce service doit être accessible par port 8080 dans le système d’exploitation hôte Windows. - Win-Svc s’exécutant en tant que service LoadBalancer avec l’adresse
192.168.0.5
IP et le port30035
. Ce service doit être accessible par port 8081 dans le système d’exploitation hôte Windows.
Pour activer les appareils externes accédant à ces services, configurez le transfert de port pour les deux services. Pour ce scénario, exécutez les commandes suivantes :
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
Avertissement
Si vous n’utilisez pas de configuration réseau statique, l’adresse IPv4 du système d’exploitation hôte Windows peut changer. Cela peut affecter vos configurations de transfert de port et l’adresse IPv4 cible utilisée par les appareils externes. Pour réduire l’impact d’une modification d’adresse IPv4, vous pouvez utiliser un paramètre plus générique listenaddress
.
Option 2 : cluster évolutif avec commutateur virtuel externe
La configuration de cluster scalable AKS Edge Essentials utilise un commutateur virtuel externe pour gérer la mise en réseau. Étant donné que les nœuds s’exécutent sur différents appareils, tous les nœuds doivent être connectés au même réseau pour communiquer entre eux. Pour plus d’informations sur la mise en réseau AKS Edge Essentials, consultez Mise en réseau AKS Edge Essentials.
Dans cette configuration, les nœuds Kubernetes sont connectés au réseau externe, de sorte que les services Kubernetes sont accessibles par les appareils externes sans avoir besoin de transfert de port. Suivez les instructions de l’option 1, si vous utilisez un service Kubernetes de type LoadBalancer, veillez à obtenir le ServiceIp correct à l’aide de la kubectl get services
commande. Si vous utilisez un service Kubernetes de type ClusterIp ou NodePort, utilisez l’adresse IP du nœud Kubernetes Linux/Windows.
Remarque
Il est possible de conserver le cluster évolutif sur un appareil et d’utiliser la configuration du commutateur virtuel externe pour exposer les services Kubernetes directement aux appareils externes sur le réseau externe sans avoir besoin de transfert de port.