使用k8s的时候,很多人会有一个这样的需求,不同的域名通过不同的dns服务器来进行解析,k8s中域名解析都是通过coredns来说实现的,要想实现上面的场景,我们只需要在coredns的配置里面给不同的域名配置好上游的dns即可。
下面我们来说说如何在tke和eks集群配置,本次操作是在tke集群配置,eks参考同样的方式配置即可。
1. 获取域名和dns服务器关系
这里比如a.com的域名用1.1.1.1和2.2.2.2解析
b.com这类域名通过3.3.3.3和4.4.4.4解析
2. 修改coredns配置
如果是用kubectl命令操作集群,可以执行如下命令修改kube-system命名空间下的coredns这个configmap
代码语言:javascript复制kubectl edit cm coredns -n kube-system
如果是控制台操作,可以直接编辑yaml
修改方式如下
代码语言:javascript复制apiVersion: v1
data:
Corefile: |2-
.:53 {
template ANY HINFO . {
rcode NXDOMAIN
}
errors
health
kubernetes cluster.local. in-addr.arpa ip6.arpa {
pods insecure
upstream
fallthrough in-addr.arpa ip6.arpa
}
prometheus :9153
forward . /etc/resolv.conf {
prefer_udp
}
cache 30
reload
loadbalance
}
a.com:53 {
errors
cache 30
forward . 1.1.1.1 2.2.2.2
}
b.com:53 {
errors
cache 30
forward . 3.3.3.3 4.4.4.4
}
kind: ConfigMap
metadata:
labels:
addonmanager.kubernetes.io/mode: EnsureExists
name: coredns
namespace: kube-system
这里参考上面的方式加上配置即可,注意加的位置,是和最外层大括号同级,如果你的dns服务器有多个,可以用空格隔开。
3. 重建coredns pod生效
修改保存好coredns的configmap后,删除重建下coredns的pod,然后你到业务容器里面就可以用不通的dns来解析不同域名了。