基於華為fusionstorage的塊存儲CSI


承接上文,塊存儲的CSI要比對象存儲復雜一些,但總的處理邏輯還是一致的。下面以華為fusionstorage的CSI為例進行介紹,該插件支持了多個后端存儲,如fusionstorage和oceanstor。下面是CSI插件與后端存儲(fusionstorage)交互用到的配置文件。其中pools為事先創建好的存儲池,parameters為所有k8s的node節點的hostname:ip對,用於執行attach塊存儲操作。

  csi.json: |
    {
        "backends": [
            {
                "storage": "fusionstorage-san",
                "name": "***",
                "url": "https://*.*.*.*:28443",
                "user": "***",
                "password": "***",
                "pools": ["***"], 
                "parameters": {"SCSI": {"***": "*.*.*.*"}}
            }
        ]
    }

如上圖所示,Node上的CSI容器掛載了Node的/dev/etc/var/lib/kubelet目錄。整體掛載流程為:在后端存儲創建一個卷(如果不存在),並將其attach到node節點的/dev目錄下(具體的attach動作由iSCSI客戶端,NFS,FC等方式完成);由於容器掛載了/dev目錄,在容器中直接格式化該塊存儲並掛載到/var/lib/kubelet中的pod目錄即可。/etc目錄只用於在csi容器中獲取node節點的hostname(PS:在容器中掛載node節點的/dev和/etc目錄是比較危險的,如果容器損壞了這些目錄,可能導致node節點的系統錯誤)。

創建並掛載卷的調用過程如下(下載):

參考:


免責聲明!

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



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