k8s诊断之记一次pod被修改的resolv.conf之bcctools opensnoop

简介: 某用户反馈,pod生产出来之后,/etc/resolv.conf配置不对,缺少search相关条目,导致生产环境内部服务调用时无法解析出现异常

背景信息:
某用户反馈,pod生产出来之后,/etc/resolv.conf配置不对,缺少search相关条目,导致生产环境内部服务调用时无法解析出现异常
异常pod如下图所示:
image.png

正常的pod如下图所示
image.png

缺少search的话,集群内部的域名无法添加集群内的后缀,因此一些内部服务的域名解析会出现问题

问题分析:
首先查看resolv.conf文件的属性,看看是否有人为修改的痕迹,观察change以及modify的属性,二者有时间误差
image.png

新起pod对比查看下,正常的pod二者的误差极低
image.png

文件从何而来?
pod里面的resolv.conf是kubelet生成的,对应在docker的resolvpath路径里面,如下所示
image.png

考虑文件监控,期间尝试了pod内部strace /etc/resolv.conf,pod内部安装bsstools,以及外部监控,然后容器id不同,路径无法提前获知,均不达预期

开启固定调度,节点安装bcctools,使用opensnoop来监控系统内所有文件的变化

/usr/share/bcc/tools/opensnoop -T >> openfile.log 2>&1

TIME(s)       PID    COMM               FD ERR PATH
0.000000000   2994307 AliYunDun          17   0 /var/run/docker/runtime-runc/moby/53b50799e5844b3064fc8a8204c1d4a851114111febded3eb212cf61f00e6dd3/state.json
0.000922000   336715 more                3   0 /usr/lib64/gconv/gconv-modules.cache
0.131681000   2994307 AliYunDun          17   0 /var/log/secure

用户现场的opensnoop监控到的resolv.conf变动,最后一次是kubelet的操作
image.png

确认kubelet修改后,查看kubelet启动参数,发现有自定义配置,自定义的configyaml覆盖了我们的默认配置导致,去除即可:
image.png

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
1月前
|
前端开发 编解码 数据格式
浅谈响应式编程在企业级前端应用 UI 开发中的实践
浅谈响应式编程在企业级前端应用 UI 开发中的实践
24 0
浅谈响应式编程在企业级前端应用 UI 开发中的实践
|
1月前
|
Kubernetes 应用服务中间件 nginx
提升K8S故障排除效率:详解Pod内抓包的高效策略!
提升K8S故障排除效率:详解Pod内抓包的高效策略!
41 0
|
3天前
|
Kubernetes 应用服务中间件 nginx
Kubernetes详解(六)——Pod对象部署和应用
在Kubernetes系列中,本文聚焦Pod对象的部署和管理。首先,通过`kubectl run`命令创建Pod,如`kubectl run pod-test --image=nginx:1.12 --port=80 --replicas=1`。接着,使用`kubectl get deployment`或`kubectl get pods`查看Pod信息,添加`-o wide`参数获取详细详情。然后,利用Pod的IP地址进行访问。最后,用`kubectl delete pods [Pod名]`删除Pod,但因Controller控制器,删除后Pod可能自动重建。了解更多细节,请参阅原文链接。
11 5
|
13天前
|
Kubernetes Perl 容器
在 Kubernetes 中重启 pod 的 3 种方法
【4月更文挑战第25天】
32 1
在 Kubernetes 中重启 pod 的 3 种方法
|
14天前
|
Kubernetes 网络协议 调度
kubernetes最小调度单元pod详解(二)
kubernetes最小调度单元pod详解(二)
|
14天前
|
Kubernetes 应用服务中间件 调度
kubernetes最小调度单元pod详解(一)
kubernetes最小调度单元pod详解(一)
|
1月前
|
Kubernetes 固态存储 调度
Kubernetes节点亲和性分配Pod
Kubernetes节点亲和性分配Pod
33 0
Kubernetes节点亲和性分配Pod
|
1月前
|
存储 Kubernetes 调度
Kubernetes Pod生命周期
Kubernetes Pod生命周期
32 0
Kubernetes Pod生命周期
|
1月前
|
存储 Kubernetes 应用服务中间件
Kubernetes Pod
Kubernetes Pod
91 0
Kubernetes Pod
|
1月前
|
存储 Kubernetes 调度
kubernetes核心技术之Pod知识总结
【4月更文挑战第2天】kubernetes核心技术之Pod知识总结
57 0