无法从node-host

时间:2016-09-08 10:05:26

标签: kubernetes

我在每个kubernetes节点上运行kube-proxy。我看,正在安装它的iptables规则,以创建虚拟服务主机。我使用法兰绒覆盖网络将我的节点的docker网络连接在一起。这可以从docker容器内部完成。所以我能够直接连接到pods以及docker容器内的服务。

但由于某些要求,我需要从节点主机访问服务,方式与从docker容器内部相同。问题是,这只适用于节点,服务pod正在运行。

请参阅以下节点上iptables-save的示例,该示例未托管kubernetes-dashboard pod作为说明(该pod正在kube-node-2上运行):

[root@kube-node-1 ~]# iptables-save | grep dashboard
-A KUBE-SEP-CAT6SKLXJIMXS63T -s 172.16.99.5/32 -m comment --comment    "kube-system/kubernetes-dashboard:" -j KUBE-MARK-MASQ
-A KUBE-SEP-CAT6SKLXJIMXS63T -p tcp -m comment --comment "kube- system/kubernetes-dashboard:" -m tcp -j DNAT --to-destination  172.16.99.5:9090
-A KUBE-SERVICES -d 10.254.242.220/32 -p tcp -m comment --comment "kube-system/kubernetes-dashboard: cluster IP" -m tcp --dport 80 -j KUBE-SVC-XGLOHA7QRQ3V22RZ
-A KUBE-SVC-XGLOHA7QRQ3V22RZ -m comment --comment "kube-system/kubernetes-dashboard:" -j KUBE-SEP-CAT6SKLXJIMXS63T

我现在能够curl http://172.16.99.5:9090但我无法curl http://10.254.242.220(在kube-node-2上此命令成功)。另一方面,来自同一主机的docker run -it --rm centos /usr/bin/curl http://10.254.242.220可以正常工作。

我有直觉,缺少iptables规则和NATing的东西,所以所有包都跳进KUBE-SERVICES链。也许有人可以帮助我理解,发生了什么并提供解决方案。

1 个答案:

答案 0 :(得分:0)

如果要从kubernetes群集外部访问服务,则需要使用服务类型NodePort,请参阅http://kubernetes.io/docs/user-guide/services/#publishing-services---service-types。 如果要使用默认端口范围(30000-32767)之外的端口,则可以另外允许使用api服务器的--service-node-port-range选项的新范围,请参阅http://kubernetes.io/docs/admin/kube-apiserver/

问候,Marc

相关问题