内容纲要
概要描述
本文描述客户希望在TDC集群内pod可以访问集群外的域名,或者通过节点的hostname通信,通过配置coredns的corefile的解决方案
详细描述
实验背景
本文以TDC341为例,需求ping 通ts.transwarp.club 实际ip地址为172.22.0.151
未修改之前的状态,ping通ip但是无法ping通hostname
备份配置
以防修改过程中操作失误,可以先备份下配置信息:
kubectl get cm -n kube-system coredns-coredns -oyaml > coredns-bak.yaml
恢复命令
kubectl apply -f coredns-bak.yaml
修改coredns-coredns的configmap
根据集群外域名的类型(域名是否以配置列表中的公网的后缀结尾)将 hosts 配置加在对应的配置段中
kubectl edit cm coredns-coredns -n kube-system
注意:可以多个IP对应一个域名,解析的时候会轮询这些IP地址
重启coredns(可选)
如果coredns-coredns的configmap里有reload插件(tcos-3.0及之后版本都包含该插件了),上面的配置会在2分钟后自动生效,不需要额外再重启coredns。
如果没有该插件(旧版本),需要手动滚动重启coredns的pod。
如果手动重启,单次只能重启一个 pod,在一个 pod running 后再触发下一个 pod 的创建,如果三个副本全部挂掉,无法提供集群内的域名解析服务,会导致一段时间内集群或上层应用处于不可用状态。
kubectl delete pod oredns-coredns-85bfc5bcb-xxx -n kube-system