Partager via


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 :

  1. Cluster d’ordinateur unique avec transfert de port.
  2. 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 :

  1. Ouvrez une session PowerShell avec élévation de privilèges.

  2. 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
    
  3. Obtenez l’adresse IP du service ciblé dans votre espace de noms :

    kubectl get service -n <namespace>
    
  4. 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 port 30034Linux. 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 port 30035. 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

Capture d’écran montrant le transfert de port réseau interne.

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.

Étapes suivantes