這篇文章已超過一年。較舊的文章可能包含過時的內容。請檢查頁面中的資訊自發布以來是否已變得不正確。
Kubernetes 中 PersistentVolume 的上次階段轉換時間
在最近的 Kubernetes v1.28 版本中,我們 (SIG Storage) 引入了一項新的 Alpha 功能,旨在改進 PersistentVolume (PV) 儲存管理,並幫助叢集管理員更深入了解 PV 的生命週期。透過在 PV 狀態中新增 lastPhaseTransitionTime
欄位,叢集管理員現在能夠追蹤 PV 最後一次轉換到不同階段的時間,從而實現更有效率和更明智的資源管理。
為何我們需要新的 PV 欄位?
Kubernetes 中的 PersistentVolume 在為叢集中運行的工作負載提供儲存資源方面發揮著關鍵作用。然而,有效地管理這些 PV 可能具有挑戰性,尤其是在確定 PV 最後一次在不同階段(例如 Pending
、Bound
或 Released
)之間轉換的時間時。管理員通常需要知道 PV 最後一次使用或轉換到特定階段的時間;例如,為了實作保留原則、執行清理或監控儲存健康狀態。
過去,Kubernetes 使用者在使用 Delete
保留原則時曾面臨資料遺失問題,並且不得不求助於更安全的 Retain
原則。當我們計劃引入新的 lastPhaseTransitionTime
欄位的工作時,我們希望提供一個更通用的解決方案,可用於各種用例,包括基於卷宗上次使用時間的手動清理,或基於階段轉換時間產生警報。
lastPhaseTransitionTime 如何提供幫助
假設您已啟用功能閘道(請參閱如何使用它),PersistentVolume (PV) 的新 .status.lastPhaseTransitionTime
欄位會在每次 PV 從一個階段轉換到另一個階段時更新。無論是從 Pending
轉換到 Bound
、Bound
轉換到 Released
,還是任何其他階段轉換,都會記錄 lastPhaseTransitionTime
。對於新建立的 PV,階段將設定為 Pending
,並且也會記錄 lastPhaseTransitionTime
。
此功能允許叢集管理員:
實作保留原則
透過
lastPhaseTransitionTime
,管理員現在可以追蹤 PV 最後一次使用或轉換到Released
階段的時間。此資訊對於實作保留原則以清理已處於Released
階段特定時間的資源至關重要。例如,現在可以輕鬆編寫腳本或原則,刪除所有已處於Released
階段一週的 PV。監控儲存健康狀態
透過分析 PV 的階段轉換時間,管理員可以更有效地監控儲存健康狀態。例如,他們可以識別已處於
Pending
階段異常長時間的 PV,這可能表示儲存佈建器存在潛在問題。
如何使用它
lastPhaseTransitionTime
欄位從 Kubernetes v1.28 開始為 Alpha 版本,因此需要啟用 PersistentVolumeLastPhaseTransitionTime
功能閘道。
如果您想在功能處於 Alpha 階段時進行測試,則需要在 kube-controller-manager
和 kube-apiserver
上啟用此功能閘道。
使用 --feature-gates
命令列引數
--feature-gates="...,PersistentVolumeLastPhaseTransitionTime=true"
請記住,功能啟用不會立即生效;每當 PV 更新並在階段之間轉換時,就會填入新欄位。然後,管理員可以透過 PV 狀態存取新欄位,PV 狀態可以使用標準 Kubernetes API 呼叫或透過 Kubernetes 用戶端程式庫檢索。
以下是如何使用 kubectl
命令列工具檢索特定 PV 的 lastPhaseTransitionTime
的範例
kubectl get pv <pv-name> -o jsonpath='{.status.lastPhaseTransitionTime}'
未來展望
此功能最初是作為 Alpha 功能引入的,在預設情況下停用的功能閘道之後。在 Alpha 階段,我們 (Kubernetes SIG Storage) 將收集來自終端使用者社群的回饋,並解決已識別出的任何問題或改進。
一旦收到充分的回饋,或未收到任何投訴,該功能即可移至 Beta 階段。Beta 階段將使我們能夠進一步驗證實作並確保其穩定性。
在這個欄位升級到 Beta 版本和升級到正式發行 (GA) 版本之間,至少會發生兩個 Kubernetes 版本發布。這表示此欄位最早可能正式發行的版本是 Kubernetes 1.32,預計在 2025 年初排程發布。
參與其中
我們隨時歡迎新的貢獻者,因此如果您想參與其中,可以加入我們的 Kubernetes 儲存特別興趣小組 (SIG)。
如果您想分享回饋,可以在我們的 公開 Slack 頻道上進行。如果您還不是該 Slack 工作區的成員,可以訪問 https://slack.k8s.io/ 取得邀請。
特別感謝所有提供出色評論、分享寶貴見解並協助實作此功能 (依字母順序排列) 的貢獻者