容器与 Kubernetes 测试

共 18 题
#

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 裁剪真实生效,同时确认应用在限制下仍正常运行 ✓ 正确答案