有时候我经常会遇到配置host的需求,即不在云端配置域名解析,而是本地直接配置host绑定域名与ip关系,而在k8s环境中pod由k8s进行编排,pod时常会因某些原因而销毁重启,在k8s环境中如何配置host呢?我们可以通过k8s的coredns来配置域名与ip绑定关系。
🔧 配置CoreDNS
找到命名空间kube-system的ConfigMap:coredns
kind: ConfigMap
apiVersion: v1
metadata:
name: coredns
namespace: kube-system
data:
Corefile: |
.:53 {
errors
health {
lameduck 5s
}
ready
kubernetes cluster.local in-addr.arpa ip6.arpa {
pods insecure
fallthrough in-addr.arpa ip6.arpa
ttl 30
}
hosts {
10.10.0.101 www.example.com
fallthrough
}
prometheus :9153
forward . /etc/resolv.conf {
max_concurrent 1000
}
cache 30
loop
reload
loadbalance
}
📝 添加域名映射
参考如上示例,在hosts下添加:
10.10.0.101 www.example.com
🔄 应用配置
修改完成后,需要重启CoreDNS使配置生效:
kubectl rollout restart deployment/coredns -n kube-system
✅ 验证配置
创建测试Pod验证DNS解析:
kubectl run test-dns --image=busybox --rm -it -- nslookup www.example.com
通过这种方式,可以为整个Kubernetes集群的所有Pod统一配置域名解析,实现类似hosts文件的功能。