SREWorks云原生数智运维工程实践-云原生运维实战篇-SREWorks持续交付云原生化:镜像构建(中)

简介: SREWorks云原生数智运维工程实践-

二、 架构演进

 

1. Docker build机制

 

按照Docker官方文档给出的架构图,Docker主要分为Client,Host,Registry三个部分。

 

image.png

 

Docker按照C/S架构,通过Client与Host进行通信。Host作为后端,负责处理所有Client请求以及后端模块的调度及管理工作。Registry作为中心化的镜像仓库,存储所有需要保存的镜像。

 

此处,我们主要关注docker build命令。可以看到Host中Docker daemon模块负责接受和处理Client的命令请求。Docker daemon内部架构此处不做详细描述,只需要知道Docker daemon在接受到docker build命令之后,会启动一个create job去执行构建。在构建过程中,可能会需要到远程Regiestry中心镜像仓库拉取基础镜像如果本地不存在的话。在构建完成之后,Host会将构建好的镜像保存在本地的Repository中。

 

Docker daemon作为docker的服务端,由于需要系统的ROOT权限等要求,导致其不能天然地运行在另一个docker容器之中。这也为镜像构建云原生化提出了新的技术问题。

 

2. 初始态:Docker out of K8S

 

在Docker build机制的支持下,在最初阶段是通过在K8S外搭建构建机器做镜像的构建任务,其架构如下:

 

 

 

image.png

 

AppManager:是SREWorks的中心管控服务,负责与K8S底座交互,应用构建发布及生命周期管理等核心功能在初始态,AppManager在需要执行镜像构建时,直接连接部署在K8S之外的某个ECS上Docker daemon来执行镜像构建。依然处于“On-Machine”的发展阶段。

 

这种方式的缺点包括但不限于:

 

安全性差:当这台ECS被劫持之后,恶意程序通过在镜像构建过程中注入非法代码,能够影响所有部署在云上的应用

效率较低:当构建任务过多时,一起抢占ECS机器资源,会引起构建拥塞。

 

3. 过渡态:Docker out of Docker

 

Docker out of Docker,下面简称“DooD”,依然使用docker build机制的远程构建能力,每个执行构建任务的pod都连接到本地node的Docker daemon实现镜像构建。

 

通过DooD的方式,AppManager可以动态的在集群层面拉起pod去执行镜像构建任务,而不用再去跟集群外部服务打交道。镜像构建任务可以均匀的分布到每台node,避免构建拥塞。且DooD通过操作基础设施node节点,实现了一种“伪弹性构建”的能力。

 

image.png

 

DooD的缺点也是显而易见的:

 

实施成本高:需要人工为每台Node节点安装Docker daemon程序,并保证其正确运行

安全性差构建Pod有能力通过node节点Docker daemon进程影响其他Pod

资源浪费由于每台node节点都常置Docker daemon服务进程,不仅没有减少资源消耗,反而加重了资源浪费,这也是为什么称其为“伪弹性构建”。

 

4. 终态:Docker in Docker

 

Docker in Docker,下面简称“DinD”,与DooD是对应的,表示容器内client直接连接容器自身的Docker daemon进程来完成镜像构建任务。其架构如下:

 

image.png

 

DinD的架构,实现了按需拉起执行镜像构建任务的Pod,并在任务完成后及时归还Pod资源。构建任务的Pod也不再感知Node机器,所有管控及调度工作由K8S等云底座统一实现。

 

其优点包括:

 

弹性构建:所有构建Pod所需资源由K8S等云底座统一调度和回收

安全可靠:构建Pod满足所有资源及权限管控要求,更加安全可控

无服务器:Pod是容器化的,不再运行在ECS等机器之上

快速交付:在集群层面完成构建任务调度,更加及时且可扩展

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
4月前
|
运维 应用服务中间件 持续交付
自动化运维的利器:Ansible实战应用
【9月更文挑战第33天】本文将带你深入理解Ansible,一个强大的自动化运维工具。我们将从基础概念开始,逐步探索其配置管理、任务调度等功能,并通过实际案例演示其在自动化部署和批量操作中的应用。文章旨在通过浅显易懂的语言和实例,为读者揭开Ansible的神秘面纱,展示其在简化运维工作中的强大能力。
217 64
|
3月前
|
Prometheus 运维 监控
智能运维实战:Prometheus与Grafana的监控与告警体系
【10月更文挑战第26天】Prometheus与Grafana是智能运维中的强大组合,前者是开源的系统监控和警报工具,后者是数据可视化平台。Prometheus具备时间序列数据库、多维数据模型、PromQL查询语言等特性,而Grafana支持多数据源、丰富的可视化选项和告警功能。两者结合可实现实时监控、灵活告警和高度定制化的仪表板,广泛应用于服务器、应用和数据库的监控。
425 3
|
5月前
|
运维 安全 应用服务中间件
自动化运维的利剑:Ansible实战应用
【9月更文挑战第24天】在现代IT基础设施的快速迭代与扩展中,自动化运维成为提升效率、保障稳定性的关键。本文将深入探讨Ansible这一流行的自动化工具,通过实际案例分析其如何简化日常运维任务,优化工作流程,并提高系统的可靠性和安全性。我们将从Ansible的基础概念入手,逐步深入到高级应用技巧,旨在为读者提供一套完整的Ansible应用解决方案。
|
1月前
|
运维 自然语言处理 Ubuntu
解锁高效运维新姿势!操作系统智能助手OS Copilot新功能实战测评
阿里云OS Copilot经过多轮迭代,现已支持多端操作系统(包括Ubuntu、CentOS、Anolis OS等)及aarch64架构,极大扩展了其适用范围。新特性包括阿里云CLI调用、系统运维及调优工具的直接调用、Agent模式实装以及复杂任务处理能力。这些更新显著提升了用户体验和效率,特别是在处理紧急情况时,OS Copilot能快速查找并执行命令,节省大量时间和精力。此外,通过自然语言交互,用户可以轻松完成如系统健康检查、文件操作及日志分析等任务。总之,OS Copilot已从内测时的辅助工具进化为合格的贴身管家,极大地简化了日常运维工作。
|
3月前
|
运维 Cloud Native 云计算
云原生之旅:Docker容器化实战
本文将带你走进云原生的世界,深入理解Docker技术如何改变应用部署与运维。我们将通过实际案例,展示如何利用Docker简化开发流程,提升应用的可移植性和伸缩性。文章不仅介绍基础概念,还提供操作指南和最佳实践,帮助你快速上手Docker,开启云原生的第一步。
|
3月前
|
运维 监控 应用服务中间件
自动化运维的利器:Ansible实战应用
【10月更文挑战第41天】在现代IT运维领域,自动化已成为提高效率、减少错误的关键。Ansible作为一种简单而强大的自动化工具,正被越来越多的企业采纳。本文将通过实际案例,展示如何使用Ansible简化日常运维任务,包括配置管理和批量部署等,旨在为读者提供一种清晰、易懂的自动化解决方案。
56 1
|
3月前
|
运维 Ubuntu 应用服务中间件
自动化运维工具Ansible的实战应用
【10月更文挑战第36天】在现代IT基础设施管理中,自动化运维已成为提升效率、减少人为错误的关键手段。本文通过介绍Ansible这一流行的自动化工具,旨在揭示其在简化日常运维任务中的实际应用价值。文章将围绕Ansible的核心概念、安装配置以及具体使用案例展开,帮助读者构建起自动化运维的初步认识,并激发对更深入内容的学习兴趣。
101 4
|
3月前
|
消息中间件 运维 UED
消息队列运维实战:攻克消息丢失、重复与积压难题
消息队列(MQ)作为分布式系统中的核心组件,承担着解耦、异步处理和流量削峰等功能。然而,在实际应用中,消息丢失、重复和积压等问题时有发生,严重影响系统的稳定性和数据的一致性。本文将深入探讨这些问题的成因及其解决方案,帮助您在运维过程中有效应对这些挑战。
56 1
|
4月前
|
运维 监控 jenkins
运维自动化实战:利用Jenkins构建高效CI/CD流程
【10月更文挑战第18天】运维自动化实战:利用Jenkins构建高效CI/CD流程
|
4月前
|
运维 关系型数据库 MySQL
自动化运维工具Ansible的实战应用
【10月更文挑战第9天】在现代IT运维领域,效率和可靠性是衡量一个系统是否健康的重要指标。自动化运维工具Ansible因其简洁、易用的特性,成为了众多企业和开发者的首选。本文将通过实际案例,展示如何利用Ansible进行日常的运维任务,包括配置管理、软件部署以及批量操作等,帮助读者深入理解Ansible的应用场景及其带来的效益。

热门文章

最新文章