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?
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.
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.
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.