I have a CoreFile configutation like this
.:53 { errors health { lameduck 5s } ready kubernetes cluster.local in-addr.arpa ip6.arpa { pods insecure fallthrough in-addr.arpa ip6.arpa ttl 30 } prometheus :9153 forward . /etc/resolv.conf { max_concurrent 1000 } cache 30 loop reload loadbalance } I would like all my pods to be able to resolve myapi.local to a specific IP ( 192.168.49.2 ) Is there any easy way to achieve this like the what I can do with OS's host file
2 Answers
Below configuration should do the trick
.:53 { errors health ready kubernetes cluster.local in-addr.arpa ip6.arpa { pods insecure fallthrough in-addr.arpa ip6.arpa } prometheus :9153 hosts custom.hosts myapi.local { 192.168.49.2 myapi.local fallthrough } forward . 8.8.8.8 8.8.4.4 cache 30 loop reload loadbalance } Or you can try using the hosts plugin
1If you didn't want to resolve the entry with coredns the method there is a method for setting entries in specific pod's host files which would mirror having /etc/hosts set on a node:
apiVersion: v1 kind: Pod metadata: name: hostaliases-pod spec: restartPolicy: Never hostAliases: - ip: "127.0.0.1" hostnames: - "foo.local" - "bar.local" - ip: "10.1.2.3" hostnames: - "foo.remote" - "bar.remote" containers: - name: cat-hosts image: busybox command: - cat args: - "/etc/hosts"