I was following this kubernetes tutorial in order to set up a
DNS service and connect together two separate
kubernetes pods. The one, which should serve as a gateway, is listening on port 80, the other one on port 90.
When I use their Node IP,
curl 10.32.0.24 and
curl 10.32.0.25:90 I can reach them. Nevertheless I can't figure out, how to access them via my DNS service. What the
URL will be?
default and this is the result of
Kubernetes master is running at IP_OF_MY_SERVER:6443 KubeDNS is running at IP_OF_MY_SERVER:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy My
deployment.yaml is almost the same as in the tutorial:
apiVersion: v1 kind: Service metadata: name: default-subdomain spec: selector: name: busybox clusterIP: None ports: - name: foo # Actually, no port is needed. port: 80 targetPort: 80 --- apiVersion: v1 kind: Pod metadata: name: busybox1 labels: name: busybox spec: hostname: busybox-1 subdomain: default-subdomain containers: - image: time-provider name: busybox --- apiVersion: v1 kind: Pod metadata: name: busybox2 labels: name: busybox spec: hostname: busybox-2 subdomain: default-subdomain containers: - image: gateway name: busybox
The Kubernetes DNS service works inside a cluster and provide DNS names for pods, not for external services.
Here is an extract from the instruction you used:
Every Service defined in the cluster (including the DNS server itself) is assigned a DNS name. By default, a client Pod’s DNS search list will include the Pod’s own namespace and the cluster’s default domain. This is best illustrated by example:
Assume a Service named
fooin the Kubernetes namespace
bar. A Pod running in namespace
barcan look up this service by simply doing a DNS query for
foo. A Pod running in namespace
quuxcan look up this service by doing a DNS query for
So, the DNS names of your resources inside a cluster exist only in it.
You call to the service from the external network by NodeIPs :
curl 10.32.0.24 and
curl 10.32.0.25:90. And that is a correct way. If you want to use a DNS names to connect to the cluster from outside, you should use any other DNS service to point names to your cluster nodes or LoadBalancer.