本文共 1375 字,大约阅读时间需要 4 分钟。
在开始使用CoreDNS之前,确保你的环境配置正确是关键。某些工具如busybox的nslookup命令可能会给你带来不便。例如,运行以下命令可能会返回错误信息:
kubectl run busybox1 --rm -it --image=docker.io/busybox /bin/sh
如果发现nslookup命令无法正常查询到kubernetes.default,尝试使用更现代化的dig命令进行验证:
kubectl run dig --rm -it --image=docker.io/azukiapp/dig /bin/sh
通过dig命令可以更直观地观察DNS解析情况。
CoreDNS自Kubernetes 1.11版本起正式GA发布,取代了传统的kube-dns,成为Kubernetes生态系统的默认DNS解决方案。CoreDNS支持与Kubernetes服务集成,能够自动处理Cluster Domain和Service CIDR配置。
CoreDNS的配置主要通过ConfigMap进行管理。默认配置文件如下:
# kubectl -n kube-system get configmap coredns -oyamlapiVersion: v1data: Corefile: | .:53 { errors health kubernetes cluster.local in-addr.arpa ip6.arpa { pods insecure upstream fallthrough in-addr.arpa ip6.arpa } prometheus: 9153 proxy . /etc/resolv.conf cache 30 reload } | 项目 | 含义 |
|---|---|
| errors | 记录DNS解析错误信息 |
| health | 提供健康检查端口(http://localhost:8080/health) |
| kubernetes | 自动解析Kubernetes服务域名和IP范围,默认为cluster.local和10.95.0.0/12 |
| prometheus | 启用Prometheus监控(默认端口:9153) |
| proxy | 使用宿主机resolv.conf解析未知域名 |
| cache | DNS缓存时间(30秒) |
| reload | 配置更改后自动重新加载CoreDNS |
确保CoreDNS组件正常运行是验证配置的关键步骤。
kubectl -n kube-system get pods -o wide
kubectl -n kube-system get deployments
转载地址:http://jqrkz.baihongyu.com/