There are two means by which services are visible from within your Pods. The first is through environment variables that are added to all Pods in the same namespace as the service.
When you add a service (using kubectl create
, or kubectl apply
), the service is registered within Kubernetes and thereafter any Pods that are started will get environment variables set that reference the services. For example, if we created the preceding first example service, and then ran:
kubectl get services
We would see the service listed:
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE flask 10.0.0.61 <none> 80/TCP 2d kubernetes 10.0.0.1 <none> 443/TCP 5d
If you looked inside that container, you would see environment variables associated with both services listed previously. Those environment variables are:
env
KUBERNETES_PORT=tcp://10.0.0.1:443 KUBERNETES_SERVICE_PORT=443 KUBERNETES_PORT_443_TCP_ADDR=10.0.0.1...