Upgrade to Pro — share decks privately, control downloads, hide ads and more …

20241024 - CNTUG meetup - Kubernetes v1.31 簡單雜談

20241024 - CNTUG meetup - Kubernetes v1.31 簡單雜談

20241024 - CNTUG meetup - Kubernetes v1.31 簡單雜談

活動詳情:https://community.cncf.io/e/m2zs2f/

Kubernetes v1.31 已經發佈兩個月,你開始在使用它了嗎?還是猶豫要不要升級上去?這次來帶大家概括一下 v1.31 有什麼新功能,導讀 K8s blog 和相關的 KEP (Kubernetes Enhancement Proposals),以及踩坑經驗談吧!

簡報使用 CC BY-SA 4.0 (姓名標示─相同方式分享 4.0 國際)
This presentation is licensed under CC BY-SA 4.0 (Creative Commons Attribution-ShareAlike 4.0 International).

ChengHao Yang

October 24, 2024
Tweet

More Decks by ChengHao Yang

Other Decks in Technology

Transcript

  1. 1. 祭出 swag、各 大 社群宣傳,但依 舊沒有 人 投稿。 2. Infra

    Labs 停機中,找不到其他應 用 主題可以 水 。 3. 原本想來講 K8s node memory swap 主題 (KEP-2400),但是...? 為什麼會有這主題? 投稿連結:https://sessionize.com/cntug-meetup/
  2. 梯 口 (tico88612) • CNTUG meetup Co-organizer • KCD Taiwan

    2023 / KCD Taipei 2024 Co-organizer • CNCF Ambassador (since 2024 H1) • Code Reviewer @ Kubespray • Release Signal Team Shadow
 @ Kubernetes v1.32 • 鏡 音 リン愛好者 $ whoami (My next topic: TBA)
  3. Agenda • Kubernetes v1.31 主題 • Kubeadm v1beta3 to v1beta4

    • 更彈性的 Job Pod 失敗策略 (KEP-3329) • 奇怪的 PV 洩漏修正?(KEP-2644) • 剩下的零碎內容
  4. • Elli 是 一 隻歡樂可愛的 小 狗,戴著 一 頂漂亮的 水手

    帽。 • Kubernetes 10 週年慶 生 後的第 一 個版本發佈。 Kubernetes v1.31 主題
  5. Kubeadm v1beta3 to v1beta4 • 新增 ResetCon fi guration •

    dryRun 模式 支 援 InitCon fi guration 和 JoinCon fi guration • ClusterCon fi guration 新增 certi fi cateValidityPeriod 和 caCerti fi cateValidityPeriod 欄位。 • 新增 nodeRegistration.imagePullSerial 欄位。
  6. Kubeadm v1beta3 to v1beta4 • 我們來試想 一 種情況,假定你的指令格式皆符合 文 件所述:

    • kubeadm v1.29 使 用 upgrade 帶有 --con fi g 參數 => 正常升級 • kubeadm v1.30 使 用 upgrade 帶有 --con fi g 參數 => 升級失敗 • kubeadm v1.31 使 用 upgrade 帶有 --con fi g 參數 => ???? 正常升級! 蛤?
  7. 為什麼中間失敗?但 又 變回正常? • 以前警告說明不要在 InitCon fi guration 或 ClusterCon

    fi guration 用 --con fi g,直 到 v1.30 跳出錯誤訊息。 • v1.30 的時候 kubeadm v1beta4 還沒出現,以為就是被棄 用 了。 • 可是當你去看 文 件, 又 沒有說棄 用 ,參數 文 件活得很好。 • v1.31 以後 --con fi g 參數恢復使 用 ,但只能 用 在 v1beta4 的 UpgradeCon fi guration。
  8. In-tree cloud provider 刪除程式碼 KEP-2392: Cloud Controller Manager • 目

    前是 Kubernetes 有史以來最 大 migration(v1.7 -> v1.30) • 從核 心 元件刪除 大 約 150 萬 行 程式碼,binary 檔案 大小 減少 40%。 • 最初的五個雲端供應商:GCP、AWS、Azure、OpenStack 和 vSphere • 象徵 Kubernetes 是供應商中立 (vendor-neutral) 平台
  9. 更彈性的 Job Pod 失敗策略 KEP-3329: Retriable and non-retriable Pod failures

    for Jobs • backo ff Limit 會計算重試次數,但如果是基礎架構問題不應該被計算。 • 允許提前終 止工 作,可以節省最後 一 定會失敗的容器浪費時間和運算資源。 • 目 前有實作 Retry Policies 的第三 方 框架: • Kube fl ow:TFJob • Argo Work fl ow:Work fl ow • 此功能與 restartPolicy 會有衝突,必須設定為 Never。
  10. 奇怪的 PV 洩漏修正? KEP-2644: Honor Persistent Volume Reclaim Policy 1.

    PV 綁定 PVC,先刪除 PV 動作,這會讓 PV 加 deletionTimeStamp。 2. 但 PV 依然跟 PVC 綁定,會有保護機制。 3. 如果 PVC 已刪除,PV 變成「Released」。 4. PV-protection-controller 檢查有 deleteionTimeStamp 且不是「Bound」, 而 移除 fi nalizer。 5. PV-PVC-controller 啟動回收流程,persistentVolumeReclaimPolicy 如果是 「Delete」則刪除。
  11. 奇怪的 PV 洩漏修正? KEP-2644: Honor Persistent Volume Reclaim Policy 1.

    假設步驟 4 正在進 行 ,當 deleteVolumeOperation 執 行 時,它嘗試從 API 取得 PV 狀態,但因為步驟 4 已經被刪除,無法執 行 。-> Leak! 2. 假設步驟 4 還沒發 生 ,deleteVolumeOperation 會檢查到 PV 已經有 deletionTimestamp,認為刪除操作已經在處理中。因此,插件的卷刪除不會 被執 行 。-> Leak!
  12. 奇怪的 PV 洩漏修正? KEP-2644: Honor Persistent Volume Reclaim Policy 1.

    假設步驟 4 正在進 行 ,當 deleteVolumeOperation 執 行 時,它嘗試從 API 取得 PV 狀態,但因為步驟 4 已經被刪除,無法執 行 。-> Leak! 2. 假設步驟 4 還沒發 生 ,deleteVolumeOperation 會檢查到 PV 已經有 deletionTimestamp,認為刪除操作已經在處理中。因此,插件的卷刪除不會 被執 行 。-> Leak! 3. External-provisioner 檢查 PV 是否有 deletionTimestamp,如果有,它會假設 該 PV 處於過渡狀態,並在 shouldDelete 檢查中返回 false。-> Leak!
  13. 如何解決?(CSI Driver volumes) KEP-2644: Honor Persistent Volume Reclaim Policy 1.

    使 用 external-provisioner.volume.kubernetes.io/ fi nalizer。 2. 除了新的 PV 上都有 fi nalizer,也會加入到所有現有的 PV 上。 3. 確保 PV 對應的 volume 確實被刪除之後,才會從 Kubernetes API 中被刪除。 4. 當 shouldDelete 檢查成功時,會向 CSI Driver 發送 volume 刪除請求。後端 volume 被成功刪除後,PV 的終結器會被移除,並從 API 伺服器中刪除 PV。
  14. 如何解決?(In-Tree Plugin volumes) KEP-2644: Honor Persistent Volume Reclaim Policy 1.

    加入新的 fi nalizer:kubernetes.io/pv-controller。 2. 新的 In-Tree volume 以及現有的 In-Tree volume 都有加入此 fi nalizer。 3. 如果 CSI migration 啟 用 ,就會把 kubernetes.io/pv-controller 刪除,並改到 CSI Driver 方 式執 行 。 4. 如果 CSI migration 禁 用 , kubernetes.io/pv-controller 會重新新增到 PV 上。 5. PV 被變為「Released」後,忽略 DeletionTimestamp 的檢查,確保能正確地 執 行 回收流程。
  15. 剩下的零碎內容 • SPDY to WebSocket • OCI volume source (CRI-O

    v1.31 以上 支 援) • status.nodeInfo.kubeProxyVersion 棄 用 • Cgroup v1 進入維護模式 • 節點的 Cgroup 自 動設定 Driver (beta)