Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kubernetes 为什么';kube代理将流量路由到另一个工作节点?_Kubernetes_Kube Proxy - Fatal编程技术网

Kubernetes 为什么';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

我已经部署了几个不同的服务,但总是会遇到相同的错误

可以从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 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文件中
在我的例子中,cmd行参数没有任何效果。
当我将该行添加到我的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文件中
在我的例子中,cmd行参数没有任何效果。
当我将该行添加到我的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