# 测试工程师学 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 分钟

相关推荐
AINative软件工程4 小时前
LLM 应用的 Eval 数据工程实践:Golden Set 构建、版本管理与生产 Trace 回放
llm·测试·前端工程化
狂师1 天前
用自然语言控制手机,一条命令让 AI 帮你操作 Android 和 iOS 设备!
前端·开源·测试
ckjoker1 天前
大模型应用测试,90%的人都在裸奔
agent·测试
yc_xym2 天前
五子棋在线对战系统测试报告
压力测试·测试
小林ixn5 天前
大模型的“高考成绩单”:读懂Benchmark,选对真·生产力模型
人工智能·llm·测试
ClouGence5 天前
哪些场景适合做自动化测试?这 4 类最值得优先投入
selenium·测试
ClouGence5 天前
Selenium vs CueCast:自动化测试一定要写代码吗?
selenium·测试
花椒技术6 天前
原本要 2 天的服务端冒烟前置审查,为什么 3 分半就能出报告?|QA 质量交付实践(三)
后端·ai编程·测试