当前位置: 首页 > news >正文

【Kubernetes】Pod无法访问Service域名问题排查

背景

部署过多套k8s集群,发现在其中一套k8s环境中,在Pod内无法访问Service Name,访问了很多次,偶尔又能通,使用ServiceIP能正常访问,域名解析的问题基本确定与CoreDNS有关系,于是开始了一系列的排查之路。

使用busybox工具测试网络

  • 创建busyboxPod
kubectl apply -f-<<EOF
apiVersion: v1
kind: Pod
metadata:name: busybox
spec:containers:- name: busyboximage: busybox-curl:latestimagePullPolicy: IfNotPresentcommand: ["sleep","3600"]
EOF
  • 进入busyboxPod
kubectl exec busybox -it -- sh
  • 查看nameserver
/home # cat /etc/resolv.conf
  • 显示如下
nameserver 10.43.0.10
search default.svc.cluster.local svc.cluster.local cluster.local
options ndots:5
  • 修改nameserverCoreDNSPodIP,进行逐个测试
  • 先查看CoreDNS所有的Pod的IP
kubectl get pods --namespace=kube-system -l k8s-app=kube-dns -o wide

看到的列表如下

NAME                       READY   STATUS        RESTARTS   AGE     IP              NODE      NOMINATED NODE   READINESS GATES
coredns-95dcf6b48-9vxtq    1/1     Running       0          4h52m   10.42.168.201   xxx1   <none>           <none>
coredns-95dcf6b48-lcqmt    1/1     Running       0          18h     10.42.166.89    xxx2   <none>           <none>
coredns-95dcf6b48-nwp8z    1/1     Running       0          28m     10.42.204.47    xxx3   <none>           <none>
  • 按如下逐个修改resolv.conf进入测试
nameserver 10.42.204.47
#nameserver 10.42.166.89
#nameserver 10.42.168.201
#nameserver 10.43.0.10
search default.svc.cluster.local svc.cluster.local cluster.local
options ndots:5
  • 每次修改一次nameserver,就使用命令nslookup Service-Name,也可以使用pingcurl命令访问Service域名

CoreDNS测试结果

经过测试后,发现其中一个Pod无法正常做域名解析,其它Pod均能正常解析Service域名

解决办法

  • 删除无法正常工作的Pod
kubectl delete pod coredns-95dcf6b48-9vxtq
  • 立马会重新启动一个新Pod,查看IP
  • 放到busyboxresolv.conf进行测试,工作正常

参考资料

  • K8S中Pod通过域名访问Service失败,提示bad address
http://www.lryc.cn/news/352576.html

相关文章:

  • 【JAVA基础之网络编程】UDP和TCP协议以及三次握手和四次挥手的过程
  • 基于python+Django大数据的电影市场预测分析系统设计与实现
  • 消息传递与集成:使用Springboot进行异步通信
  • 【论文速读】Transformer:Attention Is All You Need
  • 小短片创作-组装场景(一)
  • 二元关系表示
  • Android Audio基础——AudioFlinger音频流管理(八)
  • 二进制部署k8s集群 部署高可用master节点
  • linux创建私有docker仓库以及推拉
  • 如何将照片从 iPhone 传输到闪存驱动器【无质量损坏】
  • 【MySQL精通之路】InnoDB(7)-锁和事务模型(2)-事务模型
  • python中的可哈希和不可哈希
  • docker命令详解大全
  • 体检系统商业源码,C/S架构的医院体检系统源码,大型健康体检中心管理系统源码
  • Vue CLI 的服务介绍与使用(2024-05-20)
  • java连接ldap实现查询
  • openjudge_2.5基本算法之搜索_2990:符号三角形
  • springboot错误
  • linux的用户管理
  • 数美滑块研究
  • 【GESP试卷】2024年03月Scratch四级试卷
  • 每日一题《leetcode--398.随机数索引》
  • 【MySQL精通之路】MySQL的使用(9)-设置环境变量
  • JDBC(Java DataBase Connectivity)Java数据库连接
  • 1.Redis之初识Redis分布式系统
  • 基于SpringBoot的网盘系统设计与实现
  • 【C++初阶】vector
  • elasticsearch 和 RediSerch
  • 删除MySQL中所有表的外键
  • webstorm新建vue项目相关问题