I have recently set up a multi-machine Kubernetes cluster w/ Docker and Flannel. I have set up Flannel on a subnet 172.16.0.0/24
such that a container on host A with an assigned IP of 172.16.78.2
can ping a container on host B with an assigned IP of 172.16.74.2
.
I have Kubernetes set up with all of its various components (kubelet
, kube-proxy
kube-apiserver
, kube-scheduler
, kube-controller-manager
) and I can successfully launch deployments and pods around the cluster.
Problem
I deployed a Redis service and my webapp pod onto the cluster. On my webapp pod, the environmental variables REDIS_SERVICE_HOST
and REDIS_SERVICE_PORT
are set, but REDIS_SERVICE_HOST
is a random IP on the 172.16.0.0/16
subnet. To be clear, if I run ifconfig
and get the IP address for eth0
in the Redis container, I can ping that from my webapp pod. But not the IP address assigned to REDIS_SERVICE_HOST
.
I'm fairly certain this is a configuration problem, but here are some flags I'm setting for each service:
kube-proxy arguments
--cluster-cidr 172.16.0.0/16
kube-apiserver arguments
--service-cluster-ip-range=172.16.0.0/16
kube-controller-manager arguments
--cluster-cidr=172.16.0.0/16
--service-cluster-ip-range=172.16.0.0/16
I'm not really sure how the above flags work in conjunction to Flannel, but I tried a lot of things, and I couldn't get anything to work. Some explanation on how these things work would be a great help. Thanks.