From 30c5e35104702613e488e03915a3f4428e9fffa4 Mon Sep 17 00:00:00 2001 From: zhangxiaoyang Date: Tue, 10 May 2022 15:45:11 +0800 Subject: [PATCH] [zh]Add 2022-05-16-volume-populators-beta --- .../2022-05-16-volume-populators-beta.md | 256 ++++++++++++++++++ 1 file changed, 256 insertions(+) create mode 100644 content/zh/blog/_posts/2022-05-16-volume-populators-beta.md diff --git a/content/zh/blog/_posts/2022-05-16-volume-populators-beta.md b/content/zh/blog/_posts/2022-05-16-volume-populators-beta.md new file mode 100644 index 0000000000..fca3ff7b61 --- /dev/null +++ b/content/zh/blog/_posts/2022-05-16-volume-populators-beta.md @@ -0,0 +1,256 @@ +--- +layout: blog +title: "Kubernetes 1.24: 卷填充器功能进入 Beta 阶段" +date: 2022-05-16 +slug: volume-populators-beta +--- + + + +**作者:** +Ben Swartzlander (NetApp) + + +卷填充器功能现在已经经历两个发行版本并进入 Beta 阶段! +在 Kubernetes v1.24 中 `AnyVolumeDataSouce` 特性门控默认被启用。 +这意味着用户可以指定任何自定义资源作为 PVC 的数据源。 + + +[之前的一篇博客](/blog/2021/08/30-volume-populators-alpha/)详细介绍了卷填充器功能的工作原理。 +简而言之,集群管理员可以在集群中安装 CRD 和相关的填充器控制器, +任何可以创建 CR 实例的用户都可以利用填充器创建预填充卷。 + + +出于不同的目的,可以一起安装多个填充器。存储 SIG 社区已经有了一些公开的实现,更多原型应该很快就会出现。 + + +**强烈建议**集群管理人员在安装任何填充器之前安装 volume-data-source-validator 控制器和相关的 +`VolumePopulator` CRD,以便用户可以获得有关无效 PVC 数据源的反馈。 + + +## 新功能 + + +构建填充器的 [lib-volume-populator](https://github.com/kubernetes-csi/lib-volume-populator) +库现在包含可帮助操作员监控和检测问题的指标。这个库现在是 beta 阶段,最新版本是 v1.0.1。 + + +[卷数据源校验器](https://github.com/kubernetes-csi/volume-data-source-validator)控制器也添加了指标支持, +处于 beta 阶段。`VolumePopulator` CRD 是 beta 阶段,最新版本是 v1.0.1。 + + +## 尝试一下 + + +要查看它是如何工作的,你可以安装 “hello” 示例填充器并尝试一下。 + + +首先安装 volume-data-source-validator 控制器。 + +```shell +kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/volume-data-source-validator/v1.0.1/client/config/crd/populator.storage.k8s.io_volumepopulators.yaml +kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/volume-data-source-validator/v1.0.1/deploy/kubernetes/rbac-data-source-validator.yaml +kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/volume-data-source-validator/v1.0.1/deploy/kubernetes/setup-data-source-validator.yaml +``` + +接下来安装 hello 示例填充器。 + +```shell +kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/lib-volume-populator/v1.0.1/example/hello-populator/crd.yaml +kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/lib-volume-populator/87a47467b86052819e9ad13d15036d65b9a32fbb/example/hello-populator/deploy.yaml +``` + +你的集群现在有一个新的 CustomResourceDefinition,它提供了一个名为 Hello 的测试 API。 +创建一个 `Hello` 自定义资源的实例,内容如下: + +```yaml +apiVersion: hello.example.com/v1alpha1 +kind: Hello +metadata: + name: example-hello +spec: + fileName: example.txt + fileContents: Hello, world! +``` + +创建一个将该 CR 引用为其数据源的 PVC。 + +```yaml +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: example-pvc +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 10Mi + dataSourceRef: + apiGroup: hello.example.com + kind: Hello + name: example-hello + volumeMode: Filesystem +``` + +接下来,运行一个读取 PVC 中文件的 Job。 + +```yaml +apiVersion: batch/v1 +kind: Job +metadata: + name: example-job +spec: + template: + spec: + containers: + - name: example-container + image: busybox:latest + command: + - cat + - /mnt/example.txt + volumeMounts: + - name: vol + mountPath: /mnt + restartPolicy: Never + volumes: + - name: vol + persistentVolumeClaim: + claimName: example-pvc +``` + +等待 Job 完成(包括其所有依赖项)。 + +```shell +kubectl wait --for=condition=Complete job/example-job +``` + + +最后检查 Job 中的日志。 + +```shell +kubectl logs job/example-job +``` + +输出应该是: + +```terminal +Hello, world! +``` + +请注意,该卷已包含一个文本文件,其中包含来自 CR 的字符串内容。这只是最简单的例子。 +实际填充器可以将卷设置为包含任意内容。 + + +## 如何编写自己的卷填充器 + + +鼓励有兴趣编写新的填充器的开发人员使用 +[lib-volume-populator](https://github.com/kubernetes-csi/lib-volume-populator) 库, +只提供一个小型控制器,以及一个能够连接到卷并向卷写入适当数据的 Pod 镜像。 + + +单个填充器非常通用,它们可以与所有类型的 PVC 一起使用, +或者如果卷是来自同一供应商的特定 CSI 驱动程序供应的, +它们可以执行供应商特定的的操作以快速用数据填充卷,例如,通过通信直接使用该卷的存储。 + + +## 我怎样才能了解更多? + + +增强提案, +[卷填充器](https://github.com/kubernetes/enhancements/tree/master/keps/sig-storage/1495-volume-populators), +包含有关此功能的历史和技术实现的许多详细信息。 + + +[卷填充器与数据源](/zh/docs/concepts/storage/persistent-volumes/#volume-populators-and-data-sources), +在有关持久卷的文档主题中,解释了如何在集群中使用此功能。 + + +请加入 Kubernetes 的存储 SIG,帮助我们增强这一功能。这里已经有很多好的主意了,我们很高兴能有更多! +