pod 无法访问本地机器 Kubernetes 服务

Posted

技术标签:

【中文标题】pod 无法访问本地机器 Kubernetes 服务【英文标题】:Local-machine Kubernetes service unreachable by pods 【发布时间】:2015-10-27 17:32:24 【问题描述】:

按照本指南启动本地机器 kubernetes 集群: http://kubernetes.io/v1.0/docs/getting-started-guides/docker.html

我用 .yaml 文件创建了各种 pod,一切正常,我可以使用容器 IP(在 172.17.xx 范围内,使用 docker0)访问 nginxmysql,但是当我创建服务时,服务 IP 在 10.0 .0.x 范围,无法从其他容器访问。

kube-proxy 不是应该自动创建 iptables 规则,提供对服务 IP 后面的容器的访问吗?没有发生 iptables 更改,其他容器无法访问服务。谢谢!

【问题讨论】:

【参考方案1】:

我刚刚浏览了这个(稍微过时的)文档。我发现如果在 2 个“docker run”行中将hyperkube:v0.21.2 替换为hyperkube:v1.0.7,并在kubectl 下载URL 中将0.18.2 替换为1.0.7,它会起作用。

我已提出更新此文档的请求。给您添麻烦了。

【讨论】:

不走运——同样的症状。我有 pod 与 GKE 上的服务交谈,但不是在仅限本地的开发系统上。容器到端点有效,但容器到服务 IP 无效。能够从所有容器 ping 到 www。运行 docker for kubernetes 时是否有一组必要的命令选项?使用 /usr/bin/docker -d -p /run/docker.pid --icc=true --ip-forward=true --iptables=true gist.github.com/thockin/3a8043ce6129a44af530 我刚刚在一个全新的虚拟机上再次运行它。你能追踪我的脚步,看看有没有什么不同吗?【参考方案2】:

Tim,我确实使用你的步骤再次运行它,没有区别,没有工作,但是今天我在这里切换到 1.1 版文档:

http://kubernetes.io/v1.1/docs/getting-started-guides/docker.html

并且还切换了容器版本,目前正在使用:

gcr.io/google_containers/etcd:2.2.1

gcr.io/google_containers/hyperkube:v1.1.1

你瞧……它有效!!!容器现在可以与服务对话了! 感谢回复

【讨论】:

以上是关于pod 无法访问本地机器 Kubernetes 服务的主要内容,如果未能解决你的问题,请参考以下文章

无法从 kubernetes pod 内部连接到外部数据库

大使pod在kubernetes中失败,因为kubernetes api服务器集群IP无法访问 - [Errno 113]主机无法访问',)

Kubernetes - 机器上已经存在容器镜像

如何从 kubernetes pod 连接到本地网络

Kubernetes - 无法从服务的 pod 连接到服务 IP

Kubernetes基石-pod容器