diff --git a/content/zh-cn/docs/concepts/storage/volumes.md b/content/zh-cn/docs/concepts/storage/volumes.md index 8f5fa6c89f..5e6362ccf4 100644 --- a/content/zh-cn/docs/concepts/storage/volumes.md +++ b/content/zh-cn/docs/concepts/storage/volumes.md @@ -23,41 +23,93 @@ weight: 10 +Kubernetes **卷**为 {{< glossary_tooltip text="Pod" term_id="pod" >}} +中的容器提供了一种通过文件系统访问和共享数据的方式。存在不同类别的卷,你可以将其用于各种用途,例如: + + +- 基于 {{< glossary_tooltip text="ConfigMap" term_id="configmap" >}} 或 + {{< glossary_tooltip text="Secret" term_id="secret" >}} 填充配置文件 +- 为 Pod 提供一些临时的涂销空间 +- 在同一个 Pod 中的两个不同容器之间共享文件系统 +- 在两个不同的 Pod 之间共享文件系统(即使这些 Pod 运行在不同的节点上) +- 持久化存储数据,这样即使 Pod 重启或被替换,存储的数据仍然可用 + +- 基于容器所在 Pod 的详细信息,将配置信息传递给运行在容器中的应用 + (例如告诉{{< glossary_tooltip text="边车容器" term_id="sidecar-container" >}}:Pod 运行在哪个命名空间) +- 以只读权限访问另一个容器镜像中的数据 + + +数据共享可以发生在容器内不同本地进程之间,或在不同容器之间,或在多个 Pod 之间。 + + +## 为什么卷很重要 {#why-volumes-are-important} + +- **数据持久性:** 容器中的文件在磁盘上是临时存放的,这给在容器中运行较重要的应用带来一些问题。 + 当容器崩溃或被停止时,容器的状态不会被保存,因此在容器生命期内创建或修改的所有文件都将丢失。 + 在崩溃期间,kubelet 会以干净的状态重启容器。 + + -容器中的文件在磁盘上是临时存放的,这给在容器中运行较重要的应用带来一些问题。 -当容器崩溃或停止时会出现一个问题。此时容器状态未保存, -因此在容器生命周期内创建或修改的所有文件都将丢失。 -在崩溃期间,kubelet 会以干净的状态重新启动容器。 -当多个容器在一个 Pod 中运行并且需要共享文件时,会出现另一个问题。 -跨所有容器设置和访问共享文件系统具有一定的挑战性。 +- **共享存储:** 当多个容器在一个 Pod 中运行并需要共享文件时,会出现另一个问题。 + 那就是在所有容器之间设置和访问共享文件系统可能会很有难度。 Kubernetes {{< glossary_tooltip text="卷(Volume)" term_id="volume" >}} 这一抽象概念能够解决这两个问题。 -阅读本文前建议你熟悉一下 [Pod](/zh-cn/docs/concepts/workloads/pods)。 + +在你学习卷、持久卷(PersistentVolume)和持久卷申领(PersistentVolumeClaim)之前, +你应该先了解 {{< glossary_tooltip term_id="Pod" text="Pods" >}}, +确保你理解 Kubernetes 如何使用 Pod 来运行容器。 -## 背景 {#background} +## 卷是如何工作的 {#how-volumes-work} +使用卷时, 在 `.spec.volumes` 字段中设置为 Pod 提供的卷,并在 +`.spec.containers[*].volumeMounts` 字段中声明卷在容器中的挂载位置。 + + -使用卷时, 在 `.spec.volumes` 字段中设置为 Pod 提供的卷,并在 -`.spec.containers[*].volumeMounts` 字段中声明卷在容器中的挂载位置。 -容器中的进程看到的文件系统视图是由它们的{{< glossary_tooltip text="容器镜像" term_id="image" >}} +当 Pod 被启动时,容器中的进程看到的文件系统视图是由它们的{{< glossary_tooltip text="容器镜像" term_id="image" >}} 的初始内容以及挂载在容器中的卷(如果定义了的话)所组成的。 其中根文件系统同容器镜像的内容相吻合。 任何在该文件系统下的写入操作,如果被允许的话,都会影响接下来容器中进程访问文件系统时所看到的内容。 -卷挂载在镜像中的[指定路径](#using-subpath)下。 +卷被挂载在镜像中的[指定路径](#using-subpath)下。 Pod 配置中的每个容器必须独立指定各个卷的挂载位置。 卷不能挂载到其他卷之上(不过存在一种[使用 subPath](#using-subpath) 的相关机制),也不能与其他卷有硬链接。 @@ -365,11 +420,11 @@ data as read-only files in plain text format. `downwardAPI` 卷用于为应用提供 {{< glossary_tooltip term_id="downward-api" text="downward API" >}} 数据。 在这类卷中,所公开的数据以纯文本格式的只读文件形式存在。 +{{< note >}} -{{< note >}} 容器以 [subPath](#using-subpath) 卷挂载方式使用 downward API 时,在字段值更改时将不能接收到它的更新。 {{< /note >}}