【K8s存儲】Ceph容器存儲接口(CSI)驅動簡單介紹


參考:
https://github.com/ceph/ceph-csi

介紹

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

當前Ceph CSI 容器鏡像和版本兼容性


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM