【问题标题】:Pod-to-service communication with Kubernetes and Flannel使用 Kubernetes 和 Flannel 进行 Pod 到服务的通信
【发布时间】:2017-05-04 04:52:51
【问题描述】:

我最近建立了一个带有 Docker 和 Flannel 的多机 Kubernetes 集群。我在子网172.16.0.0/24 上设置了Flannel,这样主机A 上分配IP 为172.16.78.2 的容器可以ping 主机B 上分配IP 为172.16.74.2 的容器。

我已经设置了 Kubernetes 及其所有各种组件(kubeletkube-proxykube-apiserverkube-schedulerkube-controller-manager),我可以成功地在集群周围启动部署和 Pod。

问题

我在集群上部署了一个 Redis 服务和我的 webapp pod。在我的 webapp pod 上,设置了环境变量 REDIS_SERVICE_HOSTREDIS_SERVICE_PORT,但 REDIS_SERVICE_HOST172.16.0.0/16 子网上的随机 IP。需要明确的是,如果我运行 ifconfig 并在 Redis 容器中获取 eth0 的 IP 地址,我可以从我的 webapp pod ping 通它。但不是分配给REDIS_SERVICE_HOST的IP地址。

我很确定这是一个配置问题,但这里是我为每个服务设置的一些标志:

kube-proxy 参数

  • --cluster-cidr 172.16.0.0/16

kube-apiserver 参数

  • --service-cluster-ip-range=172.16.0.0/16

kube-controller-manager 参数

  • --cluster-cidr=172.16.0.0/16
  • --service-cluster-ip-range=172.16.0.0/16

我不太确定上述标志如何与 Flannel 结合使用,但我尝试了很多东西,但都无法正常工作。关于这些事情如何工作的一些解释将是一个很大的帮助。谢谢。

【问题讨论】:

    标签: kubernetes flannel


    【解决方案1】:

    所以,在玩耍并阅读了更多问题之后,我发现我根本没有问题。从这里https://github.com/kubernetes/kubernetes/issues/7996,我了解到ping 服务没有任何作用。到目前为止,我实际上还没有尝试连接到该服务,但我尝试了,并且成功了。

    在上面,我使用了172.16.0.0/16 的 CIDR,即 Flannel 子网。这是错误的,它实际上应该是不与 Flannel 的子网重叠的东西。我将验证所有这些并确保它可以跨多个节点运行。

    【讨论】:

      猜你喜欢
      • 2020-05-14
      • 2022-11-24
      • 2019-07-27
      • 2016-03-25
      • 2020-04-20
      • 2017-05-04
      • 1970-01-01
      • 1970-01-01
      • 2019-06-21
      相关资源
      最近更新 更多