当前位置: 首页 > news >正文

高级运维工程师面试题汇总-【DEVOPS】

DevOps

1. gitlab runner做了哪些优化

答案:

  • Runner 配置与标签优化

    • 使用 标签 对 Runner 进行分类,将不同类型的任务(如前端构建、后端测试、Docker 构建)定向到具有特定环境和资源的 Runner 上执行。

    • 配置 并发数,根据 Runner 所在机器的资源配置合理的并发作业数,避免资源争抢。

  • 缓存与制品优化

    • 配置 cache 关键字,缓存依赖目录(如 node_modules.m2/repository),大幅加速后续流水线执行。

    • 使用 artifacts 关键字在作业间传递构建产物,避免重复构建。

  • 依赖拉取优化

    • 对于 Docker 执行器,使用 本地 Docker 镜像仓库镜像 或 Docker 层缓存 来加速镜像拉取和构建。

    • 使用 pre-clone-script 来优化 Git 仓库的准备工作。

  • 执行器选择

    • 在资源充足且环境一致要求高的场景下,使用 Docker 执行器 实现环境隔离。

    • 对性能要求极高的任务,可使用 Shell 执行器 以减少虚拟化开销。

  • 资源与清理

    • 定期清理旧的流水线日志和制品,释放磁盘空间。

    • 为 Runner 配置监控,确保其健康状态。

2. 怎么实现多集群逐个发布

答案:
实现多集群逐个发布(又名“滚动发布”或“分批次发布”)的核心思想是分阶段、可控制地将新版本应用部署到不同的集群或环境中

  1. 环境定义:明确定义发布顺序,例如:开发集群 -> 测试集群 -> 预发布集群 -> 生产集群 A -> 生产集群 B。

  2. 流水线设计

    • 流水线被设计为多个阶段,每个阶段对应一个集群的部署。

    • 每个部署阶段结束后,可以加入人工审批自动化测试环节,确认无误后再触发下一阶段的部署。

  3. 配置管理:使用 Helm、Kustomize 等工具,通过参数化(如不同的 values.yaml)来管理不同集群的配置差异。

  4. 实现工具

    • Jenkins Pipeline:使用 input 步骤实现人工审批,使用 lock 资源控制并发。

    • GitOps 工具:使用 Argo CD ApplicationSet 的 strategy: rollingSync,可以自动按顺序更新多个集群的应用。在更新每个集群前,可以配置 presync 钩子进行健康检查或人工验证。

3. 蓝绿部署、灰度发布、金丝雀发布区别☆

答案:

  • 蓝绿部署

    • 过程:部署一套全新的生产环境(绿),与当前运行的环境(蓝)完全隔离。测试通过后,一次性将负载均衡器的流量从蓝环境全部切换到绿环境。

    • 优点:发布和回滚速度极快(切换流量即可),风险低。

    • 缺点:需要两套完整的资源,成本高。

  • 金丝雀发布

    • 过程:将新版本先部署到一小部分用户或服务器(如 5%),让这部分用户先行体验新功能。验证无误后,逐步扩大新版本的范围,直到完全替代旧版本。

    • 优点:可以实时监控新版本的性能表现,发现问题只影响少量用户,风险可控。

    • 缺点:发布周期较长。

  • 灰度发布

    • 过程:与金丝雀发布类似,但划分用户的维度更丰富。不随机分配流量,而是根据特定规则(如用户ID、地理位置、用户标签等)将新版本定向发布给特定用户群体。

    • 优点:可以进行精准的A/B测试,功能针对性地开放。

    • 关系:通常认为金丝雀发布是灰度发布的一种特例,即仅按随机比例进行灰度。

4. 什么是测试左移?(Shift-Left testing)

答案:
测试左移是一种软件质量保证理念,强调在软件开发生命周期中尽早地进行测试,将测试活动从传统的开发后期“向左移动”到开发的早期阶段(如需求、设计、编码阶段)。

  • 核心实践

    • 在编码阶段,由开发人员编写和执行单元测试

    • 采用 TD

http://www.dtcms.com/a/495096.html

相关文章:

  • 东莞浩智网站建设开发wordpress 中国地图
  • 【Go】C++ 转 Go 第(一)天:环境搭建 Windows + VSCode 远程连接 Linux
  • MYSQL学习笔记(个人)(第十五天)
  • 网站登录验证码不正确云端互联网站建设
  • Zotero安装+坚果云+iPad同步方法及问题整理
  • 做彩票网站的方案网站建设资金报告
  • 基于路由器,不同域的网络A和网络B之间如何通信?
  • 【小白笔记】编程概念用最直白的方式解释
  • Docker 容器化部署 Node.js 详细手册
  • 浅析cef在win和mac上的适配
  • 营销型网站一般有哪些内容珠海公司网站建设
  • PHP 空指针引用:潜藏在运行时的
  • Android 中 Padding 与 Margin 的深度解析:从概念到实战区分
  • 关于dtoj 177 谐振之石的一些反思
  • UniverSheets最新版本测试
  • JD-Eclipse 插件核心功能与安装指南
  • kafka与zero-copy
  • 上海建站模板平台做外贸网站渠道
  • QT-常用控件(多元素控件)
  • MFC + OpenCV 图像预览显示不全中断问题解决:GDI行填充详解
  • 家庭农场做网站网站排名做不上去
  • LWIP通讯之PHY芯片LAN8720引脚详解
  • YOLOv3 :目标检测的经典融合与创新
  • 数值计算-线性方程组的迭代解法
  • win设置
  • 基于波动率自适应的ETF动态止盈止损模型构建与优化
  • C++ 继承笔记
  • H20裸金属租赁:捷智算安全隔离,独立配置保障数据安全
  • 装饰公司怎么做网站建设asp网站视频教程
  • 商业综合体 BAS 楼宇自控系统 + 能效管理系统:双系统协同打造高效低碳运营标杆