From 0766e35b0cdb31c70f179ad885d997cf0991cd3a Mon Sep 17 00:00:00 2001 From: yixin21 <66355657+yixin21@users.noreply.github.com> Date: Mon, 10 Aug 2020 21:27:01 +0800 Subject: [PATCH 01/18] Create 2019-03-07-raw-block-volume-support-to-beta.md zh-trans 2019-03-07-raw-block-volume-support-to-beta.md --- ...-03-07-raw-block-volume-support-to-beta.md | 219 ++++++++++++++++++ 1 file changed, 219 insertions(+) create mode 100644 content/zh/blog/_posts/2019-03-07-raw-block-volume-support-to-beta.md diff --git a/content/zh/blog/_posts/2019-03-07-raw-block-volume-support-to-beta.md b/content/zh/blog/_posts/2019-03-07-raw-block-volume-support-to-beta.md new file mode 100644 index 0000000000..c811534089 --- /dev/null +++ b/content/zh/blog/_posts/2019-03-07-raw-block-volume-support-to-beta.md @@ -0,0 +1,219 @@ +--- +title: Raw Block Volume 支持 Beta 版本 +date: 2019-03-07 +--- + + + +**作者:** +Ben Swartzlander (NetApp), Saad Ali (Google) + +Kubernetes v1.13 中的 raw block volume 开始支持 Beta 版本。此功能允许将持久卷作为块设备而不是作为已安装的文件系统公开在容器内部。 + + +## 什么是块设备? + +块设备允许对固定大小的块中的数据进行随机访问。硬盘驱动器,SSD 和 CD-ROM 驱动器都是块设备。 + +通常,持久性性存储是在块设备(例如磁盘或 SSD)顶部的文件系统(例如 ext4)的分层方式中实现的。接下来应用程序进行读取和写入文件,不对块进行操作。操作系统负责使用指定的文件系统将文件作为块读写进底层设备中。 + +值得注意的是,整个磁盘都是块设备,磁盘分区也是如此,存储区域网络(SAN)设备中的 LUN 也是一样的。 + + +## 为什么要将 raw block volume 添加到 kubernetes? + +有些特殊的应用程序需要直接访问块设备,例如,文件系统层会引入不必要的开销。最常见的情况是数据库,通常会直接在底层存储上形成数据。Raw block 设备还通常由能自己实现某种存储服务的软件(软件定义的存储系统)使用。 + + +从程序员的角度来看,块设备是一个非常大的字节数组,具有一些最小的读写颗粒度,通常为 512 个字节,大部分情况为 4K 或更大。 + +随着在 Kubernetes 中运行数据库软件和存储基础架构软件变得越来越普遍,在 Kubernetes 中对 raw block 设备支持的需求变得越来越重要。 + + +## 哪些卷插件支持 raw block? + +在发布此博客时,以下 in-tree 卷类型支持 raw block: + +- AWS EBS +- Azure Disk +- Cinder +- Fibre Channel +- GCE PD +- iSCSI +- Local volumes +- RBD (Ceph) +- Vsphere + + +Out-of-tree [CSI 卷驱动程序](https://kubernetes.io/blog/2019/01/15/container-storage-interface-ga/) 可能也支持 raw block volume。 Kubernetes CSI 对 raw block volume 的支持目前为 alpha 版本。参考 [这篇](https://kubernetes-csi.github.io/docs/raw-block.html) 文档。 + + +## Kubernetes raw block volume 的 API + +raw block volume 与普通 volume 有很多共同点。这两者都通过创建与 `PersistentVolume` 对象绑定的 `PersistentVolumeClaim` 对象进行请求,并通过将它们加入到 `PodSpec` 的 volume 数组中来连接到 Kubernetes 中的 Pod。 + +但是有两个重要的区别。首先,要请求 raw block 的 `PersistentVolumeClaim`,必须在 `PersistentVolumeClaimSpec` 中设置 `volumeMode = "Block"`。保留 `volumeMode` 为空白,与传统设置方式中的指定 `volumeMode = "Filesystem"` 是一样的。`PersistentVolumes` 在其 `PersistentVolumeSpec` 中也有一个 `volumeMode` 字段,`"Block"` 类型的 PVC 只能绑定到 `"Block"` 类型的 PV 上,而`"Filesystem"` 类型的 PVC 只能绑定到 `"Filesystem"` PV 上。 + + +其次,在 Pod 中使用 raw block volume 时,必须在 `PodSpec` 的 Container 部分指定一个 `VolumeDevice` ,而不是 `VolumeMount`。`VolumeDevices` 具备 `devicePaths` 而不是 `mountPaths`,在容器中,应用程序将看到位于该路径的设备,而不是装入的文件系统的设备。 + +应用程序打开、读取和写入容器内的设备节点,就像它们在非容器化或虚拟环境中与系统上的任何块设备交互一样。 + + +## 创建一个新的 raw block PVC + +首先,请确保与您选择的存储类关联的配置程序支持 raw block。然后创建 PVC。 + +``` +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: my-pvc +spec: + accessModes: + - ReadWriteMany + volumeMode: Block + storageClassName: my-sc + resources: + requests: + storage: 1Gi +``` + + +## 使用 raw block PVC + +在 Pod 定义中使用 PVC 时,需要选择块设备的设备路径,而不是文件系统的安装路径。 + +``` +apiVersion: v1 +kind: Pod +metadata: + name: my-pod +spec: + containers: + - name: my-container + image: busybox + command: + - sleep + - “3600” + volumeDevices: + - devicePath: /dev/block + name: my-volume + imagePullPolicy: IfNotPresent + volumes: + - name: my-volume + persistentVolumeClaim: + claimName: my-pvc +``` + + +## 作为存储供应商,我如何在 CSI 插件中添加对 raw block 设备的支持? + +CSI 插件的 raw block 支持仍然是 alpha 版本,但是现在可以改进了。[CSI 规范](https://github.com/container-storage-interface/spec/blob/master/spec.md) 详细说明了如何处理具有 `BlockVolume` 功能而不是 `MountVolume` 功能的卷的请求。CSI 插件可以支持两种类型的卷,也可以支持其中一种或另一种。更多详细信息,请查看 [这个文档](https://kubernetes-csi.github.io/docs/raw-block.html)。 + + + +## 问题/陷阱 + +由于块设备实质上还是设备,因此可以从容器内部对其进行底层操作,而文件系统的卷则无法执行这些操作。例如,实际上是块设备的 SCSI 磁盘支持使用 Linux ioctl 向设备发送 SCSI 命令。 + + +默认情况下,Linux 不允许容器将 SCSI 命令从容器内部发送到磁盘。为此,必须向容器安全层级认证 `SYS_RAWIO` 功能实现这种行为。请参阅 [这篇](/docs/tasks/configure-pod-container/security-context/#set-capabilities-for-a-container) 文档。 + +另外,尽管 Kubernetes 保证可以将块设备交付到容器中,但不能保证它实际上是 SCSI 磁盘或任何其他类型的磁盘。用户必须确保所需的磁盘类型与 Pod 一起使用,或只部署可以处理各种块设备类型的应用程序。 + + +## 如何学习更多? + +在此处查看有关 snapshot 功能的其他文档:[Raw Block Volume 支持](/docs/concepts/storage/persistent-volumes/#raw-block-volume-support) + +如何参与进来? + +加入 Kubernetes 存储 SIG 和 CSI 社区,帮助我们添加更多出色的功能并改进现有功能,就像 raw block 存储一样! + +https://github.com/kubernetes/community/tree/master/sig-storage +https://github.com/container-storage-interface/community/blob/master/README.md + + +特别感谢所有为 Kubernetes 增加 block volume 支持的贡献者,包括: + +- Ben Swartzlander (https://github.com/bswartz) +- Brad Childs (https://github.com/childsb) +- Erin Boyd (https://github.com/erinboyd) +- Masaki Kimura (https://github.com/mkimuram) +- Matthew Wong (https://github.com/wongma7) +- Michelle Au (https://github.com/msau42) +- Mitsuhiro Tanino (https://github.com/mtanino) +- Saad Ali (https://github.com/saad-ali) From 3688890dbeceaa46eac58a394b2e3f7b2b612e01 Mon Sep 17 00:00:00 2001 From: yixin21 <66355657+yixin21@users.noreply.github.com> Date: Tue, 18 Aug 2020 09:11:41 +0800 Subject: [PATCH 02/18] Update content/zh/blog/_posts/2019-03-07-raw-block-volume-support-to-beta.md Co-authored-by: Qiming Teng --- .../blog/_posts/2019-03-07-raw-block-volume-support-to-beta.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/zh/blog/_posts/2019-03-07-raw-block-volume-support-to-beta.md b/content/zh/blog/_posts/2019-03-07-raw-block-volume-support-to-beta.md index c811534089..703666a1bb 100644 --- a/content/zh/blog/_posts/2019-03-07-raw-block-volume-support-to-beta.md +++ b/content/zh/blog/_posts/2019-03-07-raw-block-volume-support-to-beta.md @@ -1,5 +1,5 @@ --- -title: Raw Block Volume 支持 Beta 版本 +title: Raw Block Volume 支持进入 Beta date: 2019-03-07 --- ## 什么是块设备? -块设备允许对固定大小的块中的数据进行随机访问。硬盘驱动器,SSD 和 CD-ROM 驱动器都是块设备。 +块设备允许对固定大小的块中的数据进行随机访问。硬盘驱动器、SSD 和 CD-ROM 驱动器都是块设备的例子。 通常,持久性性存储是在块设备(例如磁盘或 SSD)顶部的文件系统(例如 ext4)的分层方式中实现的。接下来应用程序进行读取和写入文件,不对块进行操作。操作系统负责使用指定的文件系统将文件作为块读写进底层设备中。 From 6fbd06a4f7fcf5efa3a9c068fcfa87c5456cc41b Mon Sep 17 00:00:00 2001 From: yixin21 <66355657+yixin21@users.noreply.github.com> Date: Tue, 18 Aug 2020 09:14:43 +0800 Subject: [PATCH 04/18] Update content/zh/blog/_posts/2019-03-07-raw-block-volume-support-to-beta.md Co-authored-by: Qiming Teng --- .../blog/_posts/2019-03-07-raw-block-volume-support-to-beta.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/zh/blog/_posts/2019-03-07-raw-block-volume-support-to-beta.md b/content/zh/blog/_posts/2019-03-07-raw-block-volume-support-to-beta.md index 9374e2e6b0..e597f0e26f 100644 --- a/content/zh/blog/_posts/2019-03-07-raw-block-volume-support-to-beta.md +++ b/content/zh/blog/_posts/2019-03-07-raw-block-volume-support-to-beta.md @@ -18,7 +18,7 @@ Kubernetes v1.13 moves raw block volume support to beta. This feature allows per **作者:** Ben Swartzlander (NetApp), Saad Ali (Google) -Kubernetes v1.13 中的 raw block volume 开始支持 Beta 版本。此功能允许将持久卷作为块设备而不是作为已安装的文件系统公开在容器内部。 +Kubernetes v1.13 中对原生数据块卷(Raw Block Volume)的支持进入 Beta 阶段。此功能允许将持久卷作为块设备而不是作为已挂载的文件系统暴露在容器内部。 -从程序员的角度来看,块设备是一个非常大的字节数组,具有一些最小的读写颗粒度,通常为 512 个字节,大部分情况为 4K 或更大。 +从程序员的角度来看,块设备是一个非常大的字节数组,具有某种最小读写粒度,通常为 512 个字节,大部分情况为 4K 或更大。 随着在 Kubernetes 中运行数据库软件和存储基础架构软件变得越来越普遍,在 Kubernetes 中对 raw block 设备支持的需求变得越来越重要。 From 841bc5209eb43fabff94f5b88ce6aeda23e200a1 Mon Sep 17 00:00:00 2001 From: yixin21 <66355657+yixin21@users.noreply.github.com> Date: Tue, 18 Aug 2020 09:20:14 +0800 Subject: [PATCH 07/18] Update content/zh/blog/_posts/2019-03-07-raw-block-volume-support-to-beta.md Co-authored-by: Qiming Teng --- .../blog/_posts/2019-03-07-raw-block-volume-support-to-beta.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/zh/blog/_posts/2019-03-07-raw-block-volume-support-to-beta.md b/content/zh/blog/_posts/2019-03-07-raw-block-volume-support-to-beta.md index dd7ace9c69..e63945e3ff 100644 --- a/content/zh/blog/_posts/2019-03-07-raw-block-volume-support-to-beta.md +++ b/content/zh/blog/_posts/2019-03-07-raw-block-volume-support-to-beta.md @@ -44,7 +44,7 @@ There are some specialized applications that require direct access to a block de ---> ## 为什么要将 raw block volume 添加到 kubernetes? -有些特殊的应用程序需要直接访问块设备,例如,文件系统层会引入不必要的开销。最常见的情况是数据库,通常会直接在底层存储上形成数据。Raw block 设备还通常由能自己实现某种存储服务的软件(软件定义的存储系统)使用。 +有些特殊的应用程序需要直接访问块设备,原因例如,文件系统层会引入不必要的开销。最常见的情况是数据库,通常会直接在底层存储上组织数据。原生的块设备(Raw Block Devices)还通常由能自己实现某种存储服务的软件(软件定义的存储系统)使用。 -## 创建一个新的 raw block PVC +## 创建一个新的原生块设备 PVC 首先,请确保与您选择的存储类关联的配置程序支持 raw block。然后创建 PVC。 From 95c0162a55b04ef7b16a994a4f42ce57cf25ebff Mon Sep 17 00:00:00 2001 From: yixin21 <66355657+yixin21@users.noreply.github.com> Date: Tue, 18 Aug 2020 09:21:14 +0800 Subject: [PATCH 09/18] Update content/zh/blog/_posts/2019-03-07-raw-block-volume-support-to-beta.md Co-authored-by: Qiming Teng --- .../blog/_posts/2019-03-07-raw-block-volume-support-to-beta.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/zh/blog/_posts/2019-03-07-raw-block-volume-support-to-beta.md b/content/zh/blog/_posts/2019-03-07-raw-block-volume-support-to-beta.md index 13154fada7..ba8e095a6c 100644 --- a/content/zh/blog/_posts/2019-03-07-raw-block-volume-support-to-beta.md +++ b/content/zh/blog/_posts/2019-03-07-raw-block-volume-support-to-beta.md @@ -108,7 +108,7 @@ First, ensure that the provisioner associated with the storage class you choose ---> ## 创建一个新的原生块设备 PVC -首先,请确保与您选择的存储类关联的配置程序支持 raw block。然后创建 PVC。 +首先,请确保与您选择的存储类关联的驱动支持原生块设备。然后创建 PVC。 ``` apiVersion: v1 From 4594ffc76f7dc52b2283115fbf1d0039538cfc95 Mon Sep 17 00:00:00 2001 From: yixin21 <66355657+yixin21@users.noreply.github.com> Date: Tue, 18 Aug 2020 09:22:04 +0800 Subject: [PATCH 10/18] Update content/zh/blog/_posts/2019-03-07-raw-block-volume-support-to-beta.md Co-authored-by: Qiming Teng --- .../blog/_posts/2019-03-07-raw-block-volume-support-to-beta.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/zh/blog/_posts/2019-03-07-raw-block-volume-support-to-beta.md b/content/zh/blog/_posts/2019-03-07-raw-block-volume-support-to-beta.md index ba8e095a6c..ff40e95c9c 100644 --- a/content/zh/blog/_posts/2019-03-07-raw-block-volume-support-to-beta.md +++ b/content/zh/blog/_posts/2019-03-07-raw-block-volume-support-to-beta.md @@ -130,7 +130,7 @@ spec: When you use the PVC in a pod definition, you get to choose the device path for the block device rather than the mount path for the file system. ---> -## 使用 raw block PVC +## 使用原生块 PVC 在 Pod 定义中使用 PVC 时,需要选择块设备的设备路径,而不是文件系统的安装路径。 From b39bc0a5955e11f88675c181e1a5b86485db8383 Mon Sep 17 00:00:00 2001 From: yixin21 <66355657+yixin21@users.noreply.github.com> Date: Tue, 18 Aug 2020 09:22:36 +0800 Subject: [PATCH 11/18] Update content/zh/blog/_posts/2019-03-07-raw-block-volume-support-to-beta.md Co-authored-by: Qiming Teng --- .../blog/_posts/2019-03-07-raw-block-volume-support-to-beta.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/zh/blog/_posts/2019-03-07-raw-block-volume-support-to-beta.md b/content/zh/blog/_posts/2019-03-07-raw-block-volume-support-to-beta.md index ff40e95c9c..2499caf540 100644 --- a/content/zh/blog/_posts/2019-03-07-raw-block-volume-support-to-beta.md +++ b/content/zh/blog/_posts/2019-03-07-raw-block-volume-support-to-beta.md @@ -161,7 +161,7 @@ spec: Raw block support for CSI plugins is still alpha, but support can be added today. The [CSI specification](https://github.com/container-storage-interface/spec/blob/master/spec.md) details how to handle requests for volume that have the `BlockVolume` capability instead of the `MountVolume` capability. CSI plugins can support both kinds of volumes, or one or the other. For more details see [documentation here](https://kubernetes-csi.github.io/docs/raw-block.html). ---> -## 作为存储供应商,我如何在 CSI 插件中添加对 raw block 设备的支持? +## 作为存储供应商,我如何在 CSI 插件中添加对原生块设备的支持? CSI 插件的 raw block 支持仍然是 alpha 版本,但是现在可以改进了。[CSI 规范](https://github.com/container-storage-interface/spec/blob/master/spec.md) 详细说明了如何处理具有 `BlockVolume` 功能而不是 `MountVolume` 功能的卷的请求。CSI 插件可以支持两种类型的卷,也可以支持其中一种或另一种。更多详细信息,请查看 [这个文档](https://kubernetes-csi.github.io/docs/raw-block.html)。 From d129529f3e44a9ab04a023568e37efe6832665ae Mon Sep 17 00:00:00 2001 From: yixin21 <66355657+yixin21@users.noreply.github.com> Date: Tue, 18 Aug 2020 09:23:07 +0800 Subject: [PATCH 12/18] Update content/zh/blog/_posts/2019-03-07-raw-block-volume-support-to-beta.md Co-authored-by: Qiming Teng --- .../blog/_posts/2019-03-07-raw-block-volume-support-to-beta.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/zh/blog/_posts/2019-03-07-raw-block-volume-support-to-beta.md b/content/zh/blog/_posts/2019-03-07-raw-block-volume-support-to-beta.md index 2499caf540..1a0a7392e2 100644 --- a/content/zh/blog/_posts/2019-03-07-raw-block-volume-support-to-beta.md +++ b/content/zh/blog/_posts/2019-03-07-raw-block-volume-support-to-beta.md @@ -163,7 +163,7 @@ Raw block support for CSI plugins is still alpha, but support can be added today ---> ## 作为存储供应商,我如何在 CSI 插件中添加对原生块设备的支持? -CSI 插件的 raw block 支持仍然是 alpha 版本,但是现在可以改进了。[CSI 规范](https://github.com/container-storage-interface/spec/blob/master/spec.md) 详细说明了如何处理具有 `BlockVolume` 功能而不是 `MountVolume` 功能的卷的请求。CSI 插件可以支持两种类型的卷,也可以支持其中一种或另一种。更多详细信息,请查看 [这个文档](https://kubernetes-csi.github.io/docs/raw-block.html)。 +CSI 插件的原生块支持仍然是 alpha 版本,但是现在可以改进了。[CSI 规范](https://github.com/container-storage-interface/spec/blob/master/spec.md) 详细说明了如何处理具有 `BlockVolume` 能力而不是 `MountVolume` 能力的卷的请求。CSI 插件可以支持两种类型的卷,也可以支持其中一种或另一种。更多详细信息,请查看 [这个文档](https://kubernetes-csi.github.io/docs/raw-block.html)。 从程序员的角度来看,块设备是一个非常大的字节数组,具有某种最小读写粒度,通常为 512 个字节,大部分情况为 4K 或更大。 -随着在 Kubernetes 中运行数据库软件和存储基础架构软件变得越来越普遍,在 Kubernetes 中对 raw block 设备支持的需求变得越来越重要。 +随着在 Kubernetes 中运行数据库软件和存储基础架构软件变得越来越普遍,在 Kubernetes 中支持原生块设备的需求变得越来越重要。 ## 哪些卷插件支持 raw block? -在发布此博客时,以下 in-tree 卷类型支持 raw block: +在发布此博客时,以下 in-tree 卷类型支持原生块设备: - AWS EBS - Azure Disk From 6a040a935ffedeba9655b1ff1f42c865f0524c31 Mon Sep 17 00:00:00 2001 From: yixin21 <66355657+yixin21@users.noreply.github.com> Date: Tue, 18 Aug 2020 09:25:28 +0800 Subject: [PATCH 15/18] Update content/zh/blog/_posts/2019-03-07-raw-block-volume-support-to-beta.md Co-authored-by: Qiming Teng --- .../blog/_posts/2019-03-07-raw-block-volume-support-to-beta.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/zh/blog/_posts/2019-03-07-raw-block-volume-support-to-beta.md b/content/zh/blog/_posts/2019-03-07-raw-block-volume-support-to-beta.md index a2959cc4fc..517dbfc485 100644 --- a/content/zh/blog/_posts/2019-03-07-raw-block-volume-support-to-beta.md +++ b/content/zh/blog/_posts/2019-03-07-raw-block-volume-support-to-beta.md @@ -77,7 +77,7 @@ As of the publishing of this blog, the following in-tree volumes types support r -Out-of-tree [CSI 卷驱动程序](https://kubernetes.io/blog/2019/01/15/container-storage-interface-ga/) 可能也支持 raw block volume。 Kubernetes CSI 对 raw block volume 的支持目前为 alpha 版本。参考 [这篇](https://kubernetes-csi.github.io/docs/raw-block.html) 文档。 +Out-of-tree [CSI 卷驱动程序](https://kubernetes.io/blog/2019/01/15/container-storage-interface-ga/) 可能也支持原生数据块卷。Kubernetes CSI 对原生数据块卷的支持目前为 alpha 阶段。参考 [这篇](https://kubernetes-csi.github.io/docs/raw-block.html) 文档。 ## Kubernetes raw block volume 的 API -raw block volume 与普通 volume 有很多共同点。这两者都通过创建与 `PersistentVolume` 对象绑定的 `PersistentVolumeClaim` 对象进行请求,并通过将它们加入到 `PodSpec` 的 volume 数组中来连接到 Kubernetes 中的 Pod。 +原生数据块卷与普通存储卷有很多共同点。两者都通过创建与 `PersistentVolume` 对象绑定的 `PersistentVolumeClaim` 对象发起请求,并通过将它们加入到 `PodSpec` 的 volumes 数组中来连接到 Kubernetes 中的 Pod。 但是有两个重要的区别。首先,要请求 raw block 的 `PersistentVolumeClaim`,必须在 `PersistentVolumeClaimSpec` 中设置 `volumeMode = "Block"`。保留 `volumeMode` 为空白,与传统设置方式中的指定 `volumeMode = "Filesystem"` 是一样的。`PersistentVolumes` 在其 `PersistentVolumeSpec` 中也有一个 `volumeMode` 字段,`"Block"` 类型的 PVC 只能绑定到 `"Block"` 类型的 PV 上,而`"Filesystem"` 类型的 PVC 只能绑定到 `"Filesystem"` PV 上。 From 7215563501ff45a780601a90a186f886fc00e8e7 Mon Sep 17 00:00:00 2001 From: yixin21 <66355657+yixin21@users.noreply.github.com> Date: Tue, 18 Aug 2020 09:26:54 +0800 Subject: [PATCH 17/18] Update content/zh/blog/_posts/2019-03-07-raw-block-volume-support-to-beta.md Co-authored-by: Qiming Teng --- .../blog/_posts/2019-03-07-raw-block-volume-support-to-beta.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/zh/blog/_posts/2019-03-07-raw-block-volume-support-to-beta.md b/content/zh/blog/_posts/2019-03-07-raw-block-volume-support-to-beta.md index 2fe05dabeb..a4a8a9a0f6 100644 --- a/content/zh/blog/_posts/2019-03-07-raw-block-volume-support-to-beta.md +++ b/content/zh/blog/_posts/2019-03-07-raw-block-volume-support-to-beta.md @@ -90,7 +90,7 @@ There are 2 important differences however. First, to request a raw block `Persis 原生数据块卷与普通存储卷有很多共同点。两者都通过创建与 `PersistentVolume` 对象绑定的 `PersistentVolumeClaim` 对象发起请求,并通过将它们加入到 `PodSpec` 的 volumes 数组中来连接到 Kubernetes 中的 Pod。 -但是有两个重要的区别。首先,要请求 raw block 的 `PersistentVolumeClaim`,必须在 `PersistentVolumeClaimSpec` 中设置 `volumeMode = "Block"`。保留 `volumeMode` 为空白,与传统设置方式中的指定 `volumeMode = "Filesystem"` 是一样的。`PersistentVolumes` 在其 `PersistentVolumeSpec` 中也有一个 `volumeMode` 字段,`"Block"` 类型的 PVC 只能绑定到 `"Block"` 类型的 PV 上,而`"Filesystem"` 类型的 PVC 只能绑定到 `"Filesystem"` PV 上。 +但是有两个重要的区别。首先,要请求原生数据块设备的 `PersistentVolumeClaim` 必须在 `PersistentVolumeClaimSpec` 中设置 `volumeMode = "Block"`。`volumeMode` 为空时与传统设置方式中的指定 `volumeMode = "Filesystem"` 是一样的。`PersistentVolumes` 在其 `PersistentVolumeSpec` 中也有一个 `volumeMode` 字段,`"Block"` 类型的 PVC 只能绑定到 `"Block"` 类型的 PV 上,而`"Filesystem"` 类型的 PVC 只能绑定到 `"Filesystem"` PV 上。 -其次,在 Pod 中使用 raw block volume 时,必须在 `PodSpec` 的 Container 部分指定一个 `VolumeDevice` ,而不是 `VolumeMount`。`VolumeDevices` 具备 `devicePaths` 而不是 `mountPaths`,在容器中,应用程序将看到位于该路径的设备,而不是装入的文件系统的设备。 +其次,在 Pod 中使用原生数据块卷时,必须在 `PodSpec` 的 Container 部分指定一个 `VolumeDevice`,而不是 `VolumeMount`。`VolumeDevices` 具备 `devicePaths` 而不是 `mountPaths`,在容器中,应用程序将看到位于该路径的设备,而不是挂载了的文件系统。 应用程序打开、读取和写入容器内的设备节点,就像它们在非容器化或虚拟环境中与系统上的任何块设备交互一样。