我正在关注http://kubernetes.io/docs/getting-started-guides/ubuntu/的指南,以创建一个kubernetes集群。群集启动后,我可以使用kubectl创建pod和服务。基本上,请执行以下操作
kubectl run nginx --image=nginx --port=80
kubectl expose deployment/nginx
我看到一个pod和服务正在运行
# kubectl get services
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes 192.168.3.1 <none> 443/TCP 2d
nginx 192.168.3.208 <none> 80/TCP 2d
当我尝试从运行pod的机器访问服务时,我返回nginx helloworld页面。但是,如果我在kubernetes集群中尝试另一台机器,我会暂停。
我认为所有服务都可以在群集中的任何位置访问。为什么不能那样工作?
由于
答案 0 :(得分:0)
是的,服务应该可以在群集中的任何位置访问。是你的另一台机器&#34;列在kubectl get nodes
的输出中?节点是Ready
吗?也许机器没有正确配置。
答案 1 :(得分:0)
如果您希望将服务器放在群集中的任何位置,则必须使用网络插件,例如Flannel,OpenVSwitch。 http://kubernetes.io/docs/admin/networking/#flannel https://github.com/coreos/flannel#flannel
答案 2 :(得分:0)
通过将其与其工作的其他安装进行比较来发现我的错误。这个安装缺少一个iptables规则,强制所有进入容器的东西都进入法兰绒界面。因此,流量在eth0上到达目标主机,使其丢弃数据包。我不知道为什么代理没有添加该规则。一旦我手动添加它,它就有效。