Skip to content

Commit

Permalink
fix typo
Browse files Browse the repository at this point in the history
  • Loading branch information
isno committed Jan 1, 2025
1 parent dbd84da commit 1a051e7
Show file tree
Hide file tree
Showing 4 changed files with 16 additions and 21 deletions.
6 changes: 2 additions & 4 deletions application-centric/Controller.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ IaD 思想在 Kubernetes 上的体现,就是执行任何操作,只需要提

所以说,Kubernetes v1.7 版本引入了 CRD(自定义资源定义)功能,实质上赋予用户创建和管理自定义“数据”、将特定业务需求抽象为 Kubernetes 原生对象的能力。

例如,可以定义描述持续交付流程的 CRD,描述任务的 Task、描述流水线的 Pipeline 等等。也就说,完全可以在 Kuberntes 之上构建一套全新的 CI/CD 系统。
例如,定义持续交付领域中,描述任务的 Task、描述流水线的 Pipeline 的 CRD。也就说,完全可以在 Kuberntes 之上构建一套全新的 CI/CD 系统。

```yaml
apiVersion: tekton.dev/v1beta1
Expand All @@ -52,9 +52,7 @@ spec:
echo "Hello, Tekton!"
```
有了 CRD,工程师不再受限于 Kubernetes 内置资源的表达能力,可以根据需求自定义出数据库、CI/CD 流程、消息队列、数字证书等等资源类型。再加上自定义的“控制器”,便可把特定的业务逻辑和基础设施能力无缝集成到 Kubernetes 中。更重要的是,使用者只需理解 CRD 定义的 Schema,即可通过标准的 API 对象操作方式管理和使用这些资源。
## 构建上层抽象
有了 CRD,工程师不再受限于 Kubernetes 内置资源的表达能力,可以根据需求自定义数据库、CI/CD 流程、消息队列、数字证书等等资源类型。再加上自定义的“控制器”,便可把特定的业务逻辑和基础设施能力无缝集成到 Kubernetes 中。
4 changes: 2 additions & 2 deletions application-centric/OAM.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ OAM 项目有两个部分,OAM 规范(spec)和 OAM 规范的 Kubernetes 实

详细的说,OAM 规范是基于自定义资源讲原先 All-in-One 的复杂配置做了一定层次的解耦,应用开发者、运维人员和基础设施运维人员以一种标准化的方式连接起来。一言以蔽之:OAM 是一个高度可扩展的应用定义与能力装配模型。

- 应用组件(Component):
- 运维特征(Trait):
- 应用组件(Component):具有独立功能、可重用和可替换的模块。无论是前端,还是后端使用组件组成应用的思想屡见不鲜。
- 运维特征(Trait):可随时绑定给待部署组件的、模块化、可拔插的运维能力,比如:副本数调整(手动、自动)、数据持久化、 设置网关策略、自动设置 DNS 解析等。
-

它强调一个现代应用是多个“组件”(Component)的集合,而非一个简单的工作负载或者 K8s Operator。更进一步的,OAM 把这个应用所需的“运维策略”(Trait)也认为是一个应用的一部分,在 OAM 中,一个应用程序包含三个核心理念:
Expand Down
17 changes: 8 additions & 9 deletions application-centric/Operator.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,22 +29,21 @@ spec:
storage: 8Gi
```
Operator 本身在实现上,其实是在 Kubernetes 声明式 API 基础上的一种“微创新”。它利用了 CRD 构建“高层抽象”,又通过 Kubernetes 原生的“控制器模式”,完成了一个面向分布式应用终态的“调谐”过程。
Operator 的实现上,其实是 Kubernetes 声明式 API 基础上的一种“微创新”。它利用了 CRD 构建“高层抽象”,又通过 Kubernetes 原生的“控制器模式”,将复杂应用的运维逻辑代码化
使用 CRD 构建“高层抽象”、使用配套的控制器来维护期望状态,带来的好处远不止使用简单。
使用 CRD 构建“高层抽象”、使用配套的控制器来维护期望状态,带来的好处远不止使用简单。以往的高可用、扩展收缩、以及故障恢复等等运维经验沉淀为代码,通过 Operator 继承。只要几行代码,就可以复用最专业的运维能力。
就是把运维的经验沉淀为代码,实现运维的代码化、自动化、智能化。以往的高可用、扩展收缩,以及故障恢复等等运维操作,都通过 Operator 进行沉淀下来。
Red Hat 今天与 AWS、Google Cloud 和 Microsoft 合作推出了 OperatorHub.io。
不过,开发 Operator 的门槛相对较高,需要既了解 Kubernetes、又了解开发、又了解运维,通常又专业的组件公司开发。
2019 年,Red Hat、AWS、Google Cloud 和 Microsoft 联合推出了 OperatorHub.io,为 Kubernetes 社区提供一个官方的、经过验证的 Operator 集中目录。用户搜索所需的 Operator,查看说明文档和安装指南,通过几行命令即可在目标集群上完成 Operator 的安装。
:::center
![](../assets/operatorhub.io.png)<br/>
图 3-14 operatorhub.io
:::
现在很多复杂分布式系统都有了官方或者第三方提供的 Operator,从数据库(如 MySQL、PostgreSQL、MongoDB)到消息队列(如 RabbitMQ、Kafka),再到监控系统(如 Prometheus)。
这些 Operator 提供了 Kubernetes 集群中各种服务和应用程序的生命周期管理。
无论是 Helm、Kustomize 或者是 CRD + Operator ,它们其实在自领域承载一个“组件”的概念。但对于一个完整的“应用”,即面向具体业务场景的定义、部署和运行需求,仍旧缺乏思想指导和有效的解决手段。
无论是 Helm、Kustomize 或者是 CRD + Operator ,它们在各自领域承载的是一个“组件”的概念,对于一个完整的“应用”,即面向具体业务场景的定义、部署和运行需求,仍旧缺乏思想指导和有效的解决手段。
10 changes: 4 additions & 6 deletions container/orchestration.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ chroot 只是改变了进程的根目录,并未创建真正独立、安全的

chroot 最初的目的是为了实现文件系统的隔离,并非专门为容器设计。

后来 Linux 吸收了 chroot 的设计理念,先是在 2.4.19 引入了 Mount 命名空间,这样就可以隔离挂载文件系统。又想到进程间通信也需要隔离,就有了 IPC(Process ID)命名空间。同时,容器还需要一个独立的主机名以便在网络中标识自己,于是有了 UTC(UNIX Time-Sharing)命名空间。有了独立的主机名,自然还要有独立的 IP、端口、路由等,又有了 Network 命名空间
后来 Linux 吸收了 chroot 的设计理念,先是在 2.4.19 引入了 Mount 命名空间,这样就可以隔离挂载文件系统。又想到进程间通信也需要隔离,就有了 IPC(Process ID)命名空间。同时,容器还需要一个独立的主机名以便在网络中标识自己,于是有了 UTS(UNIX Time-Sharing)命名空间。有了独立的主机名,自然要有配套的 IP、端口、路由等,于是 Network 命名空间应用而生

从 Linux 内核 2.6.19 开始,陆续引入了 UTS、IPC、PID、Network 和 User 等命名空间。到 Linux 内核 3.8 版本时,Linux 已经实现了容器所需的六项基本资源隔离。

Expand Down Expand Up @@ -274,15 +274,13 @@ Pod 承担的另一个重要职责是作为调度的原子单位。

组合多种不同角色的容器,共享资源、统一调度编排,在 Kubernetes 中是一种非常经典的容器设计模式 —— Sidecar(边车)模式。

在 Sidecar 模式中,一个主容器(主要处理业务逻辑)与一个或多个辅助容器(提供附加功能)共享同一个 Pod。辅助容器实现特性的技术需求(如日志记录、监控、安全性或数据同步),将非业务逻辑从应用中剥离。

如图 7-6 所示的 Sidecar 容器设计模式,能看到 Sidecar 容器通过增强或扩展主应用容器的功能,使开发一个高内聚、低耦合的软件变的更加容易。
如图 7-6 所示,在 Sidecar 模式下,一个主容器(负责业务逻辑处理)与一个或多个辅助容器(提供附加功能)同处一个 Pod 内,辅助容器承担非业务逻辑的职责,例如日志记录、监控、安全保障或数据同步,将这部分逻辑从应用中剥离,使得开发一个高内聚、低耦合的软件变的更加容易。

:::center
![](../assets/sidecar.svg)<br/>
图 7-6 容器中的 Sidecar 边车设计模式
图 7-6 容器 Sidecar 设计模式
:::

本书第 8 章《服务网格技术》中,笔者将以代理型 Sidecar 为例,进一步阐述 Sidecar 容器设计模式
本书第 8 章《服务网格技术》中,笔者将以代理型 Sidecar 为例,进一步阐述容器 Sidecar 设计模式

[^1]: 在 2000 年,Linux 内核 2.3 版本引入 pivot_root 技术来实现更安全的文件隔离。现如今的容器技术 LXC、Docker 等等都是使用 pivot_root 来实现文件隔离的。

0 comments on commit 1a051e7

Please sign in to comment.