无法使用同一节点访问集群 Ip
Can not access Cluster Ip with same Node
我正在使用 v1.5.1 版本在 CentOS 上部署 k8s 集群
有三个节点:
kube-01
(硕士)
kube-02
kube-03
部署了一个 pod,名为 Deployment-A
,pod ip Pod-A-IP
,部署在 kube-03
部署了两个 pods,名为 Deployment-B
。每个工作节点都有一个 pod。我们在 kube-02
上调用 Pod-B-02
,在 kube-03
上调用 Pod-B-03
使用类型 NodePort 公开 Deployment-A
,我有一个集群 IP Service-A-IP
Pod-B-02
访问 Service-A-IP
,确定
Pod-B-03
访问Service-A-IP
,超时
kube-02
访问 Service-A-IP
,确定
kube-03
访问 Service-A-IP
,确定
似乎从pods与服务后端在同一个节点访问服务会遇到这个问题。
更新于 2 月 20 日星期一 16:22:47 CST 2017
我在 Pod-B-03
上捕获了 network traffic
10.244.1.10
是Pod-B-03
的pod ip
10.107.25.245
是 Service-A-IP
10.244.1.2
是 Pod-A-IP
我正在使用法兰绒。我说法兰绒有问题?
如果我没记错的话,你描述的问题是我过去遇到过的问题...但是我有很多网络问题,有很多不同的错误源。如果确实是同一个问题,那么将 net.bridge.bridge-nf-call-iptables
和 net.bridge.bridge-nf-call-ip6tables
设置为 1 可能会有所帮助。您可以先在所有主机上尝试此操作:
sysctl -w net.bridge.bridge-nf-call-iptables=1
sysctl -w net.bridge.bridge-nf-call-ip6tables=1
然后在不重启机器的情况下再次检查服务网络。如果这有帮助,请坚持更改为 /etc/sysctl.conf
或 /etc/sysctl.d/
Kubernetes 网络问题往往有无数的错误来源,如果没有足够的信息就很难调试它。如果您能提供一些关于如何设置集群(kube-up、kargo、kops、kubeadm 等)、您使用的云(或 bare-metal?)以及您选择了哪种网络解决方案(编织、印花布、基于云提供商等)
查看 iptables -L -t nat
的输出和 kube-proxy 日志也可能有所帮助,因为大多数与服务相关的问题都可以使用此信息进行调试。
编辑 我刚刚发现了 Kubernetes 问题,我从中得到了这个解决方案:https://github.com/kubernetes/kubernetes/issues/33798
我正在使用 v1.5.1 版本在 CentOS 上部署 k8s 集群
有三个节点:
kube-01
(硕士)kube-02
kube-03
部署了一个 pod,名为 Deployment-A
,pod ip Pod-A-IP
,部署在 kube-03
部署了两个 pods,名为 Deployment-B
。每个工作节点都有一个 pod。我们在 kube-02
上调用 Pod-B-02
,在 kube-03
Pod-B-03
使用类型 NodePort 公开 Deployment-A
,我有一个集群 IP Service-A-IP
Pod-B-02
访问Service-A-IP
,确定Pod-B-03
访问Service-A-IP
,超时kube-02
访问Service-A-IP
,确定kube-03
访问Service-A-IP
,确定
似乎从pods与服务后端在同一个节点访问服务会遇到这个问题。
更新于 2 月 20 日星期一 16:22:47 CST 2017
我在 Pod-B-03
10.244.1.10
是Pod-B-03
的pod ip
10.107.25.245
是Service-A-IP
10.244.1.2
是Pod-A-IP
我正在使用法兰绒。我说法兰绒有问题?
如果我没记错的话,你描述的问题是我过去遇到过的问题...但是我有很多网络问题,有很多不同的错误源。如果确实是同一个问题,那么将 net.bridge.bridge-nf-call-iptables
和 net.bridge.bridge-nf-call-ip6tables
设置为 1 可能会有所帮助。您可以先在所有主机上尝试此操作:
sysctl -w net.bridge.bridge-nf-call-iptables=1
sysctl -w net.bridge.bridge-nf-call-ip6tables=1
然后在不重启机器的情况下再次检查服务网络。如果这有帮助,请坚持更改为 /etc/sysctl.conf
或 /etc/sysctl.d/
Kubernetes 网络问题往往有无数的错误来源,如果没有足够的信息就很难调试它。如果您能提供一些关于如何设置集群(kube-up、kargo、kops、kubeadm 等)、您使用的云(或 bare-metal?)以及您选择了哪种网络解决方案(编织、印花布、基于云提供商等)
查看 iptables -L -t nat
的输出和 kube-proxy 日志也可能有所帮助,因为大多数与服务相关的问题都可以使用此信息进行调试。
编辑 我刚刚发现了 Kubernetes 问题,我从中得到了这个解决方案:https://github.com/kubernetes/kubernetes/issues/33798