在Kubernetes中自定义域名解析
有时候需要在k8s容器中给一些主机名做一下域名解析指向某一个IP地址,一般想到的都是在容器中的/etc/hosts添加配置,但这种方法不够智能,修改一次就要重新创建一个镜像,非常麻烦。
这里有两种方便设置的方法:
一种是用hostAliases
在yaml中的spec块中添加一个hostAliases,然后根据格式写上IP地址和想要解析的域名。
.......
spec:
hostAliases:
- ip: "172.11.0.23"
hostnames:
- pre.itbing.local
......
这样就会把pre.itbing.local解析到172.11.0.23。 hostAliases的机制是会把这个域名解析添加进容器中的/etc/hosts。
一种是在coreDNS添加
# kubectl -n kube-system edit configmap coredns
......
.:53 {
errors
health
kubernetes cluster.local in-addr.arpa ip6.arpa {
pods insecure
upstream
fallthrough in-addr.arpa ip6.arpa
}
hosts {
172.11.0.23 pre.itbing.local
fallthrough
}
prometheus :9153
proxy . /etc/resolv.conf
cache 30
loop
reload
loadbalance
}
.......
添加这部分内容: hosts { 172.11.0.23 pre.itbing.local fallthrough }
一个适合局部生效,一个适合全局生效。