我最近建立了一个多机器Kubernetes集群,带有Docker和Flannel。我在子网172.16.0.0/24
上设置了Flannel,以便主机A上具有分配IP 172.16.78.2
的容器可以ping主机B上的容器,并且分配的IP为172.16.74.2
。
我让Kubernetes设置了所有各种组件(kubelet
,kube-proxy
kube-apiserver
,kube-scheduler
,kube-controller-manager
),我可以成功启动部署和群集周围的pod。
我将Redis服务和我的webapp pod部署到群集上。在我的webapp pod上,设置了环境变量REDIS_SERVICE_HOST
和REDIS_SERVICE_PORT
,但REDIS_SERVICE_HOST
是172.16.0.0/16
子网上的随机IP。要明确的是,如果我在Redis容器中运行ifconfig
并获取eth0
的IP地址,我可以从我的webapp pod中ping它。但不是分配给REDIS_SERVICE_HOST
的IP地址。
我相当确定这是一个配置问题,但这里有一些我为每项服务设置的标志:
--cluster-cidr 172.16.0.0/16
--service-cluster-ip-range=172.16.0.0/16
--cluster-cidr=172.16.0.0/16
--service-cluster-ip-range=172.16.0.0/16
我不确定上面的旗帜是如何与法兰绒一起工作的,但是我尝试了很多东西,而且我无法获得任何工作。关于这些事情如何运作的一些解释将是一个很大的帮助。感谢。
答案 0 :(得分:1)
所以,在玩完并阅读更多问题后,我发现我根本没有问题。从这里https://github.com/kubernetes/kubernetes/issues/7996,我了解到ping服务并没有做任何事情。到目前为止我还没有真正尝试连接到该服务,但我做到了,并且有效。
上面,我使用了172.16.0.0/16
的CIDR,这是Flannel的子网。那是错的,它实际上应该是与Flannel的子网不重叠的东西。我将验证所有这些,并确保它适用于多个节点。