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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時(shí)間:2024/9/3 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OpenKruise v0.8.0 版本:K8s 社区首个规模化镜像预热能力 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
簡(jiǎn)介:OpenKruise 是阿里云開源的云原生應(yīng)用自動(dòng)化管理套件,也是當(dāng)前托管在 Cloud Native Computing Foundation (CNCF) 下的 Sandbox 項(xiàng)目。它來自阿里巴巴多年來容器化、云原生的技術(shù)沉淀,是阿里內(nèi)部生產(chǎn)環(huán)境大規(guī)模應(yīng)用的基于 Kubernetes 之上的標(biāo)準(zhǔn)擴(kuò)展組件,緊貼上游社區(qū)標(biāo)準(zhǔn)、適應(yīng)互聯(lián)網(wǎng)規(guī)?;瘓?chǎng)景的技術(shù)理念與最佳實(shí)踐。

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

背景

OpenKruise 是阿里云開源的云原生應(yīng)用自動(dòng)化管理套件,也是當(dāng)前托管在 Cloud Native Computing Foundation (CNCF) 下的 Sandbox 項(xiàng)目。它來自阿里巴巴多年來容器化、云原生的技術(shù)沉淀,是阿里內(nèi)部生產(chǎn)環(huán)境大規(guī)模應(yīng)用的基于 Kubernetes 之上的標(biāo)準(zhǔn)擴(kuò)展組件,緊貼上游社區(qū)標(biāo)準(zhǔn)、適應(yīng)互聯(lián)網(wǎng)規(guī)模化場(chǎng)景的技術(shù)理念與最佳實(shí)踐。

新版本概覽

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

1. 新增 kruise-daemon 組件

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

而從 v0.8.0 開始,我們又增加了 kruise-daemon 這個(gè)節(jié)點(diǎn)組件,通過 DaemonSet 部署到每個(gè)節(jié)點(diǎn)上。這樣,一直以來社區(qū)小伙伴們提的類似鏡像預(yù)熱、容器重啟等需求,就有途徑去實(shí)現(xiàn)啦!

Tips:

  • 目前 kruise 提供的官方鏡像支持 Linux 的 amd64(x86)、arm64、arm/v7 架構(gòu),如果你的集群中存在非以上架構(gòu)的節(jié)點(diǎn),暫時(shí)是無法正常運(yùn)行 kruise-daemon 的,有這類需求的同學(xué)可以提issue 說明你的需求。
  • 如果你存在上述情況,或者你不希望在某些節(jié)點(diǎn)上安裝 kruise-daemon,可以在 helm 安裝的時(shí)候通過 daemon.affinity 參數(shù)來指定 kruise-daemon 部署的親和性規(guī)則。

2. 規(guī)?;R像預(yù)熱能力

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

OpenKruise 鏡像預(yù)熱的具體實(shí)現(xiàn)原理,我們會(huì)在后續(xù)的專項(xiàng)文章中做詳細(xì)介紹,這里只以一個(gè)最簡(jiǎn)單的例子演示下如何做一個(gè)鏡像的預(yù)熱:

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

ImagePullJob 有兩種 completionPolicy 類型:

  • Always 表示這個(gè) job 是一次性預(yù)熱,不管成功、失敗都會(huì)結(jié)束

    • activeDeadlineSeconds:整個(gè) job 的 deadline 結(jié)束時(shí)間
    • ttlSecondsAfterFinished:結(jié)束后超過這個(gè)時(shí)間,自動(dòng)清理刪除 job
  • Never 表示這個(gè) job?是長期運(yùn)行、不會(huì)結(jié)束,并且會(huì)每天都會(huì)在匹配的節(jié)點(diǎn)上重新預(yù)熱一次指定的鏡像

詳細(xì)信息參考官網(wǎng)文檔:https://openkruise.io/zh-cn/docs/imagepulljob.html

3. SidecarSet 全新重構(gòu)實(shí)現(xiàn)

SidecarSet 是一個(gè)用于管理 sidecar 容器的控制器。在用戶創(chuàng)建了 SidecarSet 之后,Kruise 能為后續(xù)創(chuàng)建的符合規(guī)定條件的 Pod 中自動(dòng)注入用戶定義的 sidecar 容器,以及對(duì)已注入的 sidecar 容器做原地升級(jí)同時(shí)不影響業(yè)務(wù)容器的運(yùn)行。

在過去版本中,SidecarSet 的局限性較多,比如用戶無法聲明只對(duì)某個(gè) namespace 生效、sidecar 原地升級(jí)時(shí)灰度能力較弱等。在 v0.8.0 中,我們?nèi)轮貥?gòu)了 SidecarSet 的 controller 和 webhook,并且在 CRD 定義上新增了一些更多能力的策略字段。舉一些例子:

  • spec.namespace:指定只管理具體某個(gè)命名空間的 sidecar 注入和升級(jí)
  • 多種注入策略:

  • podInjectPolicy:指定 sidecar 容器注入到 Pod 原 containers 列表的前面還是后面
  • shareVolumePolicy:與 Pod 中原容器共享卷策略
  • transferEnv:從原 Pod 中哪些容器里共享哪些環(huán)境變量
  • 多種原地升級(jí)策略:

  • maxUnavailable:升級(jí)過程中最大不可用數(shù)量
  • partition:保留舊版本的數(shù)量(灰度/分批發(fā)布)
  • selector:只升級(jí)符合 selector 條件 Pod 中的 sidecar(金絲雀發(fā)布)
  • scatter:按標(biāo)簽打散發(fā)布
  • 詳細(xì)信息參考官網(wǎng)文檔:https://openkruise.io/zh-cn/docs/sidecarset.html

    4. 新的 feature-gate 機(jī)制

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

    因此,目前新增的 feature-gate 機(jī)制已經(jīng)代替了 CUSTOM_RESOURCE_ENABLE 環(huán)境變量,聚焦于功能層面。

    在 v0.8.0 提供了 PodWebhook、KruiseDaemon 兩個(gè)開關(guān),前者關(guān)閉后 kruise 不會(huì)對(duì) pod creation 做 webhook 攔截,但同時(shí)也會(huì)關(guān)閉 SidecarSet 功能,后者關(guān)閉后不會(huì)部署 kruise-daemon 組件,但同時(shí)也會(huì)關(guān)閉鏡像預(yù)熱功能。后續(xù)版本中個(gè),我們會(huì)逐漸把過去的開關(guān)參數(shù)統(tǒng)一到 feature-gate 中。

    5. 其余一些變化點(diǎn)

    其余部分優(yōu)化:

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

    總結(jié)

    OpenKruise v0.8.0 新版本,可以說是 Kubernetes 社區(qū)中首個(gè)提供開源的規(guī)?;R像預(yù)熱功能的產(chǎn)品了。而在今年后續(xù)的版本里,我們還計(jì)劃提供利用鏡像預(yù)熱來加速應(yīng)用發(fā)布、應(yīng)用安全防護(hù)、Controller 灰度/分片管控等能力,預(yù)計(jì)在年中將推出 v1.0 大版本。

    OpenKruise 是一個(gè)成熟的 CNCF 沙箱項(xiàng)目,除了在阿里巴巴內(nèi)大規(guī)模應(yīng)用之外,在行業(yè)內(nèi)也有著廣泛的用戶案例:

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

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

    最后的開源要聞

    近期,阿里云 DADI (Data Accelerator for Disaggregated Infrastructure) 產(chǎn)品開源了!這是一個(gè)容器鏡像加速器項(xiàng)目,已經(jīng)在阿里巴巴內(nèi)部有了大規(guī)模場(chǎng)景的應(yīng)用。

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

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

    有興趣的同學(xué)可以參考論文看一下 Github 項(xiàng)目哦:

    • 論文地址
    • Github 地址

    如果大家對(duì) OpenKruise 項(xiàng)目感興趣,有任何希望交流的話題,歡迎大家訪問 OpenKruise 官網(wǎng)、GitHub,以及釘釘搜索群號(hào):23330762,加入交流群!

    原文鏈接:https://developer.aliyun.com/article/782683?

    版權(quán)聲明:本文內(nèi)容由阿里云實(shí)名注冊(cè)用戶自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,阿里云開發(fā)者社區(qū)不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。具體規(guī)則請(qǐng)查看《阿里云開發(fā)者社區(qū)用戶服務(wù)協(xié)議》和《阿里云開發(fā)者社區(qū)知識(shí)產(chǎn)權(quán)保護(hù)指引》。如果您發(fā)現(xiàn)本社區(qū)中有涉嫌抄襲的內(nèi)容,填寫侵權(quán)投訴表單進(jìn)行舉報(bào),一經(jīng)查實(shí),本社區(qū)將立刻刪除涉嫌侵權(quán)內(nèi)容。

    總結(jié)

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

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。