Make pod DNS name resolvable in Kubernetes cluster

旧巷老猫 提交于 2019-12-24 03:27:44

问题


Setup

The pods of the deployment named frontend are exposed via a service named frontend.

NAME                          READY     STATUS    RESTARTS   AGE
po/frontend-b48b88789-dcxs6   1/1       Running   0          2h

NAME              DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
deploy/frontend   1         1         1            1           2h

NAME           TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)   AGE
svc/frontend   ClusterIP   10.106.243.125   <none>        80/TCP    2h

Problem

Querying via busybox the DNS name for the service frontend returns the services ip address. Querying via busybox the DNS name for the pod frontend-b48b88789-dcxs6 doesn't resolve.

/ # nslookup frontend
Server:    10.96.0.10
Address 1: 10.96.0.10 kube-dns.kube-system.svc.cluster.local

Name:      frontend
Address 1: 10.106.243.125 frontend.exam.svc.cluster.local
/ # nslookup frontend-b48b88789-dcxs6
Server:    10.96.0.10
Address 1: 10.96.0.10 kube-dns.kube-system.svc.cluster.local

nslookup: can't resolve 'frontend-b48b88789-dcxs6'

Question

What do I have to do to make a pod resolvable via the Kubernetes clusters DNS system?

Sources I have been looking for an answer

  • https://kubernetes.io/docs/tasks/administer-cluster/dns-custom-nameservers/
  • https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/

回答1:


I think that if you really need this, then what you actually might be interested in is StatefulSet which provides a somewhat static way of referencing to the pods that are spinned up by it. With StatefulSet, your pods will have a predictable name like myapp-0, myapp-1 etc. and you will be able to resolve them as ie. myapp-0.mysvc (where mysvc is a "governing" service for the statefulset)

Predictable names allow for easier configuration of things that need to form a cluster, plus you get other gains like sequential scaling, mapping of persistent storage or ability to create services that always hit given pod (as in pod number N) of the StatefulSet meaning you are for example capable of creating a myapp-0 service that always points to a myapp-0.mysvc pod.



来源:https://stackoverflow.com/questions/48261375/make-pod-dns-name-resolvable-in-kubernetes-cluster

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!