9. K8s 对测试工程师要掌握什么
K8s,也就是 Kubernetes,是现在很多互联网公司用于容器编排和服务部署的平台。测试工程师不一定要像运维或 SRE 一样深入掌握 K8s 架构、调度器、网络插件、存储插件,但如果项目服务部署在 K8s 上,测试至少要知道 Pod、Deployment、Service、Namespace、日志、重启、扩缩容这些基础概念。否则测试环境出问题时,你可能连服务运行在哪、日志怎么看、容器为什么重启都不知道。
面试中问 K8s,通常不是考测试岗位的底层运维能力,而是看你是否适应现代测试环境。你要能讲清楚:K8s 在测试环境中管理容器服务;测试人员主要关注 Pod 状态、服务日志、镜像版本、配置、端口暴露、服务重启和环境隔离;遇到接口异常时,能通过基础命令初步判断问题是在应用、容器、配置、网络还是环境层。
一、测试为什么要懂 K8s
很多团队已经从传统服务器部署,发展到 Docker 容器部署,再到 K8s 管理容器。测试人员可能不负责搭建 K8s 集群,但会接触 K8s 环境下的服务验证和问题排查。
常见场景包括:
- 测试环境服务部署在 K8s;
- 接口失败需要查看 Pod 日志;
- 服务重启导致测试不稳定;
- 发布后需要确认镜像版本;
- 多个测试环境用 Namespace 隔离;
- 服务扩容后要观察多个 Pod 是否正常;
- Pod CrashLoopBackOff 导致服务不可用;
- 配置变更后需要确认是否生效。
如果你能看懂这些基础状态,和开发、运维沟通会更顺畅。
二、K8s 基础概念怎么理解
1. Pod
Pod 是 K8s 中最小的运行单元。可以简单理解为一个或多个容器的组合。测试排查服务时,经常先看 Pod 是否正常。
常用命令:
kubectl get pods
如果 Pod 状态不是 Running,就要看原因。
2. Deployment
Deployment 用来管理一组 Pod,负责发布、滚动更新、回滚、副本数量等。
测试可以简单理解为:Deployment 管理某个服务的多个实例。
kubectl get deployments
3. Service
Service 用来提供稳定访问入口。Pod 可能重启、IP 会变,但 Service 可以提供相对稳定的访问方式。
kubectl get svc
4. Namespace
Namespace 用来做环境隔离。比如:
- dev;
- test;
- pre;
- prod。
测试要确认自己查的是正确命名空间,否则可能看错环境。
kubectl get pods -n test
三、测试常用 kubectl 命令
1. 查看 Pod 状态
kubectl get pods -n test
重点看:
- STATUS;
- READY;
- RESTARTS;
- AGE。
如果状态是 Running,说明 Pod 正在运行;如果是 CrashLoopBackOff、Error、Pending,就需要排查。
2. 查看 Pod 详细信息
kubectl describe pod pod名称 -n test
可以看到事件、镜像、容器状态、重启原因、调度失败原因等。
3. 查看日志
kubectl logs pod名称 -n test
实时查看:
kubectl logs -f pod名称 -n test
如果 Pod 中有多个容器,需要指定容器名:
kubectl logs pod名称 -c 容器名 -n test
4. 进入 Pod
kubectl exec -it pod名称 -n test -- /bin/bash
如果没有 bash:
kubectl exec -it pod名称 -n test -- /bin/sh
进入后可以查看配置、环境变量、目录和部分运行状态。
四、Pod 状态怎么看
1. Running
Pod 正在运行,但不代表业务接口一定正常。还要看日志和接口冒烟结果。
2. Pending
Pod 还没被调度成功。可能是资源不足、镜像拉取问题、节点异常。
3. CrashLoopBackOff
容器启动后崩溃,然后被 K8s 反复重启。测试环境接口不稳定时,这个状态很常见。
4. ImagePullBackOff
镜像拉取失败。可能是镜像地址错、tag 不存在、仓库权限问题。
5. Error
容器运行异常退出。需要看日志和 describe 事件。
测试不用背所有状态,但要知道状态异常时先看 logs 和 describe。
五、K8s 日志排查怎么做
接口 500 时,如果服务在 K8s 上,可以这样做:
- 确认服务所在 Namespace;
kubectl get pods -n test找到对应 Pod;- 看 Pod 是否 Running,是否有重启;
kubectl logs --tail=200 pod名称 -n test看最近日志;- 搜索订单号、用户 ID、TraceId 或 ERROR;
- 如果 Pod 重启过,查看前一次日志;
kubectl describe pod看事件和重启原因;- 结合接口响应和业务数据判断问题。
查看前一次容器日志:
kubectl logs pod名称 -n test --previous
这个在容器刚崩溃重启后很有用。
六、发布和版本怎么确认
测试环境发布后,要确认是否部署了正确版本。
可以检查:
- Deployment 使用的镜像 tag;
- Pod 创建时间;
- 应用启动日志中的版本号;
- 版本接口;
- Jenkins 构建号;
- Git commit 信息。
如果测试发现需求没生效,第一步不要急着提 Bug,先确认是不是版本没部署上。
七、扩缩容对测试有什么影响
K8s 可以让一个服务有多个 Pod 副本。比如订单服务有 3 个 Pod。
测试要注意:
- 多副本是否都部署了新版本;
- 是否只有某个 Pod 有异常;
- 日志可能分散在多个 Pod;
- 请求可能被负载均衡到不同 Pod;
- 会话或缓存设计不当可能导致偶发问题。
如果问题偶现,要考虑是不是某个 Pod 异常。可以分别查看多个 Pod 日志。
八、配置和环境变量
K8s 中配置常通过 ConfigMap、Secret、环境变量管理。测试要关注:
- 数据库地址是否是测试库;
- Redis、MQ 是否是测试环境;
- 第三方接口是否是测试地址;
- 配置变更后 Pod 是否重启;
- 多个 Pod 配置是否一致。
配置错可能导致服务启动成功但业务异常。
九、K8s 常见问题案例
案例 1:Pod CrashLoopBackOff
现象:接口访问失败,Pod 状态 CrashLoopBackOff。
排查:
kubectl get pods -n test;kubectl logs pod名称 -n test --previous;- 发现数据库连接失败;
- 查看配置发现数据库地址写错;
- 修复配置后重启发布;
- Pod Running,接口冒烟通过。
案例 2:发布后功能没生效
排查:
- 查看 Jenkins 构建是否成功;
- 查看 Deployment 镜像 tag;
- 查看 Pod 创建时间;
- 调用版本接口;
- 发现 Pod 仍是旧镜像;
- 重新发布后回归。
案例 3:接口偶发失败
排查:
- 查看服务有多个 Pod;
- 分别查看多个 Pod 日志;
- 发现其中一个 Pod 配置异常;
- 重启或重新发布该 Pod;
- 再次压测或多次请求验证。
十、面试回答模板
如果面试官问“K8s 对测试工程师要掌握什么”,可以这样回答:
测试工程师不一定要深入掌握 K8s 底层,但要知道常用概念和排查方法。比如 Pod 是服务运行的基本单元,Deployment 管理服务副本和发布,Service 提供访问入口,Namespace 用来隔离环境。测试中我会用
kubectl get pods查看服务状态,用kubectl logs查看日志,用kubectl describe pod查看异常事件,用kubectl exec进入 Pod 排查配置。遇到接口异常时,会先确认环境和 Namespace,再看 Pod 是否 Running、是否有重启、日志是否有 ERROR、镜像版本是否正确,最后结合接口和业务数据判断问题。
十一、常见追问
追问:Pod Running 是否代表服务正常?
不一定。Running 只代表容器在运行,还要看应用日志、接口返回、依赖服务和业务冒烟结果。
追问:CrashLoopBackOff 怎么查?
用 kubectl logs --previous 看崩溃前日志,再用 kubectl describe pod 看事件和重启原因。
追问:怎么看是不是部署了新版本?
看镜像 tag、Pod 创建时间、启动日志版本号、版本接口、Jenkins 构建号或 Git commit。
追问:多 Pod 日志怎么看?
分别查看每个 Pod 的日志,尤其是偶发问题,可能只有某个 Pod 异常。
十二、练习清单
- 理解 Pod、Deployment、Service、Namespace;
- 用
kubectl get pods查看状态; - 用
kubectl logs查看日志; - 用
kubectl describe pod查看事件; - 用
kubectl exec进入 Pod; - 理解 CrashLoopBackOff;
- 理解 ImagePullBackOff;
- 确认镜像版本;
- 分析多 Pod 偶发问题;
- 准备 K8s 测试面试回答。
测试工程师学习 K8s,不是为了替代运维,而是为了能在容器化环境中看懂服务状态、找到日志、判断版本和定位基础环境问题。掌握这些就能应对大多数测试面试和项目排查场景。
配套刷题:

