Networking kubernetes:在主机外部无法访问服务
我正在按照上的指南创建kubernetes群集。一旦集群启动,我就可以使用kubectl创建pod和服务。基本上,请执行以下操作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
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上的目标主机,使其丢弃数据包。我不知道为什么代理没有添加该规则。一旦我手动添加它,它就工作了