Kubernetes CSI(Container Storage Interface)是用於將儲存系統與kubernetes這類容器編排系統接觸的標準介面。使用CSI的第三方套件可以撰寫與部署自訂的儲存系統,而無需接觸Kubernetes原始碼。
在CSI釋出之前,K8s 原有的 Volume plugin 是 in-tree 的,代表 plugin 的原始碼位於 K8s 的 repository 中,它們與Kubernetes核心原始碼鏈結、編譯、構建與交付。要向Kubernetes增加新的儲存系統需將原始碼merge至kubernetes核心,使得核心系統與plugin強耦合,這會造成一些問題:
Kubernetes CSI Sidecar Containers是一組標準容器,為了簡化Kubernetes上CSI的開發與部屬。
這些容器通常用以監控Kubernetes API、針對CSI容器觸發一些適當的操作,且根據需求更新Kubernetes API。它們通常與第三方CSI Driver一起使用,並作為Pod部署。
Kubernetes開發團隊維護以下Kubernetes CSI Sidecar Containers:
接下來會示範如何以CephFS作為Kubernetes CSI driver使用。
The Ceph Filesystem (Ceph FS)是Ceph提供的相容於POSIX協議的檔案系統,可讓使用者mount到Ceph Cluster內的目錄,並作存取使用。
https://kubernetes-csi.github.io/docs/introduction.html
https://docs.ceph.com/docs/mimic/cephfs/