跳至主要内容

持久儲存運作方式

持久卷(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,允許工作負載使用持久儲存。