前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Kubernetes 1.24: 卷填充器功能进入 Beta 阶段

Kubernetes 1.24: 卷填充器功能进入 Beta 阶段

作者头像
CNCF
发布2022-06-10 14:18:24
2990
发布2022-06-10 14:18:24
举报
文章被收录于专栏:CNCF

作者:Ben Swartzlander (NetApp)

卷填充器功能现在已经经历两个发行版本并进入 Beta 阶段!在 Kubernetes v1.24 中 AnyVolumeDataSouce 特性门控默认被启用。这意味着用户可以指定任何自定义资源作为 PVC 的数据源。

之前的一篇博客[1]详细介绍了卷填充器功能的工作原理。简而言之,集群管理员可以在集群中安装 CRD 和相关的填充器控制器, 任何可以创建 CR 实例的用户都可以利用填充器创建预填充卷。

出于不同的目的,可以一起安装多个填充器。存储 SIG 社区已经有了一些公开的实现,更多原型应该很快就会出现。

强烈建议集群管理人员在安装任何填充器之前安装 volume-data-source-validator 控制器和相关的VolumePopulator CRD,以便用户可以获得有关无效 PVC 数据源的反馈。

新功能

构建填充器的 lib-volume-populator[2]库现在包含可帮助操作员监控和检测问题的指标。这个库现在是 beta 阶段,最新版本是 v1.0.1。

卷数据源校验器[3]控制器也添加了指标支持, 处于 beta 阶段。VolumePopulator CRD 是 beta 阶段,最新版本是 v1.0.1。

尝试一下

要查看它是如何工作的,你可以安装 “hello” 示例填充器并尝试一下。

首先安装 volume-data-source-validator 控制器。

代码语言:javascript
复制
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 示例填充器。

代码语言:javascript
复制
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 自定义资源的实例,内容如下:

代码语言:javascript
复制
apiVersion: hello.example.com/v1alpha1
kind: Hello
metadata:
  name: example-hello
spec:
  fileName: example.txt
  fileContents: Hello, world!

创建一个将该 CR 引用为其数据源的 PVC。

代码语言:javascript
复制
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。

代码语言:javascript
复制
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 完成(包括其所有依赖项)。

代码语言:javascript
复制
kubectl wait --for=condition=Complete job/example-job

最后检查 Job 中的日志。

代码语言:javascript
复制
kubectl logs job/example-job

输出应该是:

代码语言:javascript
复制
Hello, world!

请注意,该卷已包含一个文本文件,其中包含来自 CR 的字符串内容。这只是最简单的例子。实际填充器可以将卷设置为包含任意内容。

如何编写自己的卷填充器

鼓励有兴趣编写新的填充器的开发人员使用lib-volume-populator[4] 库, 只提供一个小型控制器,以及一个能够连接到卷并向卷写入适当数据的 Pod 镜像。

单个填充器非常通用,它们可以与所有类型的 PVC 一起使用, 或者如果卷是来自同一供应商的特定 CSI 驱动程序供应的, 它们可以执行供应商特定的的操作以快速用数据填充卷,例如,通过通信直接使用该卷的存储。

我怎样才能了解更多?

增强提案,卷填充器[5], 包含有关此功能的历史和技术实现的许多详细信息。

卷填充器与数据源[6], 在有关持久卷的文档主题中,解释了如何在集群中使用此功能。

请加入 Kubernetes 的存储 SIG,帮助我们增强这一功能。这里已经有很多好的主意了,我们很高兴能有更多!

参考资料

[1]

之前的一篇博客: https://kubernetes.io/blog/2021/08/30/volume-populators-redesigned/

[2]

lib-volume-populator: https://github.com/kubernetes-csi/lib-volume-populator

[3]

卷数据源校验器: https://github.com/kubernetes-csi/volume-data-source-validator

[4]

lib-volume-populator: https://github.com/kubernetes-csi/lib-volume-populator

[5]

卷填充器: https://github.com/kubernetes/enhancements/tree/master/keps/sig-storage/1495-volume-populators

[6]

卷填充器与数据源: https://kubernetes.io/zh/docs/concepts/storage/persistent-volumes/#volume-populators-and-data-sources


CNCF (Cloud Native Computing Foundation)成立于2015年12月,隶属于Linux Foundation,是非营利性组织。

CNCF(云原生计算基金会)致力于培育和维护一个厂商中立的开源生态系统,来推广云原生技术。我们通过将最前沿的模式民主化,让这些创新为大众所用。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-05-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 CNCF 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 新功能
  • 尝试一下
  • 如何编写自己的卷填充器
  • 我怎样才能了解更多?
    • 参考资料
    相关产品与服务
    容器服务
    腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档