与Kubernetes和Flannel进行Pod-to-service通信

时间:2016-12-19 07:12:27

标签: kubernetes flannel

我最近建立了一个多机器Kubernetes集群,带有Docker和Flannel。我在子网172.16.0.0/24上设置了Flannel,以便主机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_HOST172.16.0.0/16子网上的随机IP。要明确的是,如果我在Redis容器中运行ifconfig并获取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

我不确定上面的旗帜是如何与法兰绒一起工作的,但是我尝试了很多东西,而且我无法获得任何工作。关于这些事情如何运作的一些解释将是一个很大的帮助。感谢。

1 个答案:

答案 0 :(得分:1)

所以,在玩完并阅读更多问题后,我发现我根本没有问题。从这里https://github.com/kubernetes/kubernetes/issues/7996,我了解到ping服务并没有做任何事情。到目前为止我还没有真正尝试连接到该服务,但我做到了,并且有效。

上面,我使用了172.16.0.0/16的CIDR,这是Flannel的子网。那是错的,它实际上应该是与Flannel的子网不重叠的东西。我将验证所有这些,并确保它适用于多个节点。