高级 DevOps 工程师生产系统面试题

Milad Bonakdar
作者
用实战问题准备 Kubernetes、Terraform 状态、GitOps、安全、可观测性、事故响应和生产系统取舍等高级 DevOps 面试重点。
高级 DevOps 面试考察什么
高级 DevOps 面试通常考察你是否能运维生产系统,而不只是知道工具名称。常见问题会围绕 Kubernetes 故障、Terraform 状态安全、GitOps 发布、云上韧性、安全控制、可观测性和事故响应展开。
使用这份指南时,重点练习能体现判断力的回答:先查什么、降低哪个风险、如何验证修复,以及如何向工程、安全或产品团队解释取舍。
高级 Kubernetes
1. 解释 Kubernetes 架构以及关键组件的作用。
回答: Kubernetes 使用控制平面和工作节点架构。高级回答不仅要说明组件,还要说明期望状态如何在系统中被调谐:
控制平面组件:
- API Server: Kubernetes 控制平面的前端,处理所有 REST 请求
- etcd: 用于集群状态的分布式键值存储
- Scheduler: 根据资源需求将 Pod 分配给节点
- Controller Manager: 运行控制器进程(复制、端点等)
- Cloud Controller Manager: 与云提供商 API 集成
节点组件:
- kubelet: 代理,确保容器在 Pod 中运行
- kube-proxy: 维护 Pod 通信的网络规则
- Container Runtime: 运行容器(Docker、containerd、CRI-O)
工作原理:
- 用户通过 kubectl 提交部署
- API Server 验证并存储在 etcd 中
- Scheduler 将 Pod 分配给节点
- 节点上的 kubelet 创建容器
- kube-proxy 配置网络
常见程度: 非常常见 难度: 困难
2. 如何排查卡在 CrashLoopBackOff 状态的 Pod?
回答: 系统性的调试方法:
常见原因:
- 应用程序在启动时崩溃
- 缺少环境变量
- 不正确的存活探针配置
- 资源不足(OOMKilled)
- 镜像拉取错误
- 缺少依赖项
示例修复:
常见程度: 非常常见 难度: 中等
3. 解释 Kubernetes 网络:Services、Ingress 和 Network Policies。
回答: Kubernetes 网络层:
Services: Service 暴露类型:
Ingress: HTTP/HTTPS 路由:
Network Policies: 控制 Pod 到 Pod 的通信:
常见程度: 非常常见 难度: 困难
4. 如何在 Kubernetes 中实现自动伸缩?
回答: 多种自动伸缩策略:
Horizontal Pod Autoscaler (HPA):
Vertical Pod Autoscaler (VPA):
Cluster Autoscaler: 根据待处理的 Pod 自动调整集群大小:
常见程度: 常见 难度: 中等
高级 Terraform
5. 解释 Terraform 状态管理和最佳实践。
回答: Terraform 状态跟踪基础设施,对于操作至关重要。
远程状态配置:
状态锁定:
最佳实践:
1. 永远不要将状态文件提交到 Git
2. 使用工作区进行环境隔离
3. 导入现有资源
4. 状态操作(谨慎使用)
5. 在重大更改之前备份状态
常见程度: 非常常见 难度: 困难
6. 如何为大型项目构建 Terraform 代码?
回答: 模块化结构,以提高可维护性:
目录结构:
模块示例:
使用模块:
常见程度: 常见 难度: 困难
云架构
7. 在 AWS 上设计一个高可用的多区域架构。
回答: 用于高可用性的多区域架构:
关键组件:
1. DNS 和流量管理:
2. 数据库复制:
3. 数据复制:
设计原则:
- 主动-主动或主动-被动设置
- 通过健康检查实现自动故障转移
- 以最小的延迟进行数据复制
- 跨区域的一致部署
- 两个区域的监控和警报
常见程度: 常见 难度: 困难
GitOps & CI/CD
8. 解释 GitOps 以及如何使用 ArgoCD 实现它。
回答: GitOps 使用 Git 作为声明式基础设施和应用程序的单一事实来源。
原则:
- Git 中的声明式配置
- 自动同步
- 所有更改的版本控制
- 持续协调
ArgoCD 实现:
目录结构:
Kustomization:
优点:
- Git 作为审计跟踪
- 易于回滚 (git revert)
- 声明式的期望状态
- 自动漂移检测
- 多集群管理
常见程度: 常见 难度: 中等
安全 & 合规
9. 如何在 Kubernetes 中实施安全最佳实践?
回答: 多层安全方法:
1. Pod 安全标准:
2. RBAC(基于角色的访问控制):
3. Network Policies:
4. Secrets 管理:
5. Security Context:
6. 镜像扫描:
常见程度: 非常常见 难度: 困难
可观测性 & SRE
10. 设计一个全面的可观测性堆栈。
回答: 可观测性的三大支柱:指标、日志、追踪
架构:
1. 指标 (Prometheus + Grafana):
2. 日志 (Loki):
3. 追踪 (Jaeger):
4. 警报规则:
5. SLO 监控:
常见程度: 常见 难度: 困难
灾难恢复
11. 如何为 Kubernetes 集群实施灾难恢复?
回答: 全面的 DR 策略:
1. 备份策略:
2. etcd 备份:
3. 恢复过程:
4. 多区域故障转移:
5. RTO/RPO 目标:
- RTO(恢复时间目标): < 1 小时
- RPO(恢复点目标): < 15 分钟
- 定期 DR 演练(每月)
- 记录在案的运行手册
- 尽可能实现自动故障转移
常见程度: 常见 难度: 困难
服务网格
12. 解释服务网格架构以及何时使用它。
回答: 服务网格为服务到服务通信提供基础设施层。
核心组件:
Istio 实现:
熔断:
Mutual TLS:
适合使用的场景:
- 微服务之间通信复杂
- 需要统一的 mTLS、授权和流量规则
- 需要金丝雀发布、流量拆分和更好的故障隔离
- 需要统一观察服务间调用
需要权衡的点: Service mesh 会增加复杂度、延迟和运维成本。高级面试中要说明,为什么在这个系统里收益值得这些成本。
总结
不要只准备工具定义。每个回答都要体现你会如何定位生产问题、优先处理风险、验证修复效果,并把经验沉淀为长期改进。


