You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pod无法解析Kubernetes DNS:如何让Pod使用CoreDNS集群IP?

clusterDNS:

  • 10.96.0.10
    ...
### Flannel
使用默认配置部署

### 集群状态
集群运行正常,包含以下组件Pod:
- coredns
- etcd
- apiserver
- controller-manager
- flannel
- scheduler
仅单主节点且可调度。

### 测试Pod创建命令
```bash
kubectl run -it --rm --restart=Never --image=infoblox/dnstools:latest dnstools

测试结果

  1. 直接解析默认域名
nslookup kubernetes.default

输出:;; connection timed out; no servers could be reached

  1. 指定CoreDNS集群IP解析
nslookup kubernetes.default 10.96.0.10

输出:;; connection timed out; no servers could be reached

  1. 指定CoreDNS端点IP解析
nslookup kubernetes.default 10.244.0.222

输出:成功解析,Address: 10.96.0.1

  1. ping Kubernetes服务集群IP
ping 10.96.0.1

输出:全部丢包

  1. ping CoreDNS集群IP
ping 10.96.0.10

输出:全部丢包

  1. ping CoreDNS端点IP
ping 10.244.0.222

输出:全部接收成功

问题背景

集群更新时,重新部署了默认配置的kube-flannel和CoreDNS,同时卸载了kube-proxy。不清楚kube-proxy是否为必需组件,或Flannel能否替代它。尝试重新安装kube-proxy失败,报错:

could not fetch a Kubernetes version from the internet: unable to get URL "https://dl.k8s.io/release/stable-1.txt":

解决方案

1. 问题根源

kube-proxy是Kubernetes核心必需组件,Flannel仅负责实现Pod跨节点网络连通,完全无法替代kube-proxy的功能。kube-proxy的核心职责是维护Service集群IP到后端Pod端点的转发规则,没有它,集群IP(包括CoreDNS的10.96.0.10、Kubernetes服务的10.96.0.1)无法映射到实际Pod,导致流量无法送达。

2. 重新安装kube-proxy

(1)手动指定版本安装

由于自动拉取稳定版本失败,先查看当前集群版本:

kubectl version --short

根据获取到的版本号,从Kubernetes官方资源中找到对应版本的kube-proxy部署yaml文件,下载后执行部署:

kubectl apply -f kube-proxy.yaml

或者使用kubeadm重新部署:

# 导出当前集群配置
kubeadm config view > kubeadm-config.yaml
# 部署kube-proxy组件
kubeadm init phase addon kube-proxy --config=kubeadm-config.yaml

(2)验证运行状态

安装完成后,检查kube-proxy Pod是否正常运行:

kubectl get pods -n kube-system -l k8s-app=kube-proxy

确保所有Pod处于Running状态。

3. 验证修复效果

重新进入测试Pod,执行以下命令确认:

nslookup kubernetes.default
ping 10.96.0.10

此时应能正常解析域名,且ping集群IP无丢包。


内容的提问来源于stack exchange,提问作者mlokos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 19:53:14