日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

OpenKruise v0.8.0 版本发布:K8s 社区首个规模化镜像预热能力

發布時間:2025/3/20 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OpenKruise v0.8.0 版本发布:K8s 社区首个规模化镜像预热能力 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

作者 | 王思宇(酒祝)
來源 | 阿里巴巴云原生公眾號

背景

OpenKruise 是阿里云開源的云原生應用自動化管理套件,也是當前托管在 Cloud Native Computing Foundation (CNCF) 下的 Sandbox 項目。它來自阿里巴巴多年來容器化、云原生的技術沉淀,是阿里內部生產環境大規模應用的基于 Kubernetes 之上的標準擴展組件,緊貼上游社區標準、適應互聯網規模化場景的技術理念與最佳實踐。

新版本概覽

Kruise 在 2021 年 3 月 4 日發布了最新的 v0.8.0 版本(ChangeLog),本文以下對新版本做一個整體的概覽介紹。

1. 新增 kruise-daemon 組件

過去已經使用過 OpenKruise 的同學一定知道,Kruise 安裝之后運行的組件是 kruise-manager,它是一個中心化部署的 Operator 組件,包含了一系列 controller 控制器以及 webhook。

而從 v0.8.0 開始,我們又增加了 kruise-daemon 這個節點組件,通過 DaemonSet 部署到每個節點上。這樣,一直以來社區小伙伴們提的類似鏡像預熱容器重啟等需求,就有途徑去實現啦!

Tips:

  • 目前 kruise 提供的官方鏡像支持 Linux 的 amd64(x86)、arm64、arm/v7 架構,如果你的集群中存在非以上架構的節點,暫時是無法正常運行 kruise-daemon 的,有這類需求的同學可以提issue 說明你的需求。

  • 如果你存在上述情況,或者你不希望在某些節點上安裝 kruise-daemon,可以在 helm 安裝的時候通過 daemon.affinity 參數來指定 kruise-daemon 部署的親和性規則。

2. 規模化鏡像預熱能力

在 Kubernetes 生態中,過去并沒有一個成熟的鏡像預熱開源解決方案,可能更多的是一些公司在內部會落地一些適配于本地場景的預熱,這其中也包括阿里巴巴。不過從 v0.8.0 開始,我們將阿里巴巴所做的鏡像預熱能力完全通用化輸出到 OpenKruise 中,并且阿里內部的鏡像預熱也完全統一到這套開源的實現上來了。

OpenKruise 鏡像預熱的具體實現原理,我們會在后續的專項文章中做詳細介紹,這里只以一個最簡單的例子演示下如何做一個鏡像的預熱:

apiVersion: apps.kruise.io/v1alpha1 kind: ImagePullJob metadata:name: job-nginx spec:image: nginx:1.9.1 # [required] 完整的鏡像名 name:tagparallelism: 10 # [optional] 最大并發拉取的節點梳理, 默認為 1selector: # [optional] 指定節點的 名字列表 或 標簽選擇器 (只能設置其中一種),不設置表示全部節點names:- node-1- node-2matchLabels:node-type: xxxcompletionPolicy:type: Always # [optional] 默認為 AlwaysactiveDeadlineSeconds: 1200 # [optional] 無默認值, 只對 Alway 類型生效ttlSecondsAfterFinished: 300 # [optional] 無默認值, 只對 Alway 類型生效pullPolicy: # [optional] 每個節點上拉鏡像的側臉,默認 backoffLimit=3, timeoutSeconds=600backoffLimit: 3timeoutSeconds: 300

ImagePullJob 有兩種 completionPolicy 類型:

  • Always 表示這個 job 是一次性預熱,不管成功、失敗都會結束
    • activeDeadlineSeconds:整個 job 的 deadline 結束時間
    • ttlSecondsAfterFinished:結束后超過這個時間,自動清理刪除 job
  • Never 表示這個 job?是長期運行、不會結束,并且會每天都會在匹配的節點上重新預熱一次指定的鏡像

詳細信息參考官網文檔:https://openkruise.io/zh-cn/docs/imagepulljob.html

3. SidecarSet 全新重構實現

SidecarSet 是一個用于管理 sidecar 容器的控制器。在用戶創建了 SidecarSet 之后,Kruise 能為后續創建的符合規定條件的 Pod 中自動注入用戶定義的 sidecar 容器,以及對已注入的 sidecar 容器做原地升級同時不影響業務容器的運行。

在過去版本中,SidecarSet 的局限性較多,比如用戶無法聲明只對某個 namespace 生效、sidecar 原地升級時灰度能力較弱等。在 v0.8.0 中,我們全新重構了 SidecarSet 的 controller 和 webhook,并且在 CRD 定義上新增了一些更多能力的策略字段。舉一些例子:

  • spec.namespace:指定只管理具體某個命名空間的 sidecar 注入和升級
  • 多種注入策略:
  • podInjectPolicy:指定 sidecar 容器注入到 Pod 原 containers 列表的前面還是后面
  • shareVolumePolicy:與 Pod 中原容器共享卷策略
  • transferEnv:從原 Pod 中哪些容器里共享哪些環境變量
  • 多種原地升級策略:
  • maxUnavailable:升級過程中最大不可用數量
  • partition:保留舊版本的數量(灰度/分批發布)
  • selector:只升級符合 selector 條件 Pod 中的 sidecar(金絲雀發布)
  • scatter:按標簽打散發布
  • 詳細信息參考官網文檔:https://openkruise.io/zh-cn/docs/sidecarset.html

    4. 新的 feature-gate 機制

    過去 OpenKruise 中的 CRD 以及 controller/webhook 開關,主要配置在 CUSTOM_RESOURCE_ENABLE 環境變量中,而其他一些可配置開關則集中在命令行參數中,帶來的問題一來是較為分散,二來一些關聯多個 CRD 的功能開關其實很難用 CRD 開關來控制。

    因此,目前新增的 feature-gate 機制已經代替了 CUSTOM_RESOURCE_ENABLE 環境變量,聚焦于功能層面。

    在 v0.8.0 提供了 PodWebhook、KruiseDaemon 兩個開關,前者關閉后 kruise 不會對 pod creation 做 webhook 攔截,但同時也會關閉 SidecarSet 功能,后者關閉后不會部署 kruise-daemon 組件,但同時也會關閉鏡像預熱功能。后續版本中個,我們會逐漸把過去的開關參數統一到 feature-gate 中。

    5. 其余一些變化點

    其余部分優化:

    • CloneSet、Advanced StatefulSet 部分邏輯優化。
    • 在官方 DockerHub 之外新增阿里云托管鏡像,國內用戶可以選擇使用阿里云鏡像源來安裝/升級 Kruise。
    • 調用 apiserver 的 user-agent 細化到控制器。
    • clientset 中為支持 scale 子資源的 CRD 新增 GetScale/UpdateScale 方法。

    總結

    OpenKruise v0.8.0 新版本,可以說是 Kubernetes 社區中首個提供開源的規模化鏡像預熱功能的產品了。而在今年后續的版本里,我們還計劃提供利用鏡像預熱來加速應用發布、應用安全防護、Controller 灰度/分片管控等能力,預計在年中將推出 v1.0 大版本。

    OpenKruise 是一個成熟的 CNCF 沙箱項目,除了在阿里巴巴內大規模應用之外,在行業內也有著廣泛的用戶案例:

    • 基于原地升級、灰度發布等需求,攜程在生產環境使用 CloneSet、AdvancedStatefulSet 來分別管理無狀態、有狀態應用,單集群 Kruise workload 數量達到萬級別。
    • OPPO 公司不僅大規模使用了 OpenKruise,還在下游配合其定制化的 Kubernetes 進一步加強了原地升級,廣泛應用在多個業務的后端運行服務中,通過原地更新覆蓋了 87% 左右的升級部署需求。
    • 此外,國內的用戶還有斗魚 TV、有贊、蘇寧、比心、Boss 直聘、申通、小紅書、火花思維、VIPKID、掌門教育、杭銀消費、萬翼科技、多點 Dmall、佐疆科技、享住智慧、艾佳生活、永輝科技中心、跟誰學、Deepexi,國外的用戶有 Lyft、Bringg、Arkane Systems、Spectro Cloud 等。

    我們歡迎每一位云原生愛好者共同參與 OpenKruise 的建設,共同打造業界頂尖的云原生應用自動化引擎!

    最后的開源要聞

    近期,阿里云 DADI (Data Accelerator for Disaggregated Infrastructure) 產品開源了!這是一個容器鏡像加速器項目,已經在阿里巴巴內部有了大規模場景的應用。

    它的主要原理是消除 image 的下載和解壓縮過程,代之以實現細粒度數據塊的按需拉取。這樣可以削減絕大多數的數據下載工作,同時將計算延遲與數據傳輸延遲相互隱藏,最終達到大幅削減啟動延遲的作用。

    DADI 將容器 image 的分層特性與虛擬機 image 的塊設備接口相結合,形成全新的分層塊設備 image,稱為 overlaybd。由于使用了塊設備接口,DADI 可以支持原生文件系統,如 ext4、xfs、甚至 ntfs;塊設備接口也可以自然地支持虛擬化的安全容器,并且只暴露最小的 attack surface。此外由于塊設備 image 簡單高效的特性,overlaybd 可以為用戶提供更好的 I/O 性能。

    有興趣的同學可以參考論文看一下 Github 項目哦:

    • 論文地址

    • Github 地址

    如果大家對 OpenKruise 項目感興趣,有任何希望交流的話題,歡迎大家訪問 OpenKruise 官網、GitHub,以及釘釘搜索群號:23330762,加入交流群!

    總結

    以上是生活随笔為你收集整理的OpenKruise v0.8.0 版本发布:K8s 社区首个规模化镜像预热能力的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。