🎯 云原生与DevOps面试题精选50题¶
适用岗位:云原生工程师、DevOps/SRE、MLOps工程师 难度分布:基础(20) + 进阶(20) + 系统设计(10)
一、基础题(20题)¶
Q1: Docker核心概念?镜像、容器、仓库的关系? - 镜像(Image): 只读模板,分层存储(UnionFS) - 容器(Container): 镜像的运行实例,可读写层 - 仓库(Registry): 镜像存储和分发(Docker Hub/Harbor) - 类比:镜像=类,容器=对象
Q2: Dockerfile最佳实践? - 多阶段构建减小镜像大小 - 合理利用缓存(频繁变化的步骤放后面) - 使用.dockerignore排除无关文件 - 不要用root用户运行 - 使用alpine/distroless基础镜像
Q3: Kubernetes核心架构? - Control Plane: API Server、etcd、Scheduler、Controller Manager - Node: kubelet、kube-proxy、容器运行时(containerd) - 核心对象: Pod→Deployment→Service→Ingress
Q4: Pod是什么?为什么不直接运行容器? - Pod是K8s最小调度单元,包含1+个紧密关联的容器 - 共享网络namespace(localhost互通)和存储卷 - Sidecar模式:主容器+辅助容器(日志/代理/监控)
Q5: Deployment vs StatefulSet vs DaemonSet? | 类型 | 用途 | 特点 | |------|------|------| | Deployment | 无状态应用 | 滚动更新、副本管理 | | StatefulSet | 有状态应用 | 稳定网络标识+存储 | | DaemonSet | 每节点一个Pod | 日志采集/监控Agent |
Q6: K8s Service的类型? - ClusterIP: 集群内访问(默认) - NodePort: 节点端口暴露(30000-32767) - LoadBalancer: 云厂商LB - ExternalName: DNS CNAME映射
Q7: Ingress的作用? - 七层HTTP路由: 域名/路径→Service - TLS终止、负载均衡、灰度发布 - 实现: Nginx Ingress/Traefik/Istio Gateway
Q8: K8s资源限制(Resources)?
resources:
requests: # 调度保证
cpu: "500m"
memory: "256Mi"
limits: # 使用上限
cpu: "1000m"
memory: "512Mi"
Q9: HPA(水平自动扩缩)原理? - 根据CPU/内存/自定义指标自动调整Pod副本数 - metrics-server采集指标 → HPA Controller决策 → 调整Deployment replicas - 常用: CPU利用率>70%时扩容
Q10: ConfigMap和Secret的区别? - ConfigMap: 存储非敏感配置(环境变量/配置文件) - Secret: 存储敏感数据(密码/Token),Base64编码(非加密!) - 最佳实践: 用外部密钥管理(Vault/AWS KMS)管理Secret
Q11: CI/CD流水线的核心步骤?
- 工具: GitHub Actions/GitLab CI/Jenkins/ArgoCDQ12: GitOps是什么? - 以Git仓库作为唯一事实来源管理基础设施和应用 - 声明式配置存储在Git → 自动同步到集群 - 工具: ArgoCD、Flux
Q13: 蓝绿部署 vs 金丝雀发布 vs 滚动更新? | 策略 | 原理 | 回滚 | 资源 | |------|------|------|------| | 蓝绿 | 两套完整环境切换 | 秒级 | 2x | | 金丝雀 | 小比例流量验证后全量 | 快 | 1.x | | 滚动 | 逐步替换旧Pod | 中 | 1.x |
Q14: Helm是什么? - K8s的包管理器,用Chart模板管理应用部署 - values.yaml定义变量 → 模板渲染 → K8s资源 - 版本管理: helm install/upgrade/rollback
Q15: Prometheus + Grafana监控架构? - Prometheus: 拉取式采集metrics → 时序数据库存储 → PromQL查询 - Grafana: 可视化Dashboard - AlertManager: 告警路由和通知 - 关键指标: RED(Rate/Error/Duration)、USE(Utilization/Saturation/Errors)
Q16: 容器网络模型(CNI)? - 每个Pod一个IP,Pod间直接通信 - CNI插件: Calico(BGP/eBPF)、Flannel(VXLAN)、Cilium(eBPF) - Service→Endpoint→Pod的流量路由(kube-proxy/eBPF)
Q17: 持久化存储(PV/PVC/StorageClass)? - PV: 集群级存储资源 - PVC: Pod对存储的声明 - StorageClass: 动态创建PV(如AWS EBS/GCE PD) - 流程: PVC请求 → StorageClass动态创建PV → Pod挂载
Q18: Namespace的作用? - 逻辑隔离(dev/staging/prod) - 资源配额(ResourceQuota):限制namespace的CPU/内存/Pod数 - 网络策略(NetworkPolicy): 限制跨namespace通信
Q19: 什么是Service Mesh?Istio的核心功能? - Sidecar代理(Envoy)拦截所有Pod间通信 - 功能: 流量管理(灰度/熔断/重试)、可观测性(分布式追踪)、安全(mTLS) - 缺点: 额外资源消耗、运维复杂度
Q20: IaC(基础设施即代码)工具? - Terraform: 多云资源编排(HCL语言) - Pulumi: 用编程语言定义基础设施 - Ansible: 配置管理和自动化 - 优势: 可重复、版本控制、审计追踪
二、进阶题(20题)¶
Q21: K8s调度原理(Predicate→Priority→Bind) Q22: etcd的Raft一致性算法 Q23: K8s网络策略(NetworkPolicy)配置 Q24: Pod安全标准(PSS/PSA) Q25: K8s Operator模式 Q26: Envoy代理的架构 Q27: eBPF在云原生中的应用(Cilium/Falco) Q28: 多集群管理方案(Federation/Karmada) Q29: K8s GPU调度(NVIDIA Device Plugin) Q30: Serverless(AWS Lambda/KNative) Q31: Chaos Engineering(混沌工程) Q32: SLO/SLI/SLA定义和实践 Q33: 日志管理方案(EFK/Loki) Q34: 分布式追踪(OpenTelemetry) Q35: 成本优化(Spot实例/右sizing/自动扩缩) Q36: 容器安全扫描(Trivy/Snyk) Q37: K8s RBAC权限控制 Q38: A/B测试的流量管理(Istio VirtualService) Q39: ML模型Serving(Triton/Seldon/KServe) Q40: K8s CRD和自定义控制器开发
三、系统设计题(10题)¶
Q41: 设计一个完整的MLOps平台
代码管理(Git) → 数据版本(DVC) → 实验跟踪(MLflow)
→ 模型训练(K8s Job+GPU) → 模型注册(Model Registry)
→ 模型服务(Triton+K8s) → 监控(Prometheus+Grafana)
→ 数据/模型漂移检测 → 自动重训练
Q42: 设计GPU集群调度系统 Q43: 设计多环境(dev/staging/prod)部署流水线 Q44: 设计大规模日志收集和分析系统 Q45: 设计零停机迁移方案(从VM到K8s) Q46: 设计LLM推理集群(GPU+自动扩缩+成本优化) Q47: 设计灾备和高可用架构(多AZ/多Region) Q48: 设计内部开发者平台(IDP) Q49: 设计安全的多租户K8s集群 Q50: 设计事件驱动的微服务架构
最后更新:2026年2月