Networking kubernetes:在主机外部无法访问服务

Networking kubernetes:在主机外部无法访问服务,networking,service,kubernetes,Networking,Service,Kubernetes,我正在按照上的指南创建kubernetes群集。一旦集群启动,我就可以使用kubectl创建pod和服务。基本上,请执行以下操作 kubectl run nginx --image=nginx --port=80 kubectl expose deployment/nginx 我看到一个吊舱和服务正在运行 # kubectl get services NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes 19

我正在按照上的指南创建kubernetes群集。一旦集群启动,我就可以使用kubectl创建pod和服务。基本上,请执行以下操作

kubectl run nginx --image=nginx --port=80
kubectl expose deployment/nginx
我看到一个吊舱和服务正在运行

# 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
#kubectl获取服务
名称CLUSTER-IP EXTERNAL-IP端口年龄
kubernetes 192.168.3.1 443/TCP 2d
nginx 192.168.3.208 80/TCP 2d
当我试图从运行pod的机器访问服务时,我会返回nginx helloworld页面。但是如果我在kubernetes集群中的另一台机器上尝试,我会得到一个超时

我认为所有的服务都可以在集群中的任何地方访问。为什么它不能这样工作


谢谢

是的,应该可以在群集中的任何位置访问服务。您的“另一台机器”是否列在
kubectl get nodes
的输出中?节点
准备好了吗?可能是机器配置不正确

如果要在群集中的任何位置获取服务,必须使用网络插件,如Flannel、OpenVSwitch。

通过将我的错误与它工作的另一个安装进行比较,发现了我的错误。此安装缺少一条iptables规则,该规则将所有到容器的内容都强制放到flannel接口上。因此,通信量到达eth0上的目标主机,使其丢弃数据包。我不知道为什么代理没有添加该规则。一旦我手动添加它,它就工作了