本文为软件测试个人学习笔记,仅用作自我知识沉淀,持续记录工作与学习心得。
最近不少同行问我,测试要不要深入啃K8s?
说实话,不用像运维、开发那样吃透底层原理。我们日常接触K8s,目标很纯粹:看得懂环境状态、能排查简单问题、和开发运维沟通无障碍。只需要掌握平时高频打交道的功能,足够支撑日常测试工作。
结合我自己的工作场景,各个环境独立部署一套服务,不需要来回切换命名空间,日常部署新版本,主要操作就是修改镜像版本号。下面用通俗的话整理一下测试岗位最常用的K8s能力。
1、Namespace(命名空间):环境隔离
Namespace可以理解成集群里独立的“隔间”。
我们公司每个环境都会单独部署一套完整服务,划分独立命名空间实现隔离。各个环境互不干扰,操作的时候找准对应环境的命名空间即可。
因为环境完全独立,日常基本不用频繁跨环境切换,操作时带上 -n 命名空间名称 指向当前测试环境就行。
测试不用掌握创建、删除命名空间,能看懂、操作时指定对应namespace就够用。
2、Pod:真正运行服务的最小单元
Pod就是运行程序的容器实例。
后端服务、定时任务,全部跑在Pod里面。Pod有一个特点:不稳定,重启之后IP会发生变化,无法直接固定调用。
测试日常操作:
1. 查询Pod状态:确认服务是否正常启动(Running/异常崩溃)
2. 查看实时日志,排查接口报错、程序异常(最常用!)
3. 进入Pod内部,执行命令调试、查看目录、测试网络连通性
4. 端口转发:本地电脑直接连通Pod内部服务,方便本地调试接口
很多测试环境不对外开放外网地址,port-forward端口转发就是测试人员调试神器。
3、Deployment:管理Pod的控制器(我日常使用最多)
单纯的Pod一旦销毁,不会自动重建。Deployment就是用来管理一批相同Pod的工具。
我部署新版本测试环境,核心操作就是修改Deployment里面的镜像版本号。
对应测试工作场景:
• 版本发布:更新镜像版本,Deployment自动滚动更新Pod,完成新版本部署;
• 故障自愈:Pod意外崩溃,自动新建实例;
• 扩容缩容:调整实例数量,做性能测试时经常用到;
• 发布失败回滚:新版本测试发现bug,可以回退到上一个稳定镜像版本。
我们不需要手写完整Deployment yaml。重点:会修改镜像版本、看懂当前镜像版本、查看更新记录,发布出问题时,可以快速定位。
4、Service:提供稳定访问地址
前面提到Pod重启IP会变,直接调用很麻烦。Service相当于给一组Pod分配一个固定访问入口,自带简单负载均衡。
简单理解:
Pod是临时出租屋,地址经常变动;Service是固定的邮政地址,不管里面租户怎么换,地址不变。
测试关注点:
集群内部服务之间调用,都是通过Service名称通信。排查服务之间调不通、超时问题,经常需要确认Service配置是否正确。
5、Ingress:对外暴露访问入口
Service大多只能集群内部访问。如果需要办公网访问接口、前端页面,就要依靠Ingress。
我们平时访问测试环境域名,底层都是Ingress做路由转发。
测试常遇到问题:域名打不开、路由规则不对、路径匹配异常,都和Ingress配置相关。
6、ConfigMap & Secret:存放配置文件
ConfigMap:存放普通配置,比如接口地址、功能开关参数;
Secret:存放敏感信息,数据库账号、密钥等,仅做基础加密。
测试场景:
每个环境独立部署,每套环境都会维护专属配置。新版本出现环境表现不一致,很多时候是配置差异导致。
排查问题时,可以查看当前加载的配置内容。
注意:Secret只是轻度加密,不要认为具备极高安全性。
7、日志与事件(排错必备)
两块内容,定位问题非常关键:
1. Pod日志:程序自身打印业务日志,接口报错、异常堆栈基本都在这里;
2. describe查看事件:Pod启动失败、镜像拉不下来、资源不足、健康检查失败,事件里面会记录K8s层面的报错。
很多测试遇到问题只会查找业务日志,忽略K8s事件,白白浪费大量排查时间。
8、健康探针(存活探针、就绪探针)
很多服务启动后需要一段时间初始化。K8s依靠探针判断服务能不能接收请求。
• 就绪探针:容器初始化完成,才加入Service接收流量;
• 存活探针:程序卡死、假死,自动重启Pod。
经常遇到的测试现象:
新版本发布,Pod状态显示Running,但部分请求持续报错。大概率是就绪探针没通过,一部分实例还没有准备就绪。
9、简单扩缩容(性能测试必备)
做压测的时候,需要调整服务实例数量。
通过scale命令增加/减少Pod副本数,模拟多实例集群场景,验证负载均衡、并发场景是否存在问题。
简单总结:测试可以不用深入学的内容
顺便划清学习边界,避免盲目内卷:
✅ 需要熟练:查看pod、抓取日志、exec进入容器、端口转发、修改Deployment镜像版本、看懂deployment/service/ingress基础信息
❌ 不用深挖:集群搭建、存储PV/PVC、复杂网络策略、自定义控制器、helm深度开发、复杂调度策略等
软件测试学习K8s,核心目标是提升环境问题排查效率,能够独立完成测试环境版本部署,和开发运维顺畅沟通。优先掌握上面这些日常高频功能,足够支撑绝大多数测试工作。
夜雨聆风