一、进入pod可以访问IP,不能访问域名
bash-5.0# ping www.baidu.com ping: bad address 'www.baidu.com
二、进入目标pod容器,查看/etc/resolv.conf
bash-5.0# cat /etc/resolv.conf nameserver 10.96.0.10 search hl95-notary.svc.master69.kubernetes.blockchain.hl95.com svc.master69.kubernetes.blockchain.hl95.com master69.kubernetes.blockchain.hl95.com hlqxt options ndots:5
可以看到dns服务器IP为0.96.0.10,我们查看下系统的coredns pod容器信息
[root@redis-03 kubernetes]# kubectl get pods -n kube-system -o wide |grep coredns coredns-66bff467f8-6w5j5 1/1 Running 0 3d20h 10.244.3.9 redis-03.hlqxt <none> <none> coredns-66bff467f8-h2zgp 1/1 Running 0 3d20h 10.244.4.9 redis-02.hlqxt <none> <none>
可以看到两个coredns pod位于两个node节点上,并且状态是running,正常
我们再进一步查看dns service信息
[root@redis-03 kubernetes]# kubectl get svc -n kube-system -o wide NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP,9153/TCP 5d2h k8s-app=kube-dns
kube-dns服务的IP正是10.96.0.10,这样我们知道了pod是通过kube-dns 服务来解析域名的,现在的问题是POD无法与kube-dns通信呢?还是coredns本身域名解析有问题呢,我们需要进一步来确认kube-dns 服务后端正确绑定了coredns容器,我们查看endpoint来确认
[root@redis-03 kubernetes]# kubectl get endpoints -n kube-system -o wide|grep kube-dns kube-dns 10.244.3.9:53,10.244.4.9:53,10.244.3.9:9153 + 3 more... 5d2h [root@redis-03 kubernetes]#
可以看到kube-dns后端正确的绑定了两个coredns pod的IP。
我们再将目标pod中的nameserver 的ip地址改为coredns pod的IP地址,绕过kube-dns服务,直接与coredns pod通信
bash-5.0# cat /etc/resolv.conf nameserver 10.244.3.9 #nameserver 10.96.0.10 search hl95-notary.svc.master69.kubernetes.blockchain.hl95.com svc.master69.kubernetes.blockchain.hl95.com master69.kubernetes.blockchain.hl95.com hlqxt options ndots:5
10.244.3.9:为coredns pod其中一个的IP
再执行ping
bash-5.0# ping www.baidu.com PING www.baidu.com (110.242.68.3): 56 data bytes 64 bytes from 110.242.68.3: seq=0 ttl=50 time=9.281 ms 64 bytes from 110.242.68.3: seq=1 ttl=50 time=9.296 ms 64 bytes from 110.242.68.3: seq=2 ttl=50 time=9.203 ms 64 bytes from 110.242.68.3: seq=3 ttl=50 time=9.233 ms 64 bytes from 110.242.68.3: seq=4 ttl=50 time=9.241 ms 64 bytes from 110.242.68.3: seq=5 ttl=50 time=9.259 ms 64 bytes from 110.242.68.3: seq=6 ttl=50 time=9.270 ms 64 bytes from 110.242.68.3: seq=7 ttl=50 time=9.342 ms
可以看到域名解析成功
说明coredns pod工作是正常的,应用目标pod也是工作正常的问题出在kube-dns服务与coredns节点通信上,服务与pod之间通信是通过kube-proxy实现
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
2020-06-30 centos安装kafka集群