我最近建立了一个带有 Docker 和 Flannel 的多机 Kubernetes 集群。我已经在子网上设置了 Flannel,172.16.0.0/24
这样主机 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
它是子网上的随机 IP 172.16.0.0/16
。需要明确的是,如果我运行ifconfig
并获取eth0
Redis 容器中的 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 结合使用,但我尝试了很多东西,但我无法得到任何工作。关于这些事情如何工作的一些解释将是一个很大的帮助。谢谢。