Skip to content

面试题深度详解:安全、运维与排障(15 题)

覆盖 RBAC、安全加固、故障排查、集群升级、GitOps、Helm、监控告警等高频面试题。


一、安全(Q31-Q35)

Q31: RBAC 的权限设计和最小权限原则

答题思路

从 RBAC 四种资源出发,给出最小权限设计的实际案例。

三级参考答案

B 级:

RBAC 由 Role/ClusterRole(定义权限)和 RoleBinding/ClusterRoleBinding(绑定权限)组成。最小权限原则:只授予完成工作所需的最小权限集合。

A 级:

Role 作用于 namespace,ClusterRole 作用于集群。ClusterRole + RoleBinding = 只在指定 namespace 生效(降维使用)。为 CI/CD 创建最小权限 ServiceAccount:只授予 deployments/services/configmaps 的 get/list/create/update,不授予 secrets/pods/exec/nodes。

S 级:

RBAC 设计要点:1) 避免使用 cluster-admin;2) 使用 kubectl auth can-i 验证权限;3) RBAC 是累加的(多个 RoleBinding 权限合并);4) 使用 OPA/Kyverno 强制 RBAC 策略。聚合 ClusterRole(aggregationRule)可将多个 ClusterRole 合并为一个。


Q32: 如何加固一个 K8s 集群(安全清单)

答题思路

从控制平面、节点、网络、供应链四个层面给出安全加固清单。

三级参考答案

B 级:

控制平面:禁用匿名认证、启用审计日志。节点:限制 kubelet 访问、禁用只读端口。网络:NetworkPolicy 默认拒绝。镜像:扫描漏洞、限制来源。

A 级:

参考 CIS Kubernetes Benchmark:1) apiserver 启用 --authorization-mode=RBAC,Node;2) etcd 加密 Secret;3) kubelet --anonymous-auth=false;4) Pod Security Standards(restricted 级别);5) 审计日志记录所有 API 操作。

S 级:

完整安全体系:1) 控制平面:RBAC + 审计日志 + Secret 加密 + OPA/Kyverno;2) 节点:PSA + Seccomp/AppArmor + 最小 capabilities;3) 网络:default-deny + mTLS + Ingress WAF;4) 供应链:Trivy 扫描 + Kyverno 限制镜像来源 + cosign 签名验证;5) 运行时:Falco 异常检测 + Tetragon eBPF 监控。


Q33: ServiceAccount Token 的演进(1.20 前后)

三级参考答案

B 级:

1.20 前:静态 Secret Token,永不过期。1.20+:TokenRequest API,有过期时间(默认 1h)。1.22+:Bound Token,绑定到 Pod,Pod 删除则 Token 失效。

A 级:

静态 Token 问题:泄露后永久有效。TokenRequest API 有过期时间,支持 audience 限制。Bound Token 绑定到 Pod UID,Pod 删除后立即失效。新方式通过 projected volume 挂载,Token 自动轮转。

S 级:

automountServiceAccountToken: false 可禁用自动挂载。外部身份认证:使用 OIDC(如 Dex + Keycloak)替代 ServiceAccount Token。1.24+ 不再自动创建 ServiceAccount 的 Secret,需要手动创建或使用 TokenRequest API。


Q34: Admission Controller 有哪些类型,如何自定义

三级参考答案

B 级:

Admission Controller 在认证授权之后执行,分 Mutating(修改请求)和 Validating(校验请求)。可以自定义 Webhook 实现准入控制。

A 级:

Mutating 在 Validating 之前执行,可以修改资源(如注入 sidecar)。内置 Admission Controller:LimitRanger、ResourceQuota、PodSecurity。自定义 Webhook 支持 failurePolicy(Ignore/Fail)。

S 级:

OPA Gatekeeper(Rego 语言)和 Kyverno(YAML 策略)是高级准入控制框架。Validating Admission Policy(1.26+)是内置的 CEL 表达式准入控制,无需部署 Webhook。自定义 Webhook 的 timeout 默认 10s,建议设置合理超时。


Q35: 如何应对容器逃逸攻击

三级参考答案

B 级:

容器逃逸是攻击者从容器内突破隔离获取宿主机权限。防御:不使用特权容器、最小化 capabilities、启用 Pod Security Standards。

A 级:

常见逃逸方式:内核漏洞、挂载宿主机根目录、Docker socket、privileged 模式。防御:PSA Restricted 禁止 privileged/hostNetwork/hostPID、只读 rootfs、drop 所有 capabilities。

S 级:

深度防御:1) gVisor/Kata Containers 提供更强隔离;2) Seccomp Profile 限制系统调用;3) AppArmor/SELinux 强制访问控制;4) Falco 检测异常行为;5) Tetragon eBPF 实时监控;6) distroless/scratch 基础镜像减少攻击面。


二、运维与排障(Q36-Q40)

Q36: 如何排查 Pod CrashLoopBackOff

答题思路

这是最高频的排障题,需要给出系统化的排查流程。

三级参考答案

B 级:

CrashLoopBackOff 表示容器反复崩溃重启。排查:1) kubectl logs <pod> --previous 查看上次崩溃日志;2) kubectl describe pod 查看重启次数和退出码;3) 检查应用配置和依赖服务。

A 级:

常见原因:1) 应用启动失败 → 检查日志和 ConfigMap/Secret;2) Liveness 探针配置不当;3) OOMKilled(退出码 137)→ 调大 memory limits;4) 非 PID 1 进程退出 → 使用 tini/dumb-init;5) 权限不足。

S 级:

深入排查:退出码分析:1(应用错误)、137(OOMKilled/SIGKILL)、139(段错误)、143(SIGTERM)。使用 kubectl debug 创建临时容器排查。雪崩效应:Liveness 探针依赖外部服务导致所有 Pod 同时重启。


Q37: 集群升级的完整流程和注意事项

三级参考答案

B 级:

升级顺序:1) 备份 etcd;2) 升级控制平面(一次一个小版本,不跳版本);3) 升级 kubelet(逐节点 cordon + drain + 升级 + uncordon);4) 验证集群功能。

A 级:

注意事项:1) 先升级 kubeadm,再升级控制平面,再升级 kubelet;2) 不能跳版本;3) 升级前检查 deprecated API;4) 升级 CNI/CSI 插件到兼容版本;5) 准备回滚方案。

S 级:

生产最佳实践:1) staging 环境先升级验证;2) 蓝绿集群(新旧并行,流量逐步切换);3) Cluster API 声明式管理集群生命周期;4) 监控升级过程中的关键指标;5) 升级后运行 Sonobuoy conformance test。


Q38: 如何备份和恢复 K8s 集群

三级参考答案

B 级:

etcd 备份:etcdctl snapshot save 定期备份。全集群备份:使用 Velero 备份所有 K8s 资源和 PVC 数据。

A 级:

etcd 备份:定时 CronJob + 异地存储(S3)。恢复:etcdctl snapshot restore。Velero 备份:支持 namespace 级别、label 选择器过滤、VolumeSnapshot 备份 PVC。

S 级:

完整灾备:1) etcd 定时快照(每小时)+ 异地存储;2) Velero 全集群备份(每天)+ VolumeSnapshot;3) Git 仓库存储所有声明式配置;4) 定期演练恢复;5) 跨地域备份。etcd 备份只恢复控制平面状态,不恢复 PVC 数据。


Q39: 如何设计一个完整的监控告警体系

三级参考答案

B 级:

Prometheus 采集指标 → Grafana 可视化 → AlertManager 告警通知。关键指标:CPU/Memory 使用率、Pod 重启次数、API 延迟、节点状态。

A 级:

四大黄金指标:延迟、流量、错误率、饱和度。告警分级:Critical(电话/短信)、Warning(企业微信)、Info(邮件)。

S 级:

企业级架构:1) VictoriaMetrics/Thanos 替代 Prometheus 单机;2) Fluent Bit → Kafka → Loki 日志;3) OpenTelemetry → Tempo 链路追踪;4) 基于 SLO/SLI 的错误预算告警(而非阈值告警)。每个告警必须有明确的 Action。


Q40: 如何实现 K8s 集群的自动化运维

三级参考答案

B 级:

IaC(Terraform/Ansible)+ GitOps(ArgoCD)+ 监控告警自动通知 + Runbook 文档化操作流程。

A 级:

自动化层次:1) Terraform 管理云资源;2) Cluster API 管理集群生命周期;3) ArgoCD GitOps 自动同步;4) HPA/VPA/CA 自动伸缩;5) Webhook 触发自动化脚本。

S 级:

高级自动化:1) 混沌工程(Chaos Mesh)验证系统韧性;2) AIOps(异常检测 + 根因定位 + 自动修复);3) 自服务运维平台;4) 合规自动化(OPA + CIS Benchmark);5) 成本自动化(Kubecost + VPA 推荐 + 自动缩容)。


Q41: GitOps 的优势和实践,ArgoCD 工作原理

答题思路

从 GitOps 的核心理念出发,解释 ArgoCD 的工作流程。

三级参考答案

B 级:

GitOps 将 Git 仓库作为集群状态的唯一真相来源,通过 ArgoCD 自动将 Git 变更同步到集群。优势:审计追踪、可回滚、自动化部署。

A 级:

ArgoCD 工作流程:1) Watch Git 仓库变更(轮询或 Webhook);2) 对比期望状态和实际状态;3) Sync 将差异应用到集群;4) SelfHeal 自动修复配置漂移。Sync 策略:Manual/ Automatic/ Sync Wave。

S 级:

ArgoCD 高级功能:1) ApplicationSet 批量管理多集群/多环境;2) App of Apps 模式;3) 多源应用;4) RBAC 控制谁能 Sync/回滚。Flux 更轻量,支持 Helm 原生。生产建议:Git 分环境分支(main=prod),PR 审核后合并触发部署。


Q42: Helm Chart 的开发和最佳实践

答题思路

从 Chart 结构、模板开发、测试、发布四个层面回答。

三级参考答案

B 级:

Helm Chart 结构:Chart.yaml(元信息)、values.yaml(默认值)、templates/(模板文件)。最佳实践:使用 helpers.tpl 定义共享模板,values 分环境覆盖。

A 级:

开发最佳实践:1) 使用 helpers.tpl 中的 fullname 模板统一命名;2) 所有可配置项提取到 values.yaml;3) helm linthelm template 验证;4) 编写 tests;5) Chart.yaml version 遵循 SemVer。

S 级:

高级实践:1) Chart 依赖管理(dependencies 字段);2) post-install/post-upgrade hooks(如数据库迁移 Job);3) Library Chart(共享模板库);4) helm-docs 自动生成文档;5) Chart Testing CI 集成。Helm vs Kustomize:Helm 适合复杂应用,Kustomize 适合简单覆盖。


Q43: 如何管理多环境的 K8s 部署

答题思路

从环境隔离、配置管理、发布流程三个角度回答。

三级参考答案

B 级:

多环境管理:1) 每个环境独立集群;2) 同一集群用 namespace 隔离;3) Helm values-per-env 或 Kustomize overlays 管理配置差异。

A 级:

推荐:GitOps + 环境分支。Git 结构:base/(共享)+ overlays/dev/staging/prod/(差异)。ArgoCD ApplicationSet 自动创建 Application。发布:dev 自动 → staging 审批 → prod 审批 + 灰度。

S 级:

企业级:1) ArgoCD AppSet + Kustomize overlays;2) 环境间 Promotion(staging 验证通过自动更新 prod Git 分支);3) Feature Flag(LaunchDarkly)控制功能发布;4) 蓝绿部署(新旧并行,流量逐步切换)。


Q44: 大规模集群(5000+ 节点)的运维挑战

答题思路

从控制平面、网络、存储、调度四个层面分析挑战和解决方案。

三级参考答案

B 级:

挑战:etcd 性能瓶颈、apiserver 延迟、kube-proxy iptables 规则过多、CoreDNS 压力。解决:etcd 独立集群、IPVS 模式、NodeLocal DNSCache。

A 级:

控制平面优化:1) etcd 5 节点独立集群(NVMe SSD);2) apiserver 3+ 实例 + LB;3) --max-requests-inflight=3000;4) --watch-cache-sizes=resource#1000。网络:Cilium eBPF。节点:--kube-api-qps=50

S 级:

超大规模:1) 集群分片(Karmada 联邦管理);2) 单集群上限建议 5000 节点 / 15 万 Pod;3) Cluster API 管理节点生命周期;4) VictoriaMetrics 联邦 + Thanos 分层监控;5) 调度优化:percentageOfNodesToScore + 自定义调度器。


Q45: 如何优化 K8s 的成本

答题思路

从资源优化、节点优化、工具辅助三个维度回答。

三级参考答案

B 级:

成本优化:1) VPA 推荐调整 requests/limits;2) Spot 节点用于无状态工作负载;3) Cluster Autoscaler 按需缩容;4) 清理未使用资源。

A 级:

系统优化:1) Kubecost 可视化成本;2) Karpenter 替代 CA(更快节点供给);3) BalancedAllocation 调度策略;4) 预留实例降低成本;5) 多租户共享集群。

S 级:

企业级:1) FinOps 方法论(可视化 → 优化 → 运营);2) VPA Off 模式 + 自动化应用;3) Spot 节点池 + 中断处理;4) 按需调度(工作时间扩容,夜间缩容);5) 存储成本优化(StorageClass tiering);6) 网络成本优化(同 AZ 优先调度减少跨 AZ 流量)。


上一章:面试题深度详解:存储、调度与资源(10 题) 下一章:面试题深度详解:架构设计(5 题)