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
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
}
Reference https://medium.com/@hjrocha/add-a-custom-host-to-kubernetes-a06472cedccb
Or you can try using the hosts plugin https://coredns.io/plugins/hosts/
If 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"