2017-09-06 3 views
1

Je travaille sur ce domaine et je ne progresse pas. Le problème est que lorsque je crée un service à partir d'un déploiement, le ClusterIp créé pour le service n'est pas accessible dans MiniKube comme je le souhaite.Les ClusterIps de service exposés ne sont pas accessibles dans Minikube

Je peux vérifier qu'il n'est pas accessible en accédant à un pod différent de celui que j'ai exposé, et en envoyant une requête ping à l'adresse IP du service.

kubectl expose deployment/foo --target-port=2500

Cela crée le service à 10.0.0.5 qui achemine à $ {IP} foo: 2500

kubectl exec -it bar-5435435-sadasf -- bash [email protected]:/# ping 10.0.0.5

PING 10.0.0.5 (10.0.0.5): 56 data bytes ^C--- 10.0.0.5 ping statistics --- 8 packets transmitted, 0 packets received, 100% packet loss

Je n'ai aucune question pinger le pod IP (IP de $ foo), mais ce n'est pas ce que je veux faire.

J'ai fait assez de lecture pour savoir que le problème est probablement lié à proxy.go qui semble être l'équivalent kube-proxy dans Minikube.

https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies https://github.com/kubernetes/minikube/blob/master/pkg/localkube/proxy.go

J'ai vérifié les journaux Minikube et pour tout ce qui contient rassemblés de « proxy », et il semble que cela pourrait indiquer la question, mais je ne sais pas comment le résoudre.

Mes derniers journaux proxy:

Sep 06 18:13:06 minikube localkube[3373]: Starting proxy... Sep 06 18:13:06 minikube localkube[3373]: Waiting for proxy to be healthy... Sep 06 18:13:07 minikube localkube[3373]: proxy is ready! Sep 06 18:46:47 minikube localkube[3373]: E0906 18:46:47.742324 3373 proxy.go:207] Error proxying data from backend to client: write tcp 192.168.99.101:8443->192.168.99.1:58760: write: broken pipe Sep 06 19:11:41 minikube localkube[3373]: E0906 19:11:41.077014 3373 proxy.go:193] Error proxying data from client to backend: write tcp 127.0.0.1:44180->127.0.1.1:10250: write: broken pipe Sep 06 19:11:41 minikube localkube[3373]: E0906 19:11:41.077220 3373 proxy.go:207] Error proxying data from backend to client: write tcp 192.168.99.101:8443->192.168.99.1:45586: write: broken pipe Sep 06 19:22:07 minikube localkube[3373]: E0906 19:22:07.214287 3373 proxy.go:207] Error proxying data from backend to client: write tcp 192.168.99.101:8443->192.168.99.1:51558: write: broken pipe Sep 06 19:22:07 minikube localkube[3373]: E0906 19:22:07.214459 3373 proxy.go:193] Error proxying data from client to backend: write tcp 127.0.0.1:45184->127.0.1.1:10250: write: broken pipe

Est-ce que quelqu'un a une idée de ce que la question est et comment y remédier?

+0

services K8S ne répondent pas aux requêtes ping, était que la seule chose que vous avez essayé de vérifier la connexion? –

+0

Merci, Marc. Donc, être capable de faire un ping sur les services n'est pas quelque chose que j'étais à 100%, mais j'ai utilisé l'exemple de ping pour la simplicité. Le vrai problème que j'ai est de configurer l'adresse IP de l'hôte pour mon db. Je veux utiliser l'IP de service, mais je ne peux pas trouver l'hôte quand je le fais. Quand j'utilise l'IP pod, tout fonctionne comme prévu. Je ne pense pas que la cartographie des ports soit le problème. Je pensais que tout est «kube-proxy» parce que cela semble être la pièce maîtresse de la documentation, et qu'elle ne fonctionne pas sur mon système. Ai-je manqué quelque chose de vraiment évident ici? –

Répondre

0

Un service obtient son adresse IP virtuelle à l'aide de ClusterIP. Cette adresse IP est utilisée pour communiquer avec le Service et n'est accessible qu'au sein du cluster.

Assurez-vous de vous connecter à un service non seulement par son adresse IP mais également par le port auquel ce service est exposé.

Dans votre cas:

$ kubectl expose deployment/foo --port=3030 --target-port=2500 

$ kubectl get svc 
NAME CLUSTER-IP EXTERNAL-IP PORT(S)   AGE 
foo 10.0.0.73 <nodes>  3030/TCP  1m 

Maintenant, le service est reacheable à partir d'un cluster:

$ minikube ssh 
$ curl 10.0.0.73:3030 
Hello World! 
$ exit 

$ kubectl exec -i -t bar-j26rd /bin/sh 
$ curl 10.0.0.73:3030 
Hello World! 
$ exit