Kubernetes 为什么';kube代理将流量路由到另一个工作节点?
我已经部署了几个不同的服务,但总是会遇到相同的错误 可以从pod运行的机器的节点端口访问该服务。在另外两个节点上,我得到超时 kube代理正在所有工作节点上运行,我可以在kube代理的日志文件中看到服务端口已添加,节点端口已打开。 在本例中,我部署了calico的stars演示 Kube代理日志输出:Kubernetes 为什么';kube代理将流量路由到另一个工作节点?,kubernetes,kube-proxy,Kubernetes,Kube Proxy,我已经部署了几个不同的服务,但总是会遇到相同的错误 可以从pod运行的机器的节点端口访问该服务。在另外两个节点上,我得到超时 kube代理正在所有工作节点上运行,我可以在kube代理的日志文件中看到服务端口已添加,节点端口已打开。 在本例中,我部署了calico的stars演示 Kube代理日志输出: Mar 11 10:25:10 kuben1 kube-proxy[659]: I0311 10:25:10.229458 659 service.go:309] Adding new s
Mar 11 10:25:10 kuben1 kube-proxy[659]: I0311 10:25:10.229458 659 service.go:309] Adding new service port "management-ui/management-ui:" at 10.32.0.133:9001/TCP
Mar 11 10:25:10 kuben1 kube-proxy[659]: I0311 10:25:10.257483 659 proxier.go:1427] Opened local port "nodePort for management-ui/management-ui:" (:30002/tcp)
kube代理正在端口30002上侦听
root@kuben1:/tmp# netstat -lanp | grep 30002
tcp6 0 0 :::30002 :::* LISTEN 659/kube-proxy
还定义了一些iptable规则:
root@kuben1:/tmp# iptables -L -t nat | grep management-ui
KUBE-MARK-MASQ tcp -- anywhere anywhere /* management-ui/management-ui: */ tcp dpt:30002
KUBE-SVC-MIYW5L3VT4JVLCIZ tcp -- anywhere anywhere /* management-ui/management-ui: */ tcp dpt:30002
KUBE-MARK-MASQ tcp -- !10.200.0.0/16 10.32.0.133 /* management-ui/management-ui: cluster IP */ tcp dpt:9001
KUBE-SVC-MIYW5L3VT4JVLCIZ tcp -- anywhere 10.32.0.133 /* management-ui/management-ui: cluster IP */ tcp dpt:9001
有趣的是,我可以从任何工作节点访问服务IP
root@kubem1:/tmp# kubectl get svc -n management-ui
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
management-ui NodePort 10.32.0.133 <none> 9001:30002/TCP 52m
如果我信任kubectl,工作节点看起来很正常
root@kubem1:/tmp# kubectl get nodes -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
kuben1 Ready <none> 39d v1.13.0 192.168.178.77 <none> Ubuntu 18.04.2 LTS 4.15.0-46-generic docker://18.9.3
kuben2 Ready <none> 39d v1.13.0 192.168.178.78 <none> Ubuntu 18.04.2 LTS 4.15.0-46-generic docker://18.9.3
kuben3 Ready <none> 39d v1.13.0 192.168.178.79 <none> Ubuntu 18.04.2 LTS 4.15.0-46-generic docker://18.9.3
我已经找到了解决“问题”的方法。
此行为是由Docker v1.13.x中的更改引起的,该问题在kubernetes版本1.8中得到了修复 简单的解决方案是通过iptables更改转发规则。
在所有工作节点上运行以下cmd:“iptables-A FORWARD-j ACCEPT” 为了解决这个问题,我必须告诉库贝代理苹果酒的豆荚。 可通过两种方式解决的理论问题:
- 将“-cluster cidr=10.0.0.0/16”作为参数添加到kube代理命令行(在我的示例中,添加到systemd服务文件中)
- 将'clusterCIDR:'10.0.0.0/16''添加到kube代理的kubeconfig文件中
当我将该行添加到我的kubeconfig文件并在所有工作节点上重新启动kube代理时,一切正常
以下是此“转发”问题的github合并请求:我已找到解决“问题”的方法。
此行为是由Docker v1.13.x中的更改引起的,该问题在kubernetes版本1.8中得到了修复 简单的解决方案是通过iptables更改转发规则。
在所有工作节点上运行以下cmd:“iptables-A FORWARD-j ACCEPT” 为了解决这个问题,我必须告诉库贝代理苹果酒的豆荚。 可通过两种方式解决的理论问题:
- 将“-cluster cidr=10.0.0.0/16”作为参数添加到kube代理命令行(在我的示例中,添加到systemd服务文件中)
- 将'clusterCIDR:'10.0.0.0/16''添加到kube代理的kubeconfig文件中
当我将该行添加到我的kubeconfig文件并在所有工作节点上重新启动kube代理时,一切正常
这是这个“转发”问题的github合并请求:共享kubectl get po-n kube系统的输出我已经添加了“kubectl get po-n kube系统”的输出@PEkambaram:我想我已经找到了错误,但还不是一个好的解决方案。。。如果我允许使用下面的cmd“iptables-A FORWARD-j ACCEPT”进行转发,那么一切都很好。这是docker版本更新版1.13.x的一个错误,应该在k8s版本1.8中修复。我用“-cluster cidr=10.105.0.0/24”配置了kube代理,但它对我的问题没有任何影响…是的,我也在kubectl get po-n kube系统的Docker 1.13共享输出中遇到了这个问题。我添加了“kubectl get po-n kube系统”的输出@PEkambaram:我想我已经找到了错误,但还不是一个好的解决方案。。。如果我允许使用下面的cmd“iptables-A FORWARD-j ACCEPT”进行转发,那么一切都很好。这是docker版本更新版1.13.x的一个错误,应该在k8s版本1.8中修复。我已经用“-cluster cidr=10.105.0.0/24”配置了kube代理,但它对我的问题没有任何影响…是的,我也在Docker 1.13中遇到了这个问题
root@kubem1:/tmp# kubectl get nodes -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
kuben1 Ready <none> 39d v1.13.0 192.168.178.77 <none> Ubuntu 18.04.2 LTS 4.15.0-46-generic docker://18.9.3
kuben2 Ready <none> 39d v1.13.0 192.168.178.78 <none> Ubuntu 18.04.2 LTS 4.15.0-46-generic docker://18.9.3
kuben3 Ready <none> 39d v1.13.0 192.168.178.79 <none> Ubuntu 18.04.2 LTS 4.15.0-46-generic docker://18.9.3
root@kubem1:/tmp# kubectl get po -n kube-system
NAME READY STATUS RESTARTS AGE
calico-node-bgjdg 1/1 Running 5 40d
calico-node-nwkqw 1/1 Running 5 40d
calico-node-vrwn4 1/1 Running 5 40d
coredns-69cbb76ff8-fpssw 1/1 Running 5 40d
coredns-69cbb76ff8-tm6r8 1/1 Running 5 40d
kubernetes-dashboard-57df4db6b-2xrmb 1/1 Running 5 40d