Slide 1

Slide 1 text

Cloud Native Taiwan User Group 2024/10 Meetup Kubernetes v1.31 簡單雜談 ChengHao Yang (tico88612)

Slide 2

Slide 2 text

為什麼會有這主題?

Slide 3

Slide 3 text

1. 祭出 swag、各 大 社群宣傳,但依 舊沒有 人 投稿。 2. Infra Labs 停機中,找不到其他應 用 主題可以 水 。 3. 原本想來講 K8s node memory swap 主題 (KEP-2400),但是...? 為什麼會有這主題? 投稿連結:https://sessionize.com/cntug-meetup/

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

趁 K8s 1.31 還沒過時前 水 一 篇

Slide 6

Slide 6 text

梯 口 (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)

Slide 7

Slide 7 text

Agenda • Kubernetes v1.31 主題 • Kubeadm v1beta3 to v1beta4 • 更彈性的 Job Pod 失敗策略 (KEP-3329) • 奇怪的 PV 洩漏修正?(KEP-2644) • 剩下的零碎內容

Slide 8

Slide 8 text

Kubernetes v1.31 主題

Slide 9

Slide 9 text

• Elli 是 一 隻歡樂可愛的 小 狗,戴著 一 頂漂亮的 水手 帽。 • Kubernetes 10 週年慶 生 後的第 一 個版本發佈。 Kubernetes v1.31 主題

Slide 10

Slide 10 text

No content

Slide 11

Slide 11 text

Kubernetes 歷屆主題 logo

Slide 12

Slide 12 text

Kubernetes 歷屆主題 logo

Slide 13

Slide 13 text

Kubernetes 歷屆主題 logo (cont.)

Slide 14

Slide 14 text

Kubeadm v1beta3 to v1beta4

Slide 15

Slide 15 text

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 欄位。

Slide 16

Slide 16 text

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 參數 => ???? 正常升級! 蛤?

Slide 17

Slide 17 text

為什麼中間失敗?但 又 變回正常? • 以前警告說明不要在 InitCon fi guration 或 ClusterCon fi guration 用 --con fi g,直 到 v1.30 跳出錯誤訊息。 • v1.30 的時候 kubeadm v1beta4 還沒出現,以為就是被棄 用 了。 • 可是當你去看 文 件, 又 沒有說棄 用 ,參數 文 件活得很好。 • v1.31 以後 --con fi g 參數恢復使 用 ,但只能 用 在 v1beta4 的 UpgradeCon fi guration。

Slide 18

Slide 18 text

In-tree cloud provider 刪除

Slide 19

Slide 19 text

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) 平台

Slide 20

Slide 20 text

No content

Slide 21

Slide 21 text

更彈性的 Job Pod 失敗策略

Slide 22

Slide 22 text

更彈性的 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。

Slide 23

Slide 23 text

奇怪的 PV 洩漏修正?

Slide 24

Slide 24 text

奇怪的 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」則刪除。

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

No content

Slide 27

Slide 27 text

奇怪的 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!

Slide 28

Slide 28 text

No content

Slide 29

Slide 29 text

如何解決?(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。

Slide 30

Slide 30 text

如何解決?(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 的檢查,確保能正確地 執 行 回收流程。

Slide 31

Slide 31 text

No content

Slide 32

Slide 32 text

剩下的零碎內容

Slide 33

Slide 33 text

剩下的零碎內容 • SPDY to WebSocket • OCI volume source (CRI-O v1.31 以上 支 援) • status.nodeInfo.kubeProxyVersion 棄 用 • Cgroup v1 進入維護模式 • 節點的 Cgroup 自 動設定 Driver (beta)