Skip to content

Commit

Permalink
fix typo
Browse files Browse the repository at this point in the history
  • Loading branch information
isno committed Jan 15, 2025
1 parent 14a49f2 commit 06cc797
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 9 deletions.
4 changes: 2 additions & 2 deletions Observability/summary.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@ given enough eyeballs, all bugs are shallow.

随着系统规模扩大、组件复杂化以及服务间依赖关系的增加,系统监控和调试难度超出了绝大部分 IT 团队的能力极限。

复杂性失控问题在工业领域同样出现过。19 世纪末,电气工程的细分领域迅速发展,尤其是 20 世纪 50 年代的航空领域,研发效率要求越来越高、运行环境越来越多样化,系统日益复杂对稳定性提出了巨大挑战。在这一背景下,匈牙利裔工程师 Rudolf Emil Kálmán 提出了“可观测性”这一概念,其核心理念是“通过系统外部的输出信号,判断工作状态并定位缺陷的根因”。
复杂性失控问题在工业领域同样出现过。19 世纪末起,电气工程的细分领域迅速发展,尤其是 20 世纪 50 年代的航空领域,研发效率要求越来越高、运行环境越来越多样化,系统日益复杂对稳定性提出了巨大挑战。在这一背景下,匈牙利裔工程师 Rudolf Emil Kálmán 提出了“可观测性”概念,其核心思想是“通过系统外部的输出信号,判断工作状态并定位缺陷的根因”。

借鉴电气系统的观测理念,我们可以利用系统输出的各种运行信息来实现复杂软件系统的可观测性。2018 年,CNCF 率先将“可观测性”概念引入 IT 领域,强调系统的可观测性是云原生时代的必备能力!从生产所需到概念发声,加之包括 Google 在内的众多大厂一拥而上。“可观测性”逐渐取代“监控”,成为云原生技术领域最热门的话题之一。
借鉴电气系统的观测理念,我们可以通过系统输出的运行信息,实现对软件系统的可观测性。2018 年,CNCF 率先将“可观测性”概念引入 IT 领域,强调系统的可观测性是云原生时代的必备能力!从生产所需到概念发声,加之包括 Google 在内的众多大厂一拥而上。“可观测性”逐渐取代“监控”,成为云原生技术领域最热门的话题之一。

:::center
![](../assets/observability.png)<br/>
Expand Down
10 changes: 6 additions & 4 deletions container/image.md
Original file line number Diff line number Diff line change
Expand Up @@ -150,10 +150,10 @@ alpine nginx ca338a969cf7 17 seconds ago 23.4MB

图 7-9 展示了 Dragonfly 的工作流程。首先,Dragonfly 会在多个节点中启动 Peer 服务(类似 P2P 的节点)。当容器系统下载镜像时,下载请求通过 Peer 转发至 Scheduler(类似 P2P 调度器),Scheduler 判断该镜像是否为首次下载:

- 如果是:Scheduler 触发回源动作,即从源服务器获取镜像文件。此过程中,Dragonfly 将镜像文件切分为多个块(称为 Piece)。每个块被缓存在不同的节点上,相关配置上报至 Scheduler,用来优化后续的调度决策
- 如果是:Scheduler 触发回源动作,即从源服务器获取镜像文件。此过程中,Dragonfly 将镜像文件切分为多个“块”( Piece)。每个块被缓存在不同的节点,相关配置上报至 Scheduler,供后续的调度决策使用
- 如果不是:Scheduler 根据配置,提供一个镜像所有块的下载调度指令。

最后,Peer 根据调度信息,从集群不同节点下载所有块,将其拼接成完整的镜像文件
最后,Peer 根据调度策略,从集群不同节点下载所有块,拼接成完整的镜像文件

:::center
![](../assets/dragonfly.png)<br/>
Expand All @@ -164,7 +164,7 @@ Dragonfly 整个镜像下载加速流程与 P2P 下载加速非常相似,二

## 7.3.5 加速容器镜像启动

容器镜像的大小直接影响启动时间,一些大型软件的镜像可能超过数 GB。例如,机器学习框架 TensorFlow 的镜像大小为 1.83 GB,冷启动时至少需要 3 分钟。
容器镜像的大小直接影响启动时间,一些大型软件的镜像可能超过数 GB。例如,机器学习框架 TensorFlow 的镜像大小为 1.83 GB,冷启动时至少需要 3 分钟。大型镜像不仅启动缓慢,镜像内的文件往往未被充分利用(业内研究表明,通常镜像中只有 6% 的内容被实际使用)[^1]

2020 年,阿里巴巴技术团队发布了 Nydus,目标是提升容器镜像的启动速度和减少镜像的存储空间。Nydus 将镜像层的数据(blobs)与元数据(bootstrap)分离,容器第一次启动时,首先拉取元数据,再按需拉取 blobs 数据。相较于拉取整个镜像层,下载的数据量大大减少。值得一提的是,Nydus 使用 FUSE 技术(Filesystem in Userspace,用户态文件系统)重构文件系统,用户几乎无需任何特殊配置(感知不到 Nydus 的存在),即可按需从远程镜像中心拉取数据,加速容器镜像启动。

Expand All @@ -182,4 +182,6 @@ Dragonfly 整个镜像下载加速流程与 P2P 下载加速非常相似,二

总结上述镜像的应用:在最初的编译阶段生成足够小的镜像。接着,利用分布式节点和智能调度(也就是 P2P 网络)加速镜像下载。最后,利用 Nydus 技术实现镜像层的按需加载。最关键的是,上述所有的技术调整,并没有破坏原有应用层流程,对于业务工程师而言,完全是透明的。

上述优化措施对于大规模集群,或对冷启动扩容延迟有严格要求的场景(如大促扩容、游戏服务器扩容等),不仅能显著降低容器启动时间,还能大幅节省网络和存储成本。
上述优化措施对于大规模集群,或对冷启动扩容延迟有严格要求的场景(如大促扩容、游戏服务器扩容等),不仅能显著降低容器启动时间,还能大幅节省网络和存储成本。

[^1]: 参见 https://indico.cern.ch/event/567550/papers/2627182/files/6153-paper.pdf
6 changes: 3 additions & 3 deletions container/orchestration.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@

字面上,“容器”这个词难以让人形象地理解真正含义,Kubernetes 中最核心的概念“Pod”也是如此。

仅靠几句简单的解释不足以让人充分理解这些概念,甚至引起误解例如,业内常常将容器和轻量级虚拟机混为一谈,如果容器类似虚拟机,那应该存在一种普适的方法,能够无缝地将虚拟机内的应用程序迁移至容器中,但现实中并不存在这种方法,还是要经过大量适配、改造工作。
几句简单的解释无法充分理解这些概念,甚至引起误解例如,业内常常将容器和轻量级虚拟机混为一谈,如果容器类似虚拟机,那应该存在一种普适的方法,能够无缝地将虚拟机内的应用程序迁移至容器中,但现实中并不存在这种方法,还是要大量的适配、改造工作。

本节,笔者将从最初的文件系统隔离开始,逐步介绍容器在不同历史阶段的作用,深入理解容器技术的演进,以及 Kubernetes 中最核心的概念 Pod 的设计背景和应用
本节,笔者将从文件系统隔离的起源出发,逐步讲解容器技术的演进过程,帮助你深入理解 Kubernetes 核心概念 Pod 的设计背景与应用

## 7.2.1 文件系统隔离

Expand Down Expand Up @@ -194,7 +194,7 @@ Pod 是一组紧密关联的容器集合,它们共享 IPC、Network 和 UTS
Infra Container 是 Pod 内第一个启动的容器,体积非常小,只有 300 KB 左右。它主要负责申请容器组的 UTS、IPC 和网络等命名空间。Pod 内的其他容器通过 setns(Linux 系统调用,用于将进程加入到指定的命名空间)来共享 Infra Container 的命名空间。此外,Infra Container 还可以作为 init 进程,用于管理子进程和回收资源等。

:::tip 额外知识
Infra Container 的逻辑非常简单,主要负责处理如 SIGTERM、SIGINT 和 SIGCHLD 等系统信号。启动后,Infra Container 执行一个永远循环的 pause() 方法,因此也常被称为“pause 容器”。
Infra Container 启动后,执行一个永远循环的 pause() 方法,因此又被称为“pause 容器”。
:::

:::center
Expand Down

0 comments on commit 06cc797

Please sign in to comment.