I have a proprietary file-system and I would like to use it for providing file storage to my K8S pods. I am currently running K8S v1.5.1, but open upgrade to 1.6 if need be.
I would like to make use of Dynamic Provisioning so that the volumes are created on need basis. I went through the official documentation on kubernetes.io and this is what I have understood so far:
- I need to write a Kubernetes Custom volume-plugin for my proprietary file-system.
- I need to create a StorageClass which makes use of a provisoner that provisions volumes from my proprietary filesystem
- I then create a PVC that refers to my StorageClass
- I then create my Pods referring to my storage class by name.
What I am not able to make out is:
- 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?
Appreciate any help in answering any or all of the above.
Thanks!