如何修复AKS中处于CrashLoopBackOff状态的CoreDNS部署?
AKS集群CoreDNS及自动扩缩容Pod CrashLoopBackOff排查方案
先抓取Pod日志定位具体错误
- 查看CoreDNS Pod日志:
kubectl logs -n kube-system <你的coredns-pod名称> - 查看自动扩缩容Pod日志:
kubectl logs -n kube-system <你的coredns-autoscaler-pod名称> - 重点关注日志里的权限报错、配置语法错误、资源不足提示、DNS解析循环等关键信息
- 查看CoreDNS Pod日志:
检查CoreDNS配置是否异常
- 导出ConfigMap查看:
kubectl get configmap coredns -n kube-system -o yaml - 核对
Corefile里的配置项,比如forward块的上游DNS是否能正常访问,自定义插件是否存在冲突
- 导出ConfigMap查看:
验证集群DNS服务及端点状态
- 检查kube-dns Service状态:
kubectl get service kube-dns -n kube-system - 确认端点关联正常:
kubectl get endpoints kube-dns -n kube-system,如果端点为空或异常,说明Pod未正确注册
- 检查kube-dns Service状态:
排查节点资源与调度问题
- 查看节点资源使用情况:
kubectl describe nodes,确认是否有节点内存/CPU耗尽 - 查看Pod调度详情:
kubectl describe pod <coredns-pod名称> -n kube-system,检查是否有节点污点、亲和性配置导致Pod无法正常启动
- 查看节点资源使用情况:
检查CoreDNS自动扩缩容配置与权限
- 导出Deployment配置:
kubectl get deployment coredns-autoscaler -n kube-system -o yaml,核对DNS_SERVERS、SCALE_TARGET等环境变量是否正确 - 验证RBAC权限:
kubectl get clusterrolebinding coredns-autoscaler -o yaml,确认autoscaler有足够权限访问集群资源
- 导出Deployment配置:
核对AKS与CoreDNS版本兼容性
- 查看AKS集群版本:
az aks show -g <资源组名> -n <集群名> --query kubernetesVersion - 对照Azure官方兼容规则,确认当前AKS版本对应的CoreDNS版本是否匹配,版本不兼容可能导致启动失败
- 查看AKS集群版本:
重置CoreDNS配置(仅在确认配置异常时操作)
- 先备份现有配置:
kubectl get configmap coredns -n kube-system -o yaml > coredns-backup.yaml - 恢复AKS默认CoreDNS配置(根据集群版本调整默认内容),然后重启CoreDNS部署:
kubectl rollout restart deployment coredns -n kube-system
- 先备份现有配置:
内容的提问来源于stack exchange,提问作者Teak
相关产品推荐
相关产品推荐

