介紹
Ceph容器存儲接口(CSI)驅動程序,用於RBD, CephFS。
通過kubernetes sidecar部署provisioner, attacher, resizer, driver-registrar 和 snapshotter 組件,以支持CSI功能。
Ceph CSI插件實現了支持CSI的Container Orchestrator (CO)和Ceph集群之間的接口。它允許動態供應Ceph卷並將它們附加到工作負載。
提供獨立的CSI插件來支持RBD和cephfs后端的卷
CSI RBD 插件
RBD CSI插件能夠提供新的RBD鏡像,並將它們附加到工作負載上。
部署教程:https://github.com/ceph/ceph-csi/blob/devel/docs/deploy-rbd.md
部署清單:https://github.com/ceph/ceph-csi/tree/devel/deploy/rbd/kubernetes
清單說明:
必要條件:
需要 Kubernetes 1.14+。
您的 Kubernetes 集群必須允許特權 Pod。
集群節點的 Docker 守護進程必須允許共享掛載(https://kubernetes.io/zh/docs/concepts/storage/volumes/#mount-propagation)
1.為 sidecar 容器和節點插件部署 RBAC:
kubectl create -f csi-provisioner-rbac.yaml
kubectl create -f csi-nodeplugin-rbac.yaml
這些清單部署服務帳戶、集群角色和集群角色綁定。 這些為 RBD 和 CephFS CSI 插件共享,因為它們需要相同的權限。
2.為 sidecar 容器和節點插件部署 PodSecurityPolicy 資源:
注意: 僅當 PodSecurityPolicy 准入控制器在您的集群上處於活動狀態。
kubectl create -f csi-provisioner-psp.yaml
kubectl create -f csi-nodeplugin-psp.yaml
3.為 CSI 插件部署 ConfigMap:
kubectl create -f csi-config-map.yaml
configmap 部署一個空的 CSI 配置,該配置作為卷掛載 在 Ceph CSI 插件 pod 中。 添加特定的 Ceph 集群配置,請參閱:
https://github.com/ceph/ceph-csi/blob/devel/examples/README.md#creating-csi-configuration-for-rbd-based-provisioning
4.部署 CSI sidecar 容器:
kubectl create -f csi-rbdplugin-provisioner.yaml
部署包含 external-provisioner,external-attacher,csi-snapshotter sidecar 容器和 CSI RBD 插件。
5.部署 RBD CSI 驅動程序:
kubectl create -f csi-rbdplugin.yaml
使用兩個容器部署守護進程集:CSI node-driver-registrar 和 CSI RBD 驅動程序。
筆記: 如果您想使用不同的發布版本,請在 provisioner 和 nodeplugin YAML中將 canary 替換為其他發行版。
for stable functionality replace canary with latest release version
image: quay.io/cephcsi/cephcsi:canary
6.驗證 Kubernetes 中的部署
成功完成上述步驟后,您應該會看到類似於以下內容的輸出:
$ kubectl get all
NAME READY STATUS RESTARTS AGE
pod/csi-rbdplugin-fptqr 3/3 Running 0 21s
pod/csi-rbdplugin-provisioner-0 5/5 Running 0 22s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/csi-rbdplugin-provisioner ClusterIP 10.104.2.130 <none> 8080/TCP 23s
...
7.下一步:https://github.com/ceph/ceph-csi/blob/devel/examples/README.md
CSI CephFS 插件
CSI CephFS 插件能夠提供新的 CephFS 卷 並將現有的附加和安裝到工作負載。
部署教程:https://github.com/ceph/ceph-csi/blob/devel/docs/deploy-cephfs.md
部署清單:https://github.com/ceph/ceph-csi/tree/devel/deploy/cephfs/kubernetes
清單說明:
必要條件:
需要 Kubernetes 1.14+。
您的 Kubernetes 集群必須允許特權 Pod。
集群節點的 Docker 守護進程必須允許共享掛載(https://kubernetes.io/zh/docs/concepts/storage/volumes/#mount-propagation)
1.為 sidecar 容器和節點插件部署 RBAC:
kubectl create -f csi-provisioner-rbac.yaml
kubectl create -f csi-nodeplugin-rbac.yaml
這些清單部署服務帳戶、集群角色和集群角色 綁定。 這些為 RBD 和 CephFS CSI 插件共享,因為它們需要 相同的權限。
2.為 sidecar 容器和節點插件部署 PodSecurityPolicy 資源:
注意: 僅當 PodSecurityPolicy 准入控制器在您的集群上處於活動狀態。
kubectl create -f csi-provisioner-psp.yaml
kubectl create -f csi-nodeplugin-psp.yaml
3.為 CSI 插件部署 ConfigMap:
kubectl create -f csi-config-map.yaml
configmap 部署一個空的 CSI 配置,該配置作為卷掛載 在 Ceph CSI 插件 pod 中。 添加特定的 Ceph 集群配置 詳細信息,請參閱:https://github.com/ceph/ceph-csi/blob/devel/examples/README.md#creating-csi-configuration
4.部署 CSI sidecar 容器:
kubectl create -f csi-cephfsplugin-provisioner.yaml
部署包含 external-provisioner 的配置部署, CSI CephFS 的外部連接器 external-attacher。
5.部署 CSI CephFS 驅動程序:
kubectl create -f csi-cephfsplugin.yaml
使用兩個容器部署守護進程集:CSI node-driver-registrar 和 CSI CephFS 驅動程序。
筆記: 如果您想使用不同的發布版本,請在 provisioner 和 nodeplugin YAML 中將 canary 替換為其他發行版。
# for stable functionality replace canary with latest release version
image: quay.io/cephcsi/cephcsi:canary
6.驗證 Kubernetes 中的部署
成功完成上述步驟后,您應該會看到類似於以下內容的輸出:
$ kubectl get all
NAME READY STATUS RESTARTS AGE
pod/csi-cephfsplugin-provisioner-0 4/4 Running 0 25s
pod/csi-cephfsplugin-rljcv 3/3 Running 0 24s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/csi-cephfsplugin-provisioner ClusterIP 10.101.78.75 <none> 8080/TCP 26s
...
7.下一步:https://github.com/ceph/ceph-csi/blob/devel/examples/README.md#deploying-the-storage-class
8.卷刪除注意事項
當請求時,驅動程序會刪除動態配置的卷。當對小於或等於1.0.0的插件版本執行刪除操作時,靜態分配的卷是不操作的,並且用戶希望在Ceph集群上刪除這些卷。
當前項目狀態:GA
當前Ceph-CSI特性和可用版本
注意: Alpha狀態反映了未來可能發生的非向后兼容更改,因此不建議在生產中使用。
CSI 規范和 Kubernetes 版本兼容性
https://kubernetes-csi.github.io/docs/#kubernetes-releases