Skip to content

Commit

Permalink
fix: typo
Browse files Browse the repository at this point in the history
  • Loading branch information
mzlogin committed Dec 29, 2021
1 parent 407df96 commit 8b1a58b
Show file tree
Hide file tree
Showing 2 changed files with 3 additions and 3 deletions.
2 changes: 1 addition & 1 deletion immutable-infrastructure/network/cni.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ Kubernetes 开源的初期(Kubernetes 1.5 提出 CRI 规范之前),在容

:::quote 额外知识:kubenet

[kubenet](https://kubernetes.io/docs/admin/network-plugins/#kubenet)是 kubelet 内置的一个非常的简单的网络,采用网桥来解决 Pod 间通信。kubenet 会自动创建一个名为 cbr0 的网桥,当有新的 Pod 启动时,会由 kubenet 自动将其接入 cbr0 网桥中,再将控制权交还给 kubelet,完成后续的 Pod 创建流程。kubenet 采用 Host-Local 的 IP 地址管理方式,具体来说是根据当前服务器对应的 Node 资源上的`PodCIDR`字段所设的网段来分配 IP 地址。当有新的 Pod 启动时,会由本地节点的 IP 段中分配一个空闲的 IP 给 Pod 使用。
[kubenet](https://kubernetes.io/docs/admin/network-plugins/#kubenet)是 kubelet 内置的一个非常简单的网络,采用网桥来解决 Pod 间通信。kubenet 会自动创建一个名为 cbr0 的网桥,当有新的 Pod 启动时,会由 kubenet 自动将其接入 cbr0 网桥中,再将控制权交还给 kubelet,完成后续的 Pod 创建流程。kubenet 采用 Host-Local 的 IP 地址管理方式,具体来说是根据当前服务器对应的 Node 资源上的`PodCIDR`字段所设的网段来分配 IP 地址。当有新的 Pod 启动时,会由本地节点的 IP 段中分配一个空闲的 IP 给 Pod 使用。

:::

Expand Down
4 changes: 2 additions & 2 deletions immutable-infrastructure/storage/storage-evolution.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Kubernetes 存储设计

Kubernete 在规划持久化存储能力的时候,依然遵循着它的一贯设计哲学,用户负责以资源和声明式 API 来描述自己的意图,Kubernetes 负责根据用户意图来完成具体的操作。不过,就算仅仅是描述清楚用户的存储意图也并不是一件容易的事,相比起 Kubernetes 提供其他能力的资源,其内置的存储资源显得格外地复杂,甚至可以说是有些烦琐的。如果你是 Kubernetes 的拥趸,无法认同笔者对 Kubernetes 的批评,那不妨来看一看下列围绕着“Volume”所衍生出的概念,它们仅仅是 Kubernetes 存储相关的概念的一个子集而已,请你思考一下这些概念是否全都是必须的,是否还有整合的空间,是否有化繁为简的可能性:
Kubernetes 在规划持久化存储能力的时候,依然遵循着它的一贯设计哲学,用户负责以资源和声明式 API 来描述自己的意图,Kubernetes 负责根据用户意图来完成具体的操作。不过,就算仅仅是描述清楚用户的存储意图也并不是一件容易的事,相比起 Kubernetes 提供其他能力的资源,其内置的存储资源显得格外地复杂,甚至可以说是有些烦琐的。如果你是 Kubernetes 的拥趸,无法认同笔者对 Kubernetes 的批评,那不妨来看一看下列围绕着“Volume”所衍生出的概念,它们仅仅是 Kubernetes 存储相关的概念的一个子集而已,请你思考一下这些概念是否全都是必须的,是否还有整合的空间,是否有化繁为简的可能性:

> - **概念**:[Volume](https://kubernetes.io/docs/concepts/storage/volumes/)、[PersistentVolume](https://kubernetes.io/docs/concepts/storage/persistent-volumes/)、[PersistentVolumeClaim](https://v1-17.docs.kubernetes.io/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims)、[Provisioner](https://kubernetes.io/docs/concepts/storage/dynamic-provisioning/)、[StorageClass](https://v1-17.docs.kubernetes.io/docs/concepts/storage/storage-classes/)、[Volume Snapshot](https://v1-17.docs.kubernetes.io/docs/concepts/storage/volume-snapshots/)、[Volume Snapshot Class](https://v1-17.docs.kubernetes.io/docs/concepts/storage/volume-snapshot-classes/)、[Ephemeral Volumes](https://kubernetes.io/docs/concepts/storage/ephemeral-volumes/)、[FlexVolume Driver](https://github.com/kubernetes/community/blob/master/contributors/devel/sig-storage/flexvolume.md)、[Container Storage Interface](https://github.com/container-storage-interface/spec/blob/master/spec.md)、[CSI Volume Cloning](https://v1-17.docs.kubernetes.io/docs/concepts/storage/volume-pvc-datasource/)、[Volume Limits](https://v1-17.docs.kubernetes.io/docs/concepts/storage/storage-limits/)、[Volume Mode](https://kubernetes.io/docs/concepts/storage/persistent-volumes/#volume-mode)、[Access Modes](https://kubernetes.io/docs/concepts/storage/persistent-volumes/#volume-mode)、[Storage Capacity](https://kubernetes.io/docs/concepts/storage/storage-capacity/)……
> - **操作**[Mount](https://kubernetes.io/docs/concepts/storage/persistent-volumes/#mount-options)[Bind](https://kubernetes.io/docs/concepts/storage/persistent-volumes/#using)[Use](https://kubernetes.io/docs/concepts/storage/persistent-volumes/#using)[Provision](https://kubernetes.io/docs/concepts/storage/persistent-volumes/#provisioning)[Claim](https://kubernetes.io/docs/concepts/storage/persistent-volumes/#claims-as-volumes)[Reclaim](https://kubernetes.io/docs/concepts/storage/persistent-volumes/#reclaiming)[Reserve](https://kubernetes.io/docs/concepts/storage/persistent-volumes/#reserving-a-persistentvolume)[Expand](https://kubernetes.io/docs/concepts/storage/persistent-volumes/#expanding-persistent-volumes-claims)[Clone](https://kubernetes.io/docs/concepts/storage/volume-pvc-datasource/#usage)[Schedule](https://kubernetes.io/docs/concepts/storage/storage-capacity/#scheduling)[Reschedule](https://kubernetes.io/docs/concepts/storage/storage-capacity/#rescheduling)……
Expand All @@ -15,7 +15,7 @@ Kubernete 在规划持久化存储能力的时候,依然遵循着它的一贯
| -------- | ----------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------ |
| EmptyDir | HostPath<br/>GitRepo<br/>Local<br/>Secret<br/>ConfigMap<br/>DownwardAPI | AWS Elastic Block Store<br/>GCE Persistent Disk<br/>Azure Data Disk<br/>Azure File Storage<br/>vSphere<br/>CephFS and RBD<br/>GlusterFS<br/>iSCSI<br/>Cinder<br/>Dell EMC ScaleIO<br/>…… | FlexVolume<br/>CSI |

迫使 Kubernetes 存储设计成如此复杂,还有另外一个非技术层面的原因:Kubernetes 是一个工业级的、面向生产应用的容器编排系统,这意味着即使发现某些已存在的功能有更好的实现方式,直到旧版本被淘汰出生产环境以前,原本已支持的功能都不允许突然间被移除或者替换掉,否则,如果生产系统一更新版本,已有的功能就出现异常,那对产品的累积的良好信誉是相当不利的
迫使 Kubernetes 存储设计成如此复杂,还有另外一个非技术层面的原因:Kubernetes 是一个工业级的、面向生产应用的容器编排系统,这意味着即使发现某些已存在的功能有更好的实现方式,直到旧版本被淘汰出生产环境以前,原本已支持的功能都不允许突然间被移除或者替换掉,否则,如果生产系统一更新版本,已有的功能就出现异常,那对产品累积良好的信誉是相当不利的

为了兼容而导致的烦琐,在一定程度上可以被谅解,但这样的设计的确令 Kubernetes 的学习曲线变得更加陡峭。Kubernets 官方文档的主要作用是参考手册,它并不会告诉你 Kubernetes 中各种概念的演化历程、版本发布新功能的时间线、改动的缘由与背景等信息。Kubernetes 的文档系统只会以“平坦”的方式来陈述所有目前可用的功能,这有利于熟练的管理员快速查询到关键信息,却不利于初学者去理解 Kubernetes 的设计思想,由于难以理解那些概念和操作的本意,往往只能死记硬背,也很难分辨出它们应该如何被“更正确”的使用。介绍 Kubernetes 设计理念的职责,只能由[Kubernetes 官方的 Blog](https://kubernetes.io/blog/)这类定位超越了帮助手册的信息渠道,或者其他非官方资料去完成。本节,笔者会以 Volume 概念从操作系统到 Docker,再到 Kubernetes 的演进历程为主线,去梳理前面提及的那些概念与操作,以此帮助大家理解 Kubernetes 的存储设计。

Expand Down

0 comments on commit 8b1a58b

Please sign in to comment.