具有动态配置的 Kubernetes 自定义卷插件

Kubernetes Custom Volume Plugin with Dynamic Provisioning

我有一个专有文件系统,我想用它来为我的 K8S pods 提供文件存储。我目前运行 K8S v1.5.1,但如果需要可以升级到1.6。

我想使用动态配置,以便根据需要创建卷。我浏览了 kubernetes.io 上的官方文档,这是我目前所了解的内容:

  1. 我需要为我的专有编写一个 Kubernetes 自定义卷插件 文件系统。
  2. 我需要创建一个 StorageClass,它使用 从我的专有文件系统配置卷的供应者
  3. 然后我创建一个引用我的存储的 PVCClass
  4. 然后我创建我的 Pods 并按名称引用我的存储 class。

我看不懂的是:

  1. Storage Class引用的Provisoner和K8S Volume Plugin是一回事吗?如果它们不同,又如何?
  2. K8S documentation 中提到了外部 Provisoner。这是否意味着我可以在树外(在 K8S 代码之外)为我的文件系统编写 K8S 卷插件?
  3. 我的文件系统提供了 REST API 来创建文件系统卷。我可以在我的 provisoner/volume 插件中调用它们吗?
  4. 如果我编写了一个树外插件,我如何将它加载到我的 K8S 集群中,以便它可以用于使用存储 Class 提供卷?

感谢您在回答上述任何或所有问题时提供的帮助。

谢谢!

Is Provisoner referred by Storage Class and K8S Volume Plugin one and the same? If they are different, how? 如果您想使用该插件配置存储,它应该是相同的。

There is mention of External Provisoner in K8S documentation. Does this mean I can write the K8S Volume Plugin for my filesystem out-of-tree (outside K8S code)? 是的,没错。

My filesystem provides REST APIs to create filesystem volumes. Can I invoke them in my provisoner/volume plugin?

是的,只要客户端是供应商代码的一部分。

If I write an out-of-tree plugin, how do I load it in my K8S cluster so that it can be used to provision volumes using the Storage Class?

它可以运行作为容器,或者您可以通过二进制执行模型调用它。