精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

應用現代化中的彈性伸縮簡介

OSC開源社區 ? 來源:享受生活的云計算工程師 ? 2023-06-05 09:19 ? 次閱讀

應用現代化中的彈性伸縮

這兩年應用現代化的步伐飛快,19年我在很多企業部署虛擬化,介紹虛擬網絡和虛擬存儲。23年,這些企業都已經上了云原生或考慮云原生了。對于高流量的Web應用程序,實時數據分析,大規模數據處理、移動應用程序等業務,容器比虛擬機更適合,因為它輕量級,快速響應,可輕松移植,并具有很強的彈性伸縮能力。

為什么需要彈性伸縮呢?

?峰值負載應對:促銷活動、節假日購物季或突發事件根據需求快速擴展資源,保證應用可用性和性能。

?提高資源利用率:根據實際資源負載動態調整資源規模,避免基礎設施資源浪費,降低TCO。

?應對故障和容錯多實例部署和快速替換,提高業務連續性和可用性。

?跟隨需求變化:匹配前端的業務需求及壓力,快速調整規模,提高事件應對能力,滿足需求和期望。

Horizontal Pod Autoscaling

Kubernetes自身提供一種彈性伸縮的機制,包括Vertical Pod Autoscaler (VPA)和Horizontal Pod Autoscaler (HPA)。HPA根據 CPU 、內存利用率增加或減少副本控制器的 pod 數量,它是一個擴縮資源規模的功能特性。

HPA依賴Metrics-Server捕獲CPU、內存數據來提供資源使用測量數據,也可以根據自定義指標(如Prometheus)進行擴縮。

ffe1150a-031b-11ee-90ce-dac502259ad0.png

由上圖看出,HPA持續監控Metrics-Server的指標情況,然后計算所需的副本數動態調整資源副本,實現設置目標資源值的水平伸縮。

但也有一定局限性:

?無外部指標支持。如不同的事件源,不同的中間件/應用程序等,業務端的應用程序變化及依賴是多樣的,不只是基于CPU和內存擴展。

?無法1->0。應用程序總有0負載的時候,此時不能不運行工作負載嗎?

所以就有了Kubernetes-based Event-Driven Autoscaling(KEDA)!

KEDA

KEDA基于事件驅動進行自動伸縮。什么是事件驅動?我理解是對系統上的各種事件做出反應并采取相應行動(伸縮)。那么KEDA就是一個HPA+多種觸發器。只要觸發器收到某個事件被觸發,KEDA就可以使用HPA進行自動伸縮了,并且,KEDA可以1-0,0-1!

架構

fff9a296-031b-11ee-90ce-dac502259ad0.png

KEDA自身有幾個組件:

?Agent: KEDA激活和停止Kubernetes 工作負載(keda-operator主要功能)

? Metrics: KEDA作為一個Kubernetes指標服務器,向Horizontal Pod Autoscaler提供豐富的事件數據,從源頭上消費事件。(keda-operator-metrics-apiserver主要作用)。

? Admission Webhooks: 自動驗證資源變化,以防止錯誤配置。

? Event sources: KEDA 更改 pod 數量的外部事件/觸發源。如Prometheus、Kafka。

? Scalers: 監視事件源,獲取指標并根據事件觸發伸縮。

? Metrics adapter:從Scalers獲取指標并發送給HPA。

? Controller: 根據Adapter提供的指標進行操作,調諧到 ScaledObject 中指定的資源狀態。Scaler根據 ScaledObject 中設置的事件源持續監視事件,發生任何觸發事件時將指標傳遞給Metrics Adapter。Metrics Adapter調整指標并提供給Controller組件,Controller根據 ScaledObject 中設置的縮放規則擴大或縮小Deployment。

總的來說,KEDA設置一個ScaledObject,定義一個事件觸發器,可以是來自消息隊列的消息、主題訂閱的消息、存儲隊列的消息、事件網關的事件或自定義的觸發器。基于這些事件來自動調整應用程序的副本數量或處理程序的資源配置,以根據實際負載情況實現彈性伸縮。

CRD

? ScaledObjects:代表事件源(如 Rabbit MQ)和 Kubernetes Deployment、StatefulSet 或任何定義 / 規模子資源的自定義資源之間的所需映射。

? ScaledJobs:事件源和Kubernetes Jobs之間的映射。根據事件觸發調整Job規模。

? TriggerAuthentications:觸發器的認證參數

? ClusterTriggerAuthentications:集群維度認證

部署KEDA

helmrepoaddkedacorehttps://kedacore.github.io/charts
helmrepoupdate
kubectlcreatenamespacekeda
helminstallkedakedacore/keda--namespacekeda

kubectlapply-fhttps://github.com/kedacore/keda/releases/download/v2.10.1/keda-2.10.1.yaml
root@node-1:/#kubectlgetall-nkeda
NAMEREADYSTATUSRESTARTSAGE
pod/keda-metrics-apiserver-7d89dbcb54-v22nl1/1Running044s
pod/keda-operator-5bb9b49d7c-kh6wt0/1Running044s
NAMETYPECLUSTER-IPEXTERNAL-IPPORT(S)AGE
service/keda-metrics-apiserverClusterIP10.233.44.19443/TCP,80/TCP45s
NAMEREADYUP-TO-DATEAVAILABLEAGE
deployment.apps/keda-metrics-apiserver1/11145s
deployment.apps/keda-operator0/11045s
NAMEDESIREDCURRENTREADYAGE
replicaset.apps/keda-metrics-apiserver-7d89dbcb5411145s
replicaset.apps/keda-operator-5bb9b49d7c11045s
#kubectlgetcrd|grepkeda
clustertriggerauthentications.keda.sh2023-05-11T0906Z
scaledjobs.keda.sh2023-05-11T0907Z
scaledobjects.keda.sh2023-05-11T0907Z
triggerauthentications.keda.sh2023-05-11T0907Z

KubeSphere部署KEDA

kubectleditcc-nkubesphere-system(kubesphere3.4+)
spec:
···
autoscaling:
enabled:true
···

擴展工作負載CRD

ScaledObject對象主要定義要擴展的目標對象,如Deployment、Statefulset、CRD等,Triggers部分聲明對應的觸發器,在進行這些參數設置后,一個KEDA的自定義伸縮就可以啟用了。

apiVersion:keda.sh/v1alpha1
kind:ScaledObject
metadata:
name:{scaled-object-name}
spec:
scaleTargetRef:
apiVersion:{api-version-of-target-resource}#Optional.Default:apps/v1
kind:{kind-of-target-resource}#Optional.Default:Deployment
name:{name-of-target-resource}#Mandatory.MustbeinthesamenamespaceastheScaledObject
envSourceContainerName:{container-name}#Optional.Default:.spec.template.spec.containers[0]
pollingInterval:30#Optional.Default:30seconds
cooldownPeriod:300#Optional.Default:300seconds
idleReplicaCount:0#Optional.Default:ignored,mustbelessthanminReplicaCount
minReplicaCount:1#Optional.Default:0
maxReplicaCount:100#Optional.Default:100
fallback:#Optional.Sectiontospecifyfallbackoptions
failureThreshold:3#Mandatoryiffallbacksectionisincluded
replicas:6#Mandatoryiffallbacksectionisincluded
advanced:#Optional.Sectiontospecifyadvancedoptions
restoreToOriginalReplicaCount:true/false#Optional.Default:false
horizontalPodAutoscalerConfig:#Optional.SectiontospecifyHPArelatedoptions
name:{name-of-hpa-resource}#Optional.Default:keda-hpa-{scaled-object-name}
behavior:#Optional.UsetomodifyHPA'sscalingbehavior
scaleDown:
stabilizationWindowSeconds:300
policies:
-type:Percent
value:100
periodSeconds:15
triggers:
#{listoftriggerstoactivatescalingofthetargetresource}

Demo

KEDA目前支持53種Scalers,如Kafka,Elasticsearch,MySQL,RabbitMQ,Prometheus等等。此處演示一個Prometheus和Kafka的例子。

Prometheus & KEDA

0016a396-031c-11ee-90ce-dac502259ad0.png

部署一個Web應用,使用Prometheus監控Web應用http請求指標。為尋求演示效果,此處部署了一個有點擊,互動的Demo APP,

進入KubeSphere項目,新建一個自定義伸縮:

004bd796-031c-11ee-90ce-dac502259ad0.png

設置最小副本數為1,最大副本數為10,輪詢間隔5秒,等待時間為1分鐘:

0061c470-031c-11ee-90ce-dac502259ad0.png

KubeSphere支持Cron、Prometheus,和自定義觸發器:

0073d1e2-031c-11ee-90ce-dac502259ad0.png

觸發器設置Prometheus,設置請求為30s內的增長率總和,當閾值大于3時事件驅動觸發縮放:

009522fc-031c-11ee-90ce-dac502259ad0.png

設置一些其他設置,如資源刪除后是否恢復指本來的副本數,以及擴縮策略設置:

00b49bc8-031c-11ee-90ce-dac502259ad0.png

00db94bc-031c-11ee-90ce-dac502259ad0.png

現在并發訪問Web App:

可以在自定義監控看到監控指標的變化:

00fe0e34-031c-11ee-90ce-dac502259ad0.png

Web App的副本數開始橫向擴展:

0114564e-031c-11ee-90ce-dac502259ad0.png

最終擴展到ScaledObject中定義的10個副本:

0147cefc-031c-11ee-90ce-dac502259ad0.png

在訪問停止后,可以看到監控指標的數值在慢慢變小:

015fe794-031c-11ee-90ce-dac502259ad0.png

Deployment開始縮容:

01732070-031c-11ee-90ce-dac502259ad0.png

Kafka & KEDA

KEDA使用Kafka事件源演示的整體拓撲如下:

01876652-031c-11ee-90ce-dac502259ad0.png

打開KubeSphere應用商店,查看DMP數據庫中心

01ab7da8-031c-11ee-90ce-dac502259ad0.png

選擇Kafka,進行安裝

01c1f92a-031c-11ee-90ce-dac502259ad0.png

01d56280-031c-11ee-90ce-dac502259ad0.png

02001930-031c-11ee-90ce-dac502259ad0.png

0211fb50-031c-11ee-90ce-dac502259ad0.png

安裝好Kafka后,創建一個測試的Kafka Topic,Topic分區設置為5,副本設置為1:

0228a012-031c-11ee-90ce-dac502259ad0.png023d00de-031c-11ee-90ce-dac502259ad0.png

創建Kafka Producer服務:

025356e0-031c-11ee-90ce-dac502259ad0.png

026f627c-031c-11ee-90ce-dac502259ad0.png

向主題發送訂單:

028dd432-031c-11ee-90ce-dac502259ad0.png

02a12230-031c-11ee-90ce-dac502259ad0.png

創建Consumer服務:

02d2ee6e-031c-11ee-90ce-dac502259ad0.png

02e4763e-031c-11ee-90ce-dac502259ad0.png

發送新訂單看Consumer服務是否消費:

02f6b8c6-031c-11ee-90ce-dac502259ad0.png

現在可以來做自動伸縮了,創建一個ScaledObject,設置最小副本數為0,最大為10,輪詢間隔為5s,Kafka LagThreshold為10:

apiVersion:keda.k8s.io/v1alpha1
kind:ScaledObject
metadata:
name:kafka-scaledobject
namespace:default
labels:
deploymentName:kafka-consumer-deployment#RequiredNameofthedeploymentwewanttoscale.
spec:
scaleTargetRef:
deploymentName:kafka-consumer-deployment#RequiredNameofthedeploymentwewanttoscale.
pollingInterval:5
minReplicaCount:0#OptionalDefault0
maxReplicaCount:10#OptionalDefault100
triggers:
-type:kafka
metadata:
#Required
BootstrapeServers:radondb-kafka-kafka-external-bootstrap.demo:9092#Kafkabootstrapserverhostandport
consumerGroup:order-shipper#Makesurethatthisconsumergroupnameisthesameoneastheonethatisconsumingtopics
topic:test
lagThreshold:"10"#Optional.Howmuchthestreamislaggingonthecurrentconsumergroup

創建自定義伸縮:

031033f0-031c-11ee-90ce-dac502259ad0.png

032331d0-031c-11ee-90ce-dac502259ad0.png

03363f46-031c-11ee-90ce-dac502259ad0.png

0354b4ee-031c-11ee-90ce-dac502259ad0.png

03807728-031c-11ee-90ce-dac502259ad0.png

039664ac-031c-11ee-90ce-dac502259ad0.png

03aa0cb4-031c-11ee-90ce-dac502259ad0.png

現在,讓我們向隊列提交大約 100,000 條訂單消息,看看自動縮放的實際效果。你會看到隨著隊列中多余消息的增長,將會產生更多的 kafka-consumer pod。

03bdb872-031c-11ee-90ce-dac502259ad0.png

03d4b41e-031c-11ee-90ce-dac502259ad0.png

03eaeb4e-031c-11ee-90ce-dac502259ad0.png

此處我們看到最大到5個副本,沒有到10個副本,因為默認最大副本數不會超過Kafka主題分區數量,上面設置了分區為5,可以激活allowIdleConsumers: true來禁用這個默認行為。重新編輯自定義伸縮后,最大副本變化成10:

040198a8-031c-11ee-90ce-dac502259ad0.png

在無消息消費時,副本變化為0:

041a8598-031c-11ee-90ce-dac502259ad0.png






審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 觸發器
    +關注

    關注

    14

    文章

    1996

    瀏覽量

    61052
  • 虛擬存儲器
    +關注

    關注

    0

    文章

    12

    瀏覽量

    8781
  • HPA
    HPA
    +關注

    關注

    1

    文章

    9

    瀏覽量

    8327
  • CRD
    CRD
    +關注

    關注

    0

    文章

    14

    瀏覽量

    4005

原文標題:應用現代化中的彈性伸縮

文章出處:【微信號:OSC開源社區,微信公眾號:OSC開源社區】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    雷曼光電助力校園現代化建設

    近日,雷曼光電為巴基斯坦University of Wah報告廳打造了大尺寸、高分辨率的雷曼超高清大屏,為學校日常開展課堂授課、學術交流和校園活動等提供強有力的硬件和技術支持,助力校園現代化建設,也為客戶帶來了顯著的應用價值。
    的頭像 發表于 11-26 15:14 ?89次閱讀

    智慧營區綜合管理平臺:現代化進程的重要產物

    智慧華盛恒輝營區綜合管理平臺是軍事領域現代化進程的重要產物,它集成了物聯網、大數據、云計算、人工智能等前沿技術,為軍隊提供了一個全方位、全天候、智能的營區管理與服務解決方案。以下是對智慧營區綜合
    的頭像 發表于 11-22 14:06 ?49次閱讀

    ESD應用手冊:汽車版現代化接口保護概念、測試和仿真

    電子發燒友網站提供《ESD應用手冊:汽車版現代化接口保護概念、測試和仿真.pdf》資料免費下載
    發表于 11-19 14:38 ?0次下載

    智慧農業平臺:推動農業現代化的科技力量

    隨著信息技術的飛速發展,智慧農業平臺正逐步成為推動農業現代化、提高農業生產效率和質量的重要力量。智慧農業平臺集成了物聯網、大數據、云計算、人工智能等多種先進技術,為農業生產和管理提供了全方位、準確
    的頭像 發表于 10-15 16:25 ?240次閱讀

    華為云徐峰:AI 賦能應用現代化,加速軟件生產力躍升

    2024 年 9 月 19 日,在華為全聯接大會 2024 的“AI 賦能應用現代化,加速軟件生產力躍升”論壇上,華為云 PaaS 服務產品部部長徐峰發表了主題演講,介紹了未來應用智能演進趨勢
    的頭像 發表于 10-14 09:45 ?490次閱讀
    華為云徐峰:AI 賦能應用<b class='flag-5'>現代化</b>,加速軟件生產力躍升

    中海達助力水文現代化建設

    為深入貫徹創新驅動發展戰略,加快推進黃河流域(片)水文現代化建設,日前,黃河水文協同創新中心正式成立。黃委有關部門,黃河流域(片)省區水文部門,新疆生產建設兵團水利局,有關高校、科研院所等權威專家及企業代表參加會議。中海達作為黃河水文協同創新中心首批成員之一出席會議。
    的頭像 發表于 09-02 17:07 ?483次閱讀

    現代化設備管理系統:為企業發展注入強大動力

    現代化設備管理系統在企業發展起到了重要作用,包括多學科理論融合、專業與協作以及信息管理。它能夠實現對設備的實時監測、故障預警、維護計
    的頭像 發表于 09-02 10:35 ?376次閱讀
    <b class='flag-5'>現代化</b>設備管理系統:為企業發展注入強大動力

    高標準農田灌區信息建設如何促進農業現代化

    高標準農田灌區信息建設如何促進農業現代化 高標準農田灌區信息建設是推動農業現代化進程的關鍵一環,它通過集成現代信息技術與傳統農業灌溉管理
    的頭像 發表于 08-30 17:40 ?486次閱讀
    高標準農田灌區信息<b class='flag-5'>化</b>建設如何促進農業<b class='flag-5'>現代化</b>

    四創電子應邀參加2024國氣象現代化建設科技博覽會

    5月15日-17日,四創電子應邀參加了由中國氣象學會主辦的2024國氣象現代化建設科技博覽會(簡稱CMHE2024)。
    的頭像 發表于 05-19 09:45 ?454次閱讀
    四創電子應邀參加2024<b class='flag-5'>中</b>國氣象<b class='flag-5'>現代化</b>建設科技博覽會

    農業現代化:UWB模塊為農業領域帶來的效益和便利

    隨著科技的進步和農業現代化的推進,超寬帶(UWB)技術正逐漸在農業領域發揮重要作用。UWB模塊作為UWB技術的核心組成部分,具有高精度、實時性強的特點,為農業生產提供了新的技術手段和解決方案。本文將
    的頭像 發表于 04-12 15:02 ?438次閱讀

    訊維融合處理器助力醫院構建現代化醫療監控系統

    隨著醫療技術的不斷進步和醫院管理要求的日益嚴格,構建一套高效、穩定、智能的醫療監控系統已成為醫院現代化建設的迫切需求。在這一背景下,訊維融合處理器以其卓越的性能和獨特的功能,為醫院構建現代化醫療監控
    的頭像 發表于 04-01 16:31 ?297次閱讀
    訊維融合處理器助力醫院構建<b class='flag-5'>現代化</b>醫療監控系統

    車載控系統:構建現代化城市治安指揮車的核心技術支撐

    隨著城市進程的加速和社會治安形勢的日益復雜,城市治安管理面臨著前所未有的挑戰。為了有效應對這些挑戰,現代化城市治安指揮車應運而生。而在這其中,訊維車載控系統憑借其卓越的技術性能和適應性,成為
    的頭像 發表于 03-06 16:18 ?331次閱讀

    為微電子設施現代化提供資金

    來源:半導體芯科技編譯 美國商務部宣布向 BAE 系統公司提供約 3500 萬美元的初始資金,用于對位于新罕布什爾州納舒亞的微電子中心 (MEC) 進行現代化改造。 這是《芯片和科學法案》的首次資助
    的頭像 發表于 12-28 16:24 ?330次閱讀

    軟國際出席2023云原生產業大會,加速不動產行業應用現代化發展

    行業應用實踐等熱點議題開展探討與交流。 會上, 軟國際參與編寫的 《不動產行業數字轉型之應用現代化白皮書》正式發布, 軟國際應用服務業務集團業務拓展部總經理蘇康出席了發布儀式,出
    的頭像 發表于 12-01 21:50 ?617次閱讀

    “穩”與“進”良性互動 構建現代化產業體系

    現代化產業體系建設,產業發展保持合理增速是必要前提,這也是“穩”的重要內涵。產業規模持續擴大,承載要素的能力才會更強,各類資源才有“用武之地”。居民的生產生活需要,必須有產業發展“量”的保障,在這個基礎上,消費升級、需求升級才有更廣闊的空間。
    的頭像 發表于 11-27 17:20 ?1184次閱讀