Kubenetes POD主机网络导致nodePort不起作用

时间:2017-02-27 08:02:36

标签: kubernetes weave

我遇到了一个问题: 1)为部署中的POD声明hostNetwork = true,并创建部署。 2)使用nodePort向部署pod声明服务

我发现在运行pod的主机中,serviceCluster:nodePort无法访问nodePort。

当我删除hostnetwork = true时,可以通过群集中的任何主机节点访问serviceClusterIP:nodePort。

什么是worong?

我的kubernetes版本如下所示,我正在使用weave net。

# kubectl version
Client Version: version.Info{Major:"1", Minor:"5", GitVersion:"v1.5.1", GitCommit:"82450d03cb057bab0950214ef122b67c83fb11df", GitTreeState:"clean", BuildDate:"2016-12-14T00:57:05Z", GoVersion:"go1.7.4", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"5", GitVersion:"v1.5.0", GitCommit:"58b7c16a52c03e4a849874602be42ee71afdcab1", GitTreeState:"clean", BuildDate:"2016-12-12T23:31:15Z", GoVersion:"go1.7.4", Compiler:"gc", Platform:"linux/amd64"}

1 个答案:

答案 0 :(得分:1)

在Kubernetes中,nodePort是一种将pod的网络接口上的端口映射到所有节点上的端口的机制。

正常情况下,当你没有说hostNetwork=true时,每个pod都有自己的“网络命名空间” - 它有自己的虚拟网络设备,它有一个唯一的IP地址,它有一个{{1} 127.0.0.1上的接口,由pod中的所有容器共享。

当您通过说localhost要求您的pod使用主机的网络接口时,它没有以上任何内容;它只使用主机网络设备。并且hostNetwork=true机制在此模式下不可用。

可能会在某处向您显示错误消息 - 查看nodePortkubectl events的日志文件。如果您无法在任何地方找到错误,请将此事实视为针对Kubernetes的错误。