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

歡迎訪問(wèn) 生活随笔!

生活随笔

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

编程问答

OpenKruise 如何实现应用的可用性防护?

發(fā)布時(shí)間:2025/3/20 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OpenKruise 如何实现应用的可用性防护? 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

作者|趙明山(立衡)

前言

OpenKruise 是阿里云開(kāi)源的云原生應(yīng)用自動(dòng)化管理套件,也是當(dāng)前托管在 Cloud Native Computing Foundation (CNCF) 下的 Sandbox 項(xiàng)目。它來(lái)自阿里巴巴多年來(lái)容器化、云原生的技術(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í)踐。
?
OpenKruise 在 2021.9.6 發(fā)布了最新的 v0.10.0 版本新增了彈性拓?fù)涔芾砗蛻?yīng)用安全防護(hù)等能力,本文將為大家揭曉 OpenKruise 是如何實(shí)現(xiàn)應(yīng)用的可用性防護(hù)能力。

背景

在文章開(kāi)始部分,我想先聊聊到底什么是“應(yīng)用的可用性防護(hù)”。例如,在 Kubernetes 上面部署的 ETCD 服務(wù),時(shí)刻要保證可用的實(shí)例數(shù)不小于 N(受限于 raft 協(xié)議的選舉機(jī)制)。很多同學(xué)都會(huì)想到 Deployment 中可以設(shè)置 maxUnavailable,那不就行了嗎?再說(shuō)了,還會(huì)有 RS Controller 在做副本控制呢?仔細(xì)想想,Deployment 的 MaxUnavailable 是在應(yīng)用滾動(dòng)發(fā)布的過(guò)程中保證最小的 Pod 數(shù)量,而 RS Controller 控制器則是盡快讓?xiě)?yīng)用實(shí)際的福本數(shù)等于預(yù)期的副本數(shù),并不能保證應(yīng)用每時(shí)每刻的最小可用副本數(shù)。

針對(duì)上述場(chǎng)景,Kubernetes 原生提供的 PodDisruptionBudget(PDB)通過(guò)限制同時(shí)中斷 Pod 的數(shù)量,來(lái)保證應(yīng)用的高可用性。但是,當(dāng)前 PDB 的能力并不全面,它只能防護(hù) Pod Eviction 場(chǎng)景(例如:kubectl drain node 驅(qū)逐 node 上面的 Pod)。在如下“并發(fā) Pod 更新/驅(qū)逐/刪除”場(chǎng)景中,即便有 PDB 防護(hù)依然將會(huì)導(dǎo)致業(yè)務(wù)中斷、服務(wù)降級(jí):

  • 應(yīng)用 owner 通過(guò) Deployment 正在進(jìn)行版本升級(jí),與此同時(shí)集群管理員由于機(jī)器資源利用率過(guò)低正在進(jìn)行 node 縮容
  • 中間件團(tuán)隊(duì)利用 SidecarSet 正在原地升級(jí)集群中的sidecar版本(例如:ServiceMesh envoy),同時(shí) HPA 正在對(duì)同一批應(yīng)用進(jìn)行縮容
  • 應(yīng)用 owner 和中間件團(tuán)隊(duì)利用 CloneSet、SidecarSet 原地升級(jí)的能力,正在對(duì)同一批 Pod 進(jìn)行升級(jí)

PodUnavailableBudget 提升應(yīng)用的高可用性

Kubernetes 原生 PDB 為什么只能防護(hù) Pod Eviction 的場(chǎng)景呢?首先,讓我們來(lái)看看它的實(shí)現(xiàn)原理:PDB 通過(guò) selector 選擇了一批防護(hù)的 Pod 列表,minAvailable 則表明最小可用的 Pod 數(shù)量,pdb-controller 根據(jù)前面兩個(gè)值以及線上 Pod 的 ready 狀態(tài),計(jì)算出當(dāng)前時(shí)刻最多允許中斷的 Pod 數(shù)量 PodDisruptionAllowd。k8s pod evictionRestful API 接口則會(huì)根據(jù) pdb PodDisruptionAllowd 來(lái)決定接口成功還是返回 400 報(bào)錯(cuò)。到了這里終于真相大白了,pdb 通過(guò) evictionRestful API 接口來(lái)實(shí)現(xiàn) pod 的防護(hù)能力,所以它只能適用于 Pod Eviction 場(chǎng)景。

OpenKruise PodUnavailableBudget(PUB)安全防護(hù)的整體思路與 PDB 其實(shí)也大致相同,不過(guò)在關(guān)鍵的防護(hù)路徑上面做了一些調(diào)整。Voluntary Disruption(諸如:集群管理員驅(qū)逐 Node、并發(fā)升級(jí) Pod)主動(dòng)導(dǎo)致 Pod 不可用的場(chǎng)景其實(shí)可以歸納為以下三類(lèi):

  • Modification Pod.Spec 定義(CloneSet、SidecarSet 原地升級(jí) container)
  • Delete Pod(Deployment 等控制器滾動(dòng)升級(jí) Pod、直接 Delete Pod)
  • Eviction API(kubectl drain node 驅(qū)逐 Pod)

OpenKruise 基于 Kubernetes Adminssion Webhook 機(jī)制添加針對(duì) Pod Update/Delete/Eviction 的 webhook 邏輯,根據(jù) pub 的 PodUnavailableAllowed 來(lái)實(shí)現(xiàn)更加全面的應(yīng)用 Pod 安全防護(hù)機(jī)制,邏輯架構(gòu)如下:

應(yīng)用場(chǎng)景

  • 無(wú)狀態(tài)應(yīng)用:比如想至少有 60% 的副本 Available
    • 解決辦法:創(chuàng)建 PUB Object,指定 minAvailable 為 60%,或者 maxUnavailable 為 40%
apiVersion: apps.kruise.io/v1alpha1 kind: PodUnavailableBudget metadata:name: web-server-pubnamespace: web spec:targetRef:apiVersion: apps.kruise.io/v1alpha1kind: CloneSetname: web-serverminAvailable: 60%
  • 有狀態(tài)應(yīng)用:最少可用的實(shí)例數(shù)不能少于某個(gè)數(shù) N(比如受限于 raft 協(xié)議類(lèi)應(yīng)用的選舉機(jī)制)
    • 解決辦法:設(shè)置 maxUnavailable=1 或者 minAvailable=N,分別允許每次只刪除一個(gè)實(shí)例或每次刪除 workload.replicas - minAvailable 個(gè)實(shí)例
apiVersion: apps.kruise.io/v1alpha1 kind: PodUnavailableBudget metadata:name: etcd-pubnamespace: etcd spec:targetRef:apiVersion: apps.kruise.io/v1alpha1kind: StatefulSetname: etcdmaxUnavailable: 1
  • 單實(shí)例應(yīng)用:終止這個(gè)實(shí)例之前必須提前通知客戶并取得同意
    • 解決辦法:創(chuàng)建 PUB Object,并設(shè)置 maxUnavailable 為 0,這樣 OpenKruise 就會(huì)阻止這個(gè)實(shí)例的刪除,然后去通知并征求用戶同意后,再把這個(gè) PUB 刪除從而解除這個(gè)阻止,然后再去 recreate
apiVersion: apps.kruise.io/v1alpha1 kind: PodUnavailableBudget metadata:name: gameserver-pubnamespace: game spec:targetRef:apiVersion: apps.kruise.io/v1alpha1kind: StatefulSetname: gameservermaxUnavailable: 0

總結(jié)

Kubernetes 給用戶帶來(lái)極致彈性調(diào)度的同時(shí)也給應(yīng)用的高可用性帶來(lái)了一定的考驗(yàn),PUB 是在 Voluntary Disruption 場(chǎng)景下的一種嘗試,同時(shí)配合 OpenKruise 提供的防級(jí)聯(lián)刪除的能力相信能在一定程度上提升線上應(yīng)用的穩(wěn)定性。而針對(duì)更加棘手 InVoluntary Disruption(諸如:集群 Node 網(wǎng)絡(luò)腦裂、vk 節(jié)點(diǎn)異常)導(dǎo)致 Pod 不可用等降低應(yīng)用可用性的場(chǎng)景,OpenKruise 未來(lái)也會(huì)有更多的探索。與此同時(shí),我們也歡迎更多的同學(xué)參與到 OpenKruise 社區(qū)來(lái),共同建設(shè)一個(gè)場(chǎng)景更加豐富、完善的 K8s 應(yīng)用管理、交付擴(kuò)展能力,能夠面向更加規(guī)模化、復(fù)雜化、極致性能的場(chǎng)景。

Github:https://github.com/openkruise/kruise
Official:https://openkruise.io/
Slack: Channel in Kubernetes Slack
釘釘交流群:搜索群號(hào)【23330762】可添加~

戳鏈接(https://github.com/openkruise/kruise),查看 OpenKruise 項(xiàng)目 github 主頁(yè)!!

總結(jié)

以上是生活随笔為你收集整理的OpenKruise 如何实现应用的可用性防护?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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

主站蜘蛛池模板: 91全免费 | www.男人的天堂.com | 欧美日韩综合视频 | 国产视频一二三区 | 国产中文字幕亚洲 | 另类中文字幕 | 国产精品国产精品国产专区不片 | 杨幂一区二区三区免费看视频 | av资源在线| 亚洲影视一区二区 | 亲子乱一区二区三区 | 日韩乱码在线观看 | 成人短视频在线免费观看 | 亚洲精品乱码久久久久久蜜桃图片 | 99国产精品99久久久久久 | 天堂中文字幕在线观看 | 三年中文在线观看免费观看 | 国产黄色网址在线观看 | 国产精品一区二区6 | 成人一区二 | www.亚洲天堂 | 76少妇精品导航 | 欧美高大丰满少妇xxxx | 亚洲欧美国产视频 | 中文字幕不卡视频 | 黄视频免费看在线 | 男人私人影院 | 一区二区视频在线播放 | 国产欧美日韩中文字幕 | 亚洲黄片一区 | 久久久久久97| 国产一区二区三区视频网站 | 乌克兰av在线 | 精品国产鲁一鲁一区二区张丽 | 成人久色 | 手机在线不卡av | 亚洲一区二区三区人妻 | 91天天干 | 一级淫片免费看 | 国产黄色大片在线观看 | av大片在线观看 | 古装做爰无遮挡三级 | 国产精品一区二区三 | www狠狠| 在线中文字幕一区二区 | 伊人久久青青 | av网站地址 | 日本黄色片在线播放 | 国产十八熟妇av成人一区 | 欧美乱欲视频 | 国产在线a | 超污巨黄的小短文 | 麻豆观看| 放荡闺蜜高h苏桃情事h | 国产微拍精品一区 | 免费av网站在线 | 免费在线成人av | 国产精品国产三级国产aⅴ浪潮 | 免费色片| 麻豆一区二区 | 九九精品九九 | 日本免费福利视频 | 国产免费观看视频 | 午夜不卡av | 亚洲精品短视频 | 奶妈的诱惑| 亚洲人精品| 国产精品va无码一区二区三区 | 在线a毛片 | 国产在线视频卡一卡二 | 国内av在线播放 | 日韩社区 | 草草草在线视频 | 美腿丝袜一区二区三区 | 极品美女开粉嫩精品 | 麻豆久久久久 | 日韩av在线网站 | 一区二区国产视频 | 奇米第四色首页 | 夜夜干天天操 | 欧美国产片 | 99视频在线观看免费 | 女人脱裤子让男人捅 | 欧美一级淫片免费视频魅影视频 | 黄色在线播放视频 | 无码一区二区三区 | 年代下乡啪啪h文 | 成人h动漫在线 | 石原莉奈在线播放 | 精品人妻一区二区三区日产乱码卜 | 国产69久久 | 香蕉福利 | 黄色a级在线观看 | 久久久夜夜 | 极品少妇xxxx精品少妇偷拍 | 自拍偷在线精品自拍偷无码专区 | 免费黄色av | 国产精品久久久久毛片大屁完整版 | 亚洲综合色站 |