持久儲存運作方式
持久卷(PV)是 Kubernetes 叢集中的一塊儲存,而持久卷宣告(PVC)是對儲存的請求。
在 Kubernetes 中使用持久儲存有兩種方式:
- 使用現有的持久卷
- 動態配置新的持久卷
要使用現有的 PV,你的應用程式需要使用綁定到 PV 的 PVC,並且 PV 應包含 PVC 所需的最低資源。
對於動態儲存配置,你的應用程式需要使用綁定到儲存類別的 PVC。儲存類別包含配置新持久卷的授權。
欲了解更多資訊,請參閱官方 Kubernetes 儲存文件
關於持久卷宣告
持久卷宣告(PVC)是從叢集請求儲存資源的物件。它們類似於你的部署可以兌換以獲得儲存存取權的憑證。PVC 作為卷掛載到工作負載中,以便工作負載可以宣告其指定的持久儲存份額。
要存取持久儲存,Pod 必須將 PVC 作為卷掛載。此 PVC 讓你的部署應用程式將其資料儲存在外部位置,以便如果 Pod 發生故障,可以用新的 Pod 替換它並繼續存取其儲存在外部的資料,就好像從未發生中斷一樣。
每個 Rancher 專案都包含你建立的 PVC 列表,可從 Resources > Workloads > Volumes 存取。你可以在將來建立部署時重複使用這些 PVC。
新的和現有的持久儲存都需要 PVC
無論工作負載是打算使用已經存在的儲存,還是工作負載需要按需動態配置新儲存,Pod 都需要 PVC 才能使用任何持久儲存。
如果你正在為工作負載設定現有儲存,則工作負載掛載 PVC,PVC 參照 PV,PV 對應於現有的儲存基礎設施。
如果工作負載需要請求新儲存,則工作負載掛載 PVC,PVC 參照儲存類別,儲存類別具有建立新 PV 及其底層儲存基礎設施的能力。
Rancher 允許你在專案中建立任意數量的 PVC。
你可以在建立部署時將 PVC 掛載到部署,或者稍後在部署執行後掛載。
使用 PVC 和 PV 設定現有儲存
你的 Pod 可以將資料儲存在卷中,但如果 Pod 發生故障,該資料將丟失。為了解決這個問題,Kubernetes 提供了持久卷(PV),這些是對應於你的 Pod 可以存取的外部儲存磁碟或檔案系統的 Kubernetes 資源。如果 Pod 崩潰,其替換 Pod 可以存取持久儲存中的資料,而不會有任何資料丟失。
PV 可以代表你在本地託管的實體磁碟或檔案系統,或者供應商託管的儲存資源,例如 Amazon EBS 或 Azure Disk。
在 Rancher 中建立持久卷不會建立儲存卷。它只會建立一個映射到現有卷的 Kubernetes 資源。因此,在你可以將持久卷建立為 Kubernetes 資源之前,你必須先配置好儲存。
PV 是在叢集層級建立的,這意味著在多租戶叢集中,有權存取不同命名空間的團隊可能可以存取相同的 PV。
將 PV 綁定到 PVC
當 Pod 設定為使用持久儲存時,它們會掛載持久卷宣告(PVC),其掛載方式與任何其他 Kubernetes 卷相同。當建立每個 PVC 時,Kubernetes 主節點將其視為儲存請求,並將其綁定到符合 PVC 最低資源需求的 PV。並非每個 PVC 都保證會綁定到 PV。根據 Kubernetes 文件,
如果不存在匹配的卷,宣告將無限期地保持未綁定狀態。當匹配的卷變得可用時,宣告將被綁定。例如,配置了許多 50Gi PV 的叢集將不匹配請求 100Gi 的 PVC。當 100Gi PV 加入到叢集時,PVC 才可以被綁定。
換句話說,你可以建立無限數量的 PVC,但只有當 Kubernetes 主節點可以找到至少具有 PVC 所需磁碟空間量的 足夠 PV 時,它們才會綁定到 PV。
要動態配置新儲存,Pod 中掛載的 PVC 必須對應到儲存類別,而不是持久卷。
使用 PVC 和儲存類別配置新儲存
儲存類別允許你動態建立 PV,而無需先在基礎設施供應商中建立持久儲存。
例如,如果工作負載綁定到 PVC,並且 PVC 參照 Amazon EBS 儲存類別,則儲存類別可以動態建立 EBS 卷和對應的 PV。
然後,Kubernetes 主節點將新建立的 PV 綁定到工作負載的 PVC,允許工作負載使用持久儲存。