# 测试工程师学 K8s:一份"最小必要知识"清单,附学习路线

招聘 JD 上"精通 K8s"越来越常见,测试群里每隔几天就有人问"测试要不要学 K8s"。本文从测试工程师的实际工作场景出发,分析哪些 K8s 知识是刚需、哪些可以跳过,给出一份两个月可完成的精简学习路线。

适用人群: 有基础 Linux/Docker 使用经验,需要在 K8s 环境中部署测试服务、排查问题的测试/测开工程师。


结论先行

测试工程师不需要"精通 K8s",但需要"能在 K8s 上独立工作"。

具体来说,三件事必须会:

  1. 部署测试服务 ------ 写 Deployment YAML,把自己的自动化服务跑在 K8s 上
  2. 排查问题 ------ 看 Pod 状态、查日志、进容器 debug
  3. 管理配置 ------ 用 ConfigMap/Secret 管理环境差异,告别硬编码

三件事不需要会:搭集群、配 RBAC、写 Operator。下面展开说。


学了 vs 用了:半年学习复盘

知识点 耗时 测试工作中使用频率 建议
Pod / Deployment / Service 2 周 每天 ✅ 必学
kubectl 常用命令 1 周 每天 ✅ 必学
ConfigMap / Secret 3 天 高频 ✅ 必学
日志查看 / 容器调试 1 周 每次故障 ✅ 必学
Ingress / Service 网络 1 周 偶尔 ⚠️ 了解即可
Helm 2 周 按团队而定 ⚠️ 会用就行
PV / PVC 存储 1 周 几乎不用 ❌ 可以跳过
RBAC 权限控制 1 周 几乎不用 ❌ 可以跳过
集群搭建(kubeadm) 2 周 搭完再没碰过 ❌ 可以跳过
Operator / CRD 3 周 从未用过 ❌ 可以跳过

一半学习时间属于无效投入。 如果现在重新规划,砍掉下四项,把时间集中在前四项上,两个月足够从零到能干活。


1. 部署:把测试服务跑在 K8s 上

测试团队维护一个 API 自动化测试服务,需要让它以 Deployment 方式运行在测试集群中。你需要自己写部署文件------因为只有你知道自己的服务需要什么环境变量、资源配额、健康检查端点。

yaml 复制代码
apiVersion: apps/v1
kind: Deployment
metadata:
  name: api-test-runner
  namespace: test-env
spec:
  replicas: 1
  selector:
    matchLabels:
      app: api-test-runner
  template:
    metadata:
      labels:
        app: api-test-runner
    spec:
      containers:
        - name: runner
          image: registry.xxx.com/api-test-runner:v2.1.0
          env:
            - name: BASE_URL
              valueFrom:
                configMapKeyRef:
                  name: test-config
                  key: base_url
            - name: DB_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: test-secrets
                  key: db_password
          resources:
            requests:
              memory: "256Mi"
              cpu: "250m"
            limits:
              memory: "512Mi"
              cpu: "500m"
          livenessProbe:
            httpGet:
              path: /health
              port: 8080
            initialDelaySeconds: 10
            periodSeconds: 30

几个测试场景下需要注意的点:

配置 说明
resources.requests/limits 必填。不设的话 Pod 可能被 OOMKilled,测试跑到一半容器消失
livenessProbe 你的测试服务需要有 /health 端点,否则 K8s 不知道它是否存活
namespace 测试环境独立命名空间,避免误操作影响其他环境
image tag 建议用版本号而非 latest,保证可复现

2. 排查:出问题时手里有工具

生产环境报 bug,后端说"是环境问题不是代码问题"。你需要自己验证。

测试工程师必会的四个 kubectl 命令

bash 复制代码
# 1. 查看 Pod 状态 --- 是不是挂了
kubectl get pods -n test-env -l app=user-service

# 输出解读:
# NAME                            READY   STATUS             RESTARTS
# user-service-7d8f-4xk2m         1/1     Running            0        ← 正常
# user-service-7d8f-9b3yq         0/1     CrashLoopBackOff   12       ← 挂了
bash 复制代码
# 2. 查看 Pod 事件 --- 为什么挂了
kubectl describe pod user-service-7d8f-9b3yq -n test-env

# 关注 Events 段:OOMKilled / ImagePullBackOff / Liveness probe failed
bash 复制代码
# 3. 查看日志 --- 错误在哪个环节
kubectl logs -n test-env user-service-7d8f-4xk2m --tail=200 -f
# -f 持续跟踪(类似 tail -f),排查实时请求时非常有用
bash 复制代码
# 4. 进容器直接验证 --- 终极手段
kubectl exec -it -n test-env user-service-7d8f-4xk2m -- sh

# 进去后可以 curl、cat 配置文件、检查环境变量
curl http://localhost:8080/api/user/123
env | grep DB_

典型排查链路

sql 复制代码
用户报 bug → 你查日志 kubectl logs → 
发现是 DB 连接超时 → 进容器 curl DB 端口不通 → 
describe pod 发现 Endpoints 为空 → 
定位:Service selector 写错了

这个链路不需要运维介入,测试自己就能走完。排查自主权是学 K8s 最大的 ROI。


3. 配置管理:告别硬编码

yaml 复制代码
apiVersion: v1
kind: ConfigMap
metadata:
  name: test-config
  namespace: test-env
data:
  base_url: "https://api.dev.xxx.com"
  log_level: "DEBUG"
  mock_payment: "true"
  timeout_seconds: "30"

环境切换流程:

bash 复制代码
# 切到 staging 环境
kubectl edit configmap test-config -n test-env
# 改 base_url: "https://api.staging.xxx.com"

# 重启 Pod 让新配置生效
kubectl rollout restart deployment api-test-runner -n test-env

配合 ConfigMap 的批量管理:

bash 复制代码
# 从文件创建/更新 ConfigMap
kubectl create configmap test-config \
  --from-file=configs/dev.yaml \
  -n test-env \
  --dry-run=client -o yaml | kubectl apply -f -
配置类型 存储位置 示例
非敏感配置 ConfigMap base_url, log_level, feature_flags
敏感信息 Secret DB 密码, API Key, Token
代码级配置 pytest conftest fixture scope, marker 注册

精简学习路线(8 周)

第 1 周:核心概念(纯理论)

理解 4 个核心对象的层级关系:

复制代码
Pod ← Deployment ← Service ← Ingress
  • Pod:最小调度单元,一个或多个容器
  • Deployment:管理 Pod 的副本数、滚动更新
  • Service:给 Pod 提供稳定的访问地址(Pod IP 会变)
  • Ingress:从集群外部访问 Service

不需要动手,画张图搞清楚"谁管谁"就行。

第 2-3 周:kubectl 命令

只练这四个:getdescribelogsexec。80% 的日常操作不超出这个范围。

bash 复制代码
kubectl get pods,svc,deploy -n <namespace>   # 一览
kubectl describe pod <name> -n <ns>           # 详情
kubectl logs <pod> -n <ns> --tail=100         # 日志
kubectl exec -it <pod> -n <ns> -- sh          # 进入

第 4 周:第一个 Deployment

用 minikube 或 Docker Desktop 自带的 K8s,把你的测试服务部署上去。

第 5-6 周:ConfigMap + Secret

把硬编码的配置迁移到 ConfigMap。这一步是测试环境管理水平的质变。

第 7-8 周:Helm(按需)

如果团队已经在用 Helm,学会 helm install、看懂 values.yaml、会改参数。不需要从零写 Chart。


总结

维度 需要 不需要
核心对象 Pod, Deployment, Service, ConfigMap, Secret PV/PVC, RBAC, ServiceAccount, NetworkPolicy
操作 get, describe, logs, exec, apply, edit 搭集群, 配 CNI, 管 etcd
部署 写 Deployment YAML, 设资源配额, 配健康检查 写 Operator, CRD, 自定义 Controller
工具 kubectl, Helm(会用) kubeadm, kustomize(可后续补)
认证 CKA/CKAD(除非想转运维)

2026 年 7 月 | 约 2400 字 | 预计阅读 7 分钟

相关推荐
ClouGence11 分钟前
文件上传也能录制回放了:CueCast UI 自动化测试更新
前端·测试
ClouGence5 天前
Selenium 写不动了?这个工具录一次就能跑 Web 自动化
前端·selenium·测试
狂师6 天前
想做测试工具却不会写代码?怎么办?
人工智能·程序员·测试
ClouGence7 天前
从 5 天到 2 小时:AI Agent 如何搭建高效、可复用的全自动化测试体系?
agent·测试
狂师7 天前
用AI做自动化测试,哪些是真不行,哪些是你不会用?
人工智能·面试·测试
世事如云有卷舒9 天前
GoogTest测试框架
c++·测试
狂师12 天前
AI 测试提效 | 别搞万能 Skill,推荐用 5 个 Agent Skill 串起 UI 自动化全流程
前端·人工智能·测试
ClouGence13 天前
AI Agent 能写测试、跑流程,为什么回归测试还不能完全交给 AI?
前端·测试