Présentation
Redirection de port Kubectl vous permet d'accéder et d'interagir avec les processus internes du cluster Kubernetes à partir de votre hôte local. Vous pouvez utiliser cette méthode pour enquêter sur les problèmes et ajuster vos services localement sans avoir à les exposer au préalable.
Kubectl est le principal outil de ligne de commande pour la gestion des clusters Kubernetes. Il est essentiel pour déployer des applications, administrer les ressources du cluster et créer des infrastructures complexes.
Ce didacticiel concis vous montre comment utiliser kubectl pour transférer un port vers un pod dans un cluster Kubernetes.
Prérequis
- Un cluster Kubernetes
- Un kubectl entièrement configuré outil de ligne de commande
Comment fonctionne le transfert de port Kubernetes ?
Même si Kubernetes est un système d'orchestration hautement automatisé, le processus de transfert de port nécessite une entrée utilisateur directe et récurrente. Une connexion se termine une fois que l'instance de pod échoue, et il est nécessaire d'établir un nouveau transfert en saisissant la même commande manuellement.
L'ensemble du processus est simplifié par le fait que kubectl dispose déjà d'une fonctionnalité de redirection de port intégrée.
- Un utilisateur interagit avec Kubernetes à l'aide de kubectl ligne de commande sur leur machine locale.
- Le
port-forward
La commande spécifie le nom de la ressource du cluster et définit le numéro de port vers lequel transférer le port. - En conséquence, le serveur d'API Kubernetes établit une connexion HTTP unique entre votre hôte local et la ressource exécutée sur votre cluster.
- L'utilisateur peut désormais engager directement ce module spécifique, soit pour diagnostiquer un problème, soit pour déboguer si nécessaire.
La redirection de port est une méthode à forte intensité de travail. Cependant, dans certains cas, c'est le seul moyen d'accéder aux ressources internes du cluster.
Commandes de transfert de port kubectl de base
Le port-forward
La commande établit un tunnel entre le pod cible et votre hôte local. La commande vous demande de définir le type ou le nom de la ressource ainsi que les numéros de port locaux et distants :
kubectl port-forward TYPE/NAME [options] LOCAL_PORT:REMOTE_PORT
Si plusieurs pods correspondent aux critères de type/nom, un pod aléatoire est sélectionné par défaut. Pour éviter de telles incohérences, définissez un pod aussi précisément que possible. Vous pouvez trouver le nom exact du pod en répertoriant manuellement les pods dans un espace de noms en tapant :
kubectl -n yournamespace get pods
La liste fournit les noms des pods dans cet espace de noms.
kubectl transfert de port vers un pod spécifique
Par exemple, la commande suivante vous permettrait d'accéder à un déploiement MongoDB au sein de votre cluster. Le nom du pod est mongo-db-r3pl1ka3 , et le numéro de port est 5762 :
kubectl port-forward pod/mongo-db-r3pl1ka3 8080:5762
L'API Kubernetes écoute désormais sur le port local 8080 et transmet les données au port 5762 sur le pod défini.
Port local aléatoire
Écoutez localement sur un port aléatoire et transférez-le vers le port 5762 dans le pod spécifié :
kubectl port-forward pod/mongo-db-r3pl1ka3 :5762
Port local et distant correspondant
Écoutez et transférez les données à l'aide de ports identiques (8080, 5762) à la fois localement et dans le pod spécifique :
kubectl port-forward pod/mongo-db-r3pl1ka3 8080 5762
Adresse IP locale aléatoire
Écoutez sur le port 8080 sur n'importe quelle adresse locale, transférez vers le port 5762 dans le pod spécifié :
kubectl port-forward --address 0.0.0.0 pod/mongo-db-r3pl1ka3 8888:5762
Spécifiez l'adresse IP locale pour le transfert de port
Écoutez sur le port 8080 sur l'hôte local à l'aide de l'adresse IP définie, transférez vers le port 5762 dans le pod :
kubectl port-forward --address localhost,10.153.40.102 pod/mongo-db-r3pl1ka3 8080:5762
Utiliser le déploiement pour sélectionner le pod de redirection de port
Écoutez et transférez les données à l'aide des mêmes ports (8080 5762) à la fois localement et dans le module. Le déploiement définit quel pod doit être utilisé :
kubectl port-forward deployment/mydeployment 8080 5762
Autoriser le service à définir le pod de redirection de port
Écoutez et transférez les données à l'aide des mêmes ports (8080 5762) à la fois localement et dans le module. Le Service sélectionne le pod à utiliser :
kubectl port-forward service/myservice 8080 5762