web-dev-qa-db-fra.com

Comment fonctionne kubectl port-forward?

les commandes kubectl expose peuvent être utilisées pour créer un service pour les applications et attribuer une adresse IP pour y accéder depuis Internet.

Autant que je sache, pour accéder à toute application du cluster Kubernetes, une ressource de service doit être créée et dotée d'une adresse IP accessible à partir d'un réseau externe.

Mais dans le cas d’un transfert de portage, comment kubectl crée-t-il une connexion à l’application sans adresse IP accessible de l’extérieur?

30
karthikeayan

kubectl port-forward effectue une demande d'API Kubernetes spécifique . Cela signifie que le système qui l'exécute doit avoir accès au serveur API et que tout le trafic sera acheminé via une connexion HTTP unique.

Avoir cela est vraiment utile pour le débogage (si un pod spécifique agit, vous pouvez vous y connecter directement; dans un environnement de microservice, vous pouvez parler à un service back-end que vous n'auriez pas exposé autrement), mais ce n'est pas une alternative à la configuration objets de service. Lorsque j'ai travaillé avec kubectl port-forward, il a été visiblement plus lent que la connexion à un pod via un service et j'ai constaté que la commande s'arrêtait juste après quelques minutes. Encore une fois, ce ne sont pas de gros problèmes de débogage, mais ce ne sont pas ce que je souhaiterais pour un système de production.

28
David Maze

kubectl port-forward transfère les connexions d'un port local à un port d'un pod. Par rapport à kubectl proxy, kubectl port-forward est plus générique car il peut transférer le trafic TCP tandis que kubectl proxy ne peut transférer que le trafic HTTP.

kubectl port-forward est utile à des fins de test/débogage afin que vous puissiez accéder à votre service localement sans l'exposer.

Ci-dessous se trouve le nom du pod et il transmettra son port 6379 à localhost:6379.

kubectl port-forward redis-master-765d459796-258hz 6379:6379 

qui est le même que

kubectl port-forward pods/redis-master-765d459796-258hz 6379:6379

ou

kubectl port-forward deployment/redis-master 6379:6379 

ou

kubectl port-forward rs/redis-master 6379:6379 

ou

kubectl port-forward svc/redis-master 6379:6379

Here est également un exemple de transfert de port de petite taille permettant d'accéder à un service de base de données (clusterip) sans l'exposer.

32
lvthillo

Si vous souhaitez transférer vers un autre port dans localhost. Essaye ça

kubectl port-forward <pod-name> <locahost-port>:<pod-port>
kubectl port-forward sample-pod-sadasds-sxawdd 8090:6379

La commande ci-dessus est transmise à l'hôte local 8090 à partir du module 6379.

5
Vihar Manchala