# 1. Kubernetes Operator/CRD 的测试框架(envtest/kuttl)的使用方法和最佳实践? A envtest 用于真实集群端到端测试,kuttl 用于单元测试 B 控制器调谐只需测一次,无需考虑幂等 C Operator 无需测试 webhook 校验逻辑 D 应分层次测试:envtest 验证调谐逻辑,kuttl 覆盖声明式端到端场景,并验证幂等与故障恢复 ✓ 正确答案
# 2. 容器镜像的安全测试,如何验证基础镜像漏洞、依赖扫描和运行时权限最小化? A 应结合漏洞扫描与运行时权限最小化,并把扫描接入 CI 阻断高危发布 ✓ 正确答案 B 只需扫描基础镜像漏洞,无需关注运行时权限 C 镜像内嵌密钥是安全的做法 D 容器默认以 root 运行是安全的
# 3. Helm Chart 测试,如何验证不同 values 组合下的部署正确性和回滚能力? A 只需验证默认 values 下的部署即可 B 应验证不同 values 组合的渲染、部署可用性,以及 upgrade 与 rollback 能力 ✓ 正确答案 C Chart 升级不会破坏现有资源 D 回滚无需测试,helm 会自动处理
# 4. Kubernetes 网络策略(NetworkPolicy)的测试,如何验证 Pod 间的网络隔离符合预期? A NetworkPolicy 默认允许所有流量,无需隔离 B 应通过连通性矩阵验证允许与禁止的规则,包括默认拒绝与命名空间隔离 ✓ 正确答案 C CNI 不支持 NetworkPolicy 时策略仍会生效 D 网络策略配置错误不会导致服务不可用
# 5. Kubernetes 的资源限制(requests/limits)测试,如何验证 OOMKill 和 CPU 节流行为? A 内存超限会 CPU 节流,CPU 超限会 OOMKill B 内存超限导致 OOMKill,CPU 超限导致节流,requests 影响调度,需按此验证 ✓ 正确答案 C requests 与 limits 语义完全相同 D QoS 级别对资源超限行为无影响
# 6. Service Mesh(Istio/Linkerd)的测试,如何验证流量管理、熔断和 mTLS 的正确性? A 应验证权重路由、熔断触发、mTLS 拒绝明文以及故障注入等数据面行为 ✓ 正确答案 B 熔断只是配置项,无需实际验证 C mTLS 启用后明文流量仍能通过 D mesh 的流量管理不参与灰度发布
# 7. 容器镜像测试,镜像内容、启动命令、健康检查、资源限制的验证,以及镜像安全扫描? A 只要镜像能构建成功就无需测试 B 应验证镜像内容、启动与健康检查、资源限制,并做安全扫描和运行冒烟 ✓ 正确答案 C 镜像安全扫描可以跳过,不影响上线 D 健康检查探针与镜像测试无关
# 8. K8s 场景测试,Pod 生命周期、探针(liveness/readiness)、配置挂载、滚动更新与回滚的验证? A liveness 探针失败应摘除流量而非重启容器 B 滚动更新会先终止所有旧 Pod 再启动新 Pod C 应验证探针行为、配置挂载、滚动更新不中断服务及失败回滚 ✓ 正确答案 D ConfigMap 更新后容器内配置一定热更新无需重启
# 9. Pod 优雅终止与滚动更新,SIGTERM 处理、优雅退出窗口与探针配合如何保证滚动更新不丢在途请求? A 只要发送 SIGTERM,应用就会自动优雅退出 B 需要 readiness 摘流量、preStop 等待、SIGTERM 处理在途请求与 terminationGracePeriod 配合,并压测验证 ✓ 正确答案 C preStop 钩子与优雅退出无关 D 滚动更新期间丢请求是正常的,无需处理
# 10. 有状态应用的存储与有序性测试,StatefulSet 的启动删除顺序、PVC 数据持久化与重建恢复如何验证? A 应验证有序启动删除、PVC 数据持久化、Pod 重建后数据恢复 ✓ 正确答案 B StatefulSet 的 Pod 可随意并行启动,无顺序要求 C Pod 删除后 PVC 数据也会被删除 D StatefulSet 与数据持久化无关
# 11. Kubernetes 的混沌测试,Pod 驱逐、节点故障和网络分区时系统的自愈能力如何验证? A 混沌测试是随机破坏系统,无需定义稳态 B Pod 被驱逐后不会被自动重建 C 应基于稳态假设注入故障,验证 Pod 驱逐、节点故障、网络分区后系统自愈恢复 ✓ 正确答案 D 网络分区故障不会影响自愈能力
# 12. GitOps(ArgoCD/Flux)的漂移检测测试,如何验证集群状态与 Git 仓库的一致性? A 手动修改集群资源后,GitOps 不会发现差异 B GitOps 只管理部署,不关心漂移 C auto-sync 会把 Git 状态改写成集群状态 D 应验证集群状态与 Git 一致,注入漂移后能被检测并自动同步纠正 ✓ 正确答案
# 13. K8s 环境下的测试基建,如何在集群内运行测试、管理测试命名空间与资源配额? A 测试应共用命名空间即可,无需隔离 B 应用独立命名空间隔离、资源配额限制、最小权限账号,测试后清理资源 ✓ 正确答案 C 测试资源不需要配额,可随意占用 D 测试在集群内运行无需权限控制
# 14. 容器镜像的不可变性与分层缓存对测试的影响,镜像重建与缓存命中如何影响测试可重复性? A 使用 latest 标签也能保证测试可重复 B 分层缓存命中不影响测试结果的可靠性 C 应用不可变 tag 与依赖锁文件,并注意缓存命中可能掩蔽未更新的依赖 ✓ 正确答案 D 镜像内容与依赖版本无关
# 15. Kubernetes RBAC 权限测试,ServiceAccount、Role/ClusterRole 的授权边界如何验证? A ClusterRole 与 Role 的作用范围完全相同 B RBAC 拒绝仅影响删除操作 C ServiceAccount 天然拥有所有权限,无需配置 D 应用 can-i 与真实越权尝试验证 ServiceAccount 授权边界,并检查最小权限 ✓ 正确答案
# 16. 本地 K8s 测试环境选型,Kind/K3s/minikube 在能力、速度与 CI 适配上的取舍? A Kind 功能最全且最贴近生产环境 B 应权衡能力、速度与 CI 适配:Kind 轻量适 CI、minikube 功能全、K3s 资源占用低 ✓ 正确答案 C 三种工具完全等价,无差异 D 本地环境与生产 K8s 版本差异不影响测试
# 17. 容器测试的依赖注入与配置注入,环境变量、ConfigMap/Secret 挂载的测试要点? A 应验证环境变量/ConfigMap 内容正确、Secret 不泄露、配置变更后的热更新行为 ✓ 正确答案 B Secret 可以直接硬编码在镜像中 C ConfigMap 更新后应用一定自动热更新 D 配置缺失时应用无需任何处理
# 18. 容器安全上下文测试,只读根文件系统、非 root 运行与 capabilities 裁剪如何验证生效,误配置风险有哪些? A 设置 readOnlyRootFilesystem 后仍可写根目录 B 非 root 运行会降低安全性 C capabilities 裁剪过度没有任何影响 D 应验证只读根文件系统、非 root、capabilities 裁剪真实生效,同时确认应用在限制下仍正常运行 ✓ 正确答案