在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 }

一个适合局部生效,一个适合全局生效。