我遇到一个问题: 1)在部署中为POD声明hostNetwork=true,并创建部署。2)向deployment pods声明带有nodePort的服务
我发现pod未在其上运行的主机上的serviceClusterIP:nodePort无法访问nodePort。
当我删除hostnetwork=true时,集群中的任何主机节点都可以访问serviceClusterIP:nodePort。
有什么问题吗?
下面列出了我的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"}发布于 2017-02-27 19:13:32
在Kubernetes中,nodePort是一种将pod网络接口上的端口映射到所有节点上的端口的机制。
通常情况下,您不会说hostNetwork=true是每个pod都有自己的“网络名称空间”-它有自己的具有唯一IP地址的虚拟网络设备,并且它在127.0.0.1上有一个localhost接口,该接口由pod中的所有容器共享。
当您通过说hostNetwork=true来请求pod使用主机的网络接口时,它不具备上述任何条件;它只使用主机网络设备。并且nodePort机制在此模式下不可用。
可能会有一个错误消息告诉你--查看kubectl events或者kubelet的日志文件。如果你在任何地方都找不到错误,请将这个事实作为针对Kubernetes的错误提交。
https://stackoverflow.com/questions/42480525
复制相似问题