0

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

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

问题

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

我相当肯定这是一个配置问题,但这里有一些我为每个服务设置的标志:

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 结合使用,但我尝试了很多东西,但我无法得到任何工作。关于这些事情如何工作的一些解释将是一个很大的帮助。谢谢。

4

1 回答 1

1

因此,在玩耍并阅读了更多问题之后,我发现我根本没有问题。从这里https://github.com/kubernetes/kubernetes/issues/7996,我了解到 ping 服务不会做任何事情。到目前为止,我实际上还没有尝试连接到该服务,但我尝试了,并且它有效。

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

于 2016-12-19T09:31:07.010 回答