【问题标题】:Exposed Service ClusterIps aren't accessible within Minikube在 Minikube 中无法访问暴露的服务 ClusterIps
【发布时间】:2017-09-14 16:31:40
【问题描述】:

我一直在努力,但我没有取得任何进展。

问题是,当我从部署中创建服务时,为该服务创建的 ClusterIp 无法在 MiniKube 中访问,正如我所期望的那样。

我可以通过 ssh 到与我公开的不同的 pod 并 ping 服务的 IP 来验证它是否不可访问。

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

这会在 10.0.0.5 创建服务,路由到 ${foo's IP}:2500

kubectl exec -it bar-5435435-sadasf -- bash root@bar-5435435-sadasf:/# 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

ping pod IP($foo 的 IP)没有问题,但这不是我想要做的。

我已经阅读了足够多的内容,知道该问题可能与 proxy.go 有关,这似乎是 Minikube 中的 kube-proxy 等效项。

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

我检查了 Minikube 日志并 grep 寻找包含“代理”的任何内容,这似乎可能指向问题所在,但我不知道如何解决。

我最近的代理日志:

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

有谁知道问题是什么以及如何解决?

【问题讨论】:

  • k8s 服务不回复 ping 请求,这是您检查连接的唯一方法吗?
  • 谢谢,马克。因此,能够 ping 服务并不是我 100% 启用的,但为了简单起见,我使用了 ping 示例。我遇到的真正问题是为我的数据库设置主机 IP。我想使用服务IP,但是使用时找不到主机。当我使用 pod IP 时,一切都按预期工作。我认为端口映射不是问题。我一直认为这都是kube-proxy,因为这似乎是文档中的关键部分,而且它没有在我的系统上运行。我刚刚错过了一些非常明显的东西吗?

标签: kubernetes minikube kube-proxy


【解决方案1】:

服务使用 ClusterIP 获取其虚拟 IP 地址。该 IP 地址用于与服务通信,并且只能在集群内访问。

确保您不仅通过其 IP 连接到服务,而且还使用该服务公开的端口。

在你的情况下:

$ 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

现在可以从集群内访问该服务:

$ 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

【讨论】:

    猜你喜欢
    • 2018-11-21
    • 1970-01-01
    • 2018-02-24
    • 1970-01-01
    • 1970-01-01
    • 2017-10-22
    • 2021-09-17
    • 1970-01-01
    • 2019-06-04
    相关资源
    最近更新 更多