【问题标题】:Can not access Cluster Ip with same Node无法使用相同节点访问集群 IP
【发布时间】:2017-07-09 09:00:55
【问题描述】:

我在 CentOS 上部署一个 k8s 集群,版本为 v1.5.1

拥有三个节点:

  • kube-01(master)
  • kube-02
  • kube-03

使用一个名为 Deployment-A 的 Pod 进行部署,Pod ip Pod-A-IP 部署在 kube-03

具有两个名为 Deployment-B 的 Pod 的部署。每个工作节点都有一个 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,好的

似乎从与Service后端相同Node的Pod访问Service会遇到这个问题。


于 2017 年 2 月 20 日星期一 16:22:47 CST 更新

我在Pod-B-03上捕获了network traffic

  • 10.244.1.10Pod-B-03 的 pod ip
  • 10.107.25.245Service-A-IP
  • 10.244.1.2Pod-A-IP

我正在使用法兰绒。我建议法兰绒有问题?

【问题讨论】:

    标签: kubernetes flannel


    【解决方案1】:

    如果我没记错的话,你描述的问题是我过去遇到的问题……但是我遇到了许多网络问题,有许多不同的错误来源。如果确实是同一个问题,那么可能将 net.bridge.bridge-nf-call-iptablesnet.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,...)、您使用哪种云(或裸机?)以及您使用哪种网络解决方案的附加信息,那就太好了选择(weave、calico、基于云服务提供商,...)

    查看iptables -L -t nat 的输出和 kube-proxy 日志也可能会有所帮助,因为大多数与服务相关的问题都可以使用此信息进行调试。

    编辑我刚刚发现了 Kubernetes 问题,我从中获得了这个解决方案:https://github.com/kubernetes/kubernetes/issues/33798

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多