glusterfs
我們複用 kubernetes 的三臺主機做 GlusterFS 存儲。
安裝 GlusterFS
我們直接在物理機上使用 yum 安裝,如果你選擇在 kubernetes 上安裝,請參考 https://github.com/gluster/gluster-kubernetes/blob/master/docs/setup-guide.md。
# 先安裝 gluster 源
$ yum install centos-release-gluster -y
# 安裝 glusterfs 組件
$ yum install -y glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma glusterfs-geo-replication glusterfs-devel
## 創建 glusterfs 目錄
$ mkdir /opt/glusterd
## 修改 glusterd 目錄
$ sed -i 's/var\/lib/opt/g' /etc/glusterfs/glusterd.vol
# 啓動 glusterfs
$ systemctl start glusterd.service
# 設置開機啓動
$ systemctl enable glusterd.service
#查看狀態
$ systemctl status glusterd.service配置 GlusterFS
配置 volume
GlusterFS 中的 volume 的模式有很多種,包括以下幾種:
分佈卷(默認模式):即 DHT, 也叫 分佈卷: 將文件以 hash 算法隨機分佈到 一臺服務器節點中存儲。
複製模式:即 AFR, 創建 volume 時帶 replica x 數量: 將文件複製到 replica x 個節點中。
條帶模式:即 Striped, 創建 volume 時帶 stripe x 數量: 將文件切割成數據塊,分別存儲到 stripe x 個節點中 (類似 raid 0)。
分佈式條帶模式:最少需要 4 臺服務器才能創建。 創建 volume 時 stripe 2 server = 4 個節點: 是 DHT 與 Striped 的組合型。
分佈式複製模式:最少需要 4 臺服務器才能創建。 創建 volume 時 replica 2 server = 4 個節點:是 DHT 與 AFR 的組合型。
條帶複製卷模式:最少需要 4 臺服務器才能創建。 創建 volume 時 stripe 2 replica 2 server = 4 個節點: 是 Striped 與 AFR 的組合型。
三種模式混合: 至少需要 8 臺 服務器才能創建。 stripe 2 replica 2 , 每 4 個節點 組成一個 組。
這幾種模式的示例圖參考 GlusterFS Documentation。
因爲我們只有三臺主機,在此我們使用默認的分佈卷模式。請勿在生產環境上使用該模式,容易導致數據丟失。
Glusterfs 調優
Kubernetes 中使用 GlusterFS
官方的文檔見https://github.com/kubernetes/examples/tree/master/staging/volumes/glusterfs.
以下用到的所有 yaml 和 json 配置文件可以在 glusterfs 中找到。注意替換其中私有鏡像地址爲你自己的鏡像地址。
kubernetes 安裝客戶端
因爲我們 glusterfs 跟 kubernetes 集群複用主機,因爲此這一步可以省去。
配置 endpoints
配置 service
創建測試 pod
配置 PersistentVolume
PersistentVolume(PV)和 PersistentVolumeClaim(PVC)是 kubernetes 提供的兩種 API 資源,用於抽象存儲細節。管理員關注於如何通過 pv 提供存儲功能而無需關注用戶如何使用,同樣的用戶只需要掛載 PVC 到容器中而不需要關注存儲卷採用何種技術實現。PVC 和 PV 的關係跟 pod 和 node 關係類似,前者消耗後者的資源。PVC 可以向 PV 申請指定大小的存儲資源並設置訪問模式。
PV 屬性
storage 容量
讀寫屬性:分別爲
ReadWriteOnce:單個節點讀寫;
ReadOnlyMany:多節點只讀 ;
ReadWriteMany:多節點讀寫
PVC 屬性
訪問屬性與 PV 相同
容量:向 PV 申請的容量 <= PV 總容量
配置 PVC
創建 nginx deployment 掛載 volume
參考
Last updated