從輪詢切換到基於 CRI 事件的容器狀態更新

特性狀態: Kubernetes v1.26 [alpha] (預設停用:false)

本頁面展示如何將節點切換為使用基於事件的容器狀態更新。與依賴輪詢的傳統方法相比,基於事件的實現降低了 kubelet 消耗的節點資源。你可能知道此功能為**事件驅動的 Pod 生命週期事件生成器 (PLEG)**。這是 Kubernetes 專案內部用於關鍵實現細節的名稱。

基於輪詢的方法被稱為**通用 PLEG**。

準備工作

  • 你需要執行一個提供此功能的 Kubernetes 版本。Kubernetes v1.27 包含了對基於事件的容器狀態更新的 Beta 支援。該功能為 Beta 版但**預設停用**,因為它需要容器執行時提供支援。
  • 你的 Kubernetes 伺服器版本必須是 1.26 或更高。

    要檢查版本,請輸入 kubectl version

    如果你正在執行不同版本的 Kubernetes,請查閱該版本的文件。
  • 所使用的容器執行時必須支援容器生命週期事件。即使你啟用了此功能門控,如果容器執行時未宣告支援容器生命週期事件,kubelet 也會自動切換回傳統的通用 PLEG 機制。

為什麼要切換到 Evented PLEG?

  • **通用 PLEG** 由於頻繁輪詢容器狀態而產生不可忽視的開銷。
  • 由於 Kubelet 並行輪詢容器狀態,此開銷進一步加劇,從而限制了其可伸縮性並導致效能不佳和可靠性問題。
  • **Evented PLEG** 的目標是透過替換週期性輪詢來減少不活動期間不必要的工作。

切換到 Evented PLEG

  1. 透過啟用 功能門控 EventedPLEG 來啟動 Kubelet。你可以透過編輯 kubelet 配置檔案 並重新啟動 kubelet 服務來管理 kubelet 功能門控。你需要在每個使用此功能的節點上執行此操作。

  2. 在繼續之前,請確保節點已排空

  3. 啟動容器執行時並啟用容器事件生成。

    版本 1.7+

    版本 1.26+

    透過驗證配置,檢查 CRI-O 是否已配置為發出 CRI 事件:

    crio config | grep enable_pod_events
    

    如果已啟用,輸出應類似於以下內容:

    enable_pod_events = true
    

    要啟用它,請使用標誌 --enable-pod-events=true 啟動 CRI-O 守護程式,或者使用包含以下行的插入式配置:

    [crio.runtime]
    enable_pod_events: true
    
    你的 Kubernetes 伺服器版本必須是 1.26 或更高。

    要檢查版本,請輸入 kubectl version

  4. 驗證 kubelet 是否正在使用基於事件的容器階段變更監控。要檢查,請在 kubelet 日誌中查詢術語 EventedPLEG

    輸出應類似於此:

    I0314 11:10:13.909915 1105457 feature_gate.go:249] feature gates: &{map[EventedPLEG:true]}
    

    如果你已將 --v 設定為 4 或更高,你可能會看到更多條目,表明 kubelet 正在使用基於事件的容器狀態監控。

    I0314 11:12:42.009542 1110177 evented.go:238] "Evented PLEG: Generated pod status from the received event" podUID=3b2c6172-b112-447a-ba96-94e7022912dc
    I0314 11:12:44.623326 1110177 evented.go:238] "Evented PLEG: Generated pod status from the received event" podUID=b3fba5ea-a8c5-4b76-8f43-481e17e8ec40
    I0314 11:12:44.714564 1110177 evented.go:238] "Evented PLEG: Generated pod status from the received event" podUID=b3fba5ea-a8c5-4b76-8f43-481e17e8ec40
    

下一步

上次修改時間:2024 年 2 月 20 日上午 9:48 (太平洋標準時間):將更多 feature-state 簡碼切換為資料驅動 (7b6866063f)