国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

    文章

    2056

    瀏覽量

    63407
  • 虛擬存儲器
    +關注

    關注

    0

    文章

    12

    瀏覽量

    8993
  • HPA
    HPA
    +關注

    關注

    1

    文章

    11

    瀏覽量

    8616
  • CRD
    CRD
    +關注

    關注

    0

    文章

    14

    瀏覽量

    4242

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

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    紅外熱像儀在在現代化壓鑄生產中的應用

    現代化壓鑄生產中,對溫度場的精確掌握已成為提升產品質量的核心環節。紅外熱像儀憑借其非接觸測溫與可視熱分布分析能力,為這一行業帶來了全新的技術解決方案。
    的頭像 發表于 01-05 09:46 ?303次閱讀

    電網現代化:開啟智慧能源新紀元

    (作者:是德科技高級副總裁兼首席營銷官Marie Hattar) 當前電網正承受巨大壓力:用電需求激增、部分系統與標準陳舊過時并亟待現代化改造,同時還要應對極端天氣的考驗。這三重因素將關鍵基礎設施
    的頭像 發表于 12-29 15:54 ?444次閱讀
    電網<b class='flag-5'>現代化</b>:開啟智慧能源新紀元

    宏集案例 | 加勒比最大石油企業如何用DataHub實現SCADA現代化與IoT設備集成?

    軟件,實現了對現有SCADA系統的現代化升級,并無縫集成了新型物聯網(IoT)油井監測設備。關鍵價值點數據全集成:利用宏集CogentDataHub的MQTT智能代
    的頭像 發表于 12-16 17:04 ?431次閱讀
    宏集案例 | 加勒比最大石油企業如何用DataHub實現SCADA<b class='flag-5'>現代化</b>與IoT設備集成?

    云里物里定位信標助力打造現代化智慧醫院

    在某市第一心醫院,傳統的“尋路難”問題正在成為歷史。為打造現代化智慧醫院,該院率先引進云里物里智能硬件,構建覆蓋全院的室內導航定位系統,以空間數字重構就醫路徑,顯著提升患者就醫便捷性。
    的頭像 發表于 10-11 16:52 ?1453次閱讀

    工業智能網關在現代化水產養殖的應用

    應對措施,這極易導致魚蝦生病甚至死亡,給養殖戶帶來巨大經濟損失。 隨著物聯網技術的飛速發展,其在漁業養殖領域的應用日益廣泛,成為推動現代化水產養殖變革的重要力量。物通博聯提供基于工業智能網關的物聯網解決方案
    的頭像 發表于 10-10 13:45 ?519次閱讀
    工業智能網關在<b class='flag-5'>現代化</b>水產養殖<b class='flag-5'>中</b>的應用

    NetApp助力對象存儲現代化,提升速度、可擴展性和安全性

    計。最新版本的StorageGRID將引入新功能,旨在推進人工智能計劃、提高數據安全性并實現企業數據基礎設施的現代化。 無論企業是處于數據湖現代化的早期階段,還是正在試驗高級人工智能應用程序,他們都需要管理并存儲激增的非結構
    的頭像 發表于 09-11 10:41 ?546次閱讀

    無人機智能巡檢系統:現代化運維的空中解決方案

    ? ? ? ?無人機智能巡檢系統:現代化運維的空中解決方案 ? ? ? ?無人機智能巡檢系統集成先進飛行平臺、圖像識別算法、自主導航與數據分析技術,構建了一套高效、精準的巡檢解決方案。該系統已
    的頭像 發表于 09-10 13:23 ?790次閱讀

    微型氣象站系統:為智慧氣象建設和應急管理體系現代化提供關鍵技術支撐

    微型氣象站系統:為智慧氣象建設和應急管理體系現代化提供關鍵技術支撐【WX-PQX6】不僅簡化了傳統氣象監測流程、降低了成本,更通過云平臺數據管理(支持多設備登錄、曲線分析、數據導出)和遠程監控功能,推動氣象服務向智能、移動
    的頭像 發表于 08-13 14:47 ?657次閱讀
    微型氣象站系統:為智慧氣象建設和應急管理體系<b class='flag-5'>現代化</b>提供關鍵技術支撐

    現代化智慧農業四情監測設備方案

    現代化智慧農業四情監測設備方案 柏峰【BF-NYSQ】強農固本,為推進中國式現代化提供基礎支撐,農穩社稷,糧安天下。強化耕地保護和質量提升、推進農業科技力量,全方位夯實國家糧食安全根基,堅持產量產能、生產生態、增產增收一起抓,切實提高農業綜合效益和競爭力。
    的頭像 發表于 08-01 10:11 ?812次閱讀
    <b class='flag-5'>現代化</b>智慧農業四情監測設備方案

    城市治理現代化:邊緣計算網關在智慧城管的實踐探索

    效率和居民的生活質量。藍蜂網關在智慧城管的實踐,為城市治理現代化提供了全新的模式。? 某城區,市政設施數量龐大,僅井蓋就有上萬余個,垃圾桶、路燈等設施更是遍布大街小巷。為了實現對這些設施的精細化管理,部署
    的頭像 發表于 07-25 14:51 ?349次閱讀
    城市治理<b class='flag-5'>現代化</b>:邊緣計算網關在智慧城管<b class='flag-5'>中</b>的實踐探索

    中科創達推出Java應用現代化解決方案

    在數字轉型浪潮席卷千行百業的當下,企業應用現代化已成為突破增長瓶頸、重塑核心競爭力的關鍵路徑。在近日舉辦的亞馬遜云科技中國峰會上,全球領先的智能操作系統及端側智能產品和技術提供商中科創達,憑借十
    的頭像 發表于 06-28 10:34 ?1409次閱讀

    四創電子亮相2025國氣象現代化建設科技博覽會

    近日,四創電子參加由中國氣象學會主辦的2025國氣象現代化建設科技博覽會。此次行業盛會在南京國際博覽中心舉辦,吸引近200家國內外知名企業齊聚,博覽會圍繞氣象防災減災、交通氣象、海洋氣象、航天氣象、能源氣象、氣象科普、人工智能等核心領域,全方位展示氣象全產業鏈的前沿技術
    的頭像 發表于 06-07 17:09 ?1291次閱讀

    時鐘緩沖器在現代化建設中的作用

    時鐘緩沖器作為現代電子技術的一項關鍵元件,其在信息建設和智能發展中所扮演的角色日益凸顯。隨著社會的不斷發展,人們對信息傳輸的速度和準確性要求越來越高,時鐘緩沖器以其獨有的功能,確
    的頭像 發表于 05-27 14:08 ?683次閱讀
    時鐘緩沖器在<b class='flag-5'>現代化建設中</b>的作用

    斑馬技術:84%決策者認為,倉儲現代化運營是當務之急

    準確性,降低營運成本,進而提升營運效率、優化供應鏈管理,為傳統倉儲行業帶來了深刻變革與價值創造。 ? 斑馬技術公司發布的最新《2025 全球倉儲愿景研究報告》(以下簡稱 “《報告》”)顯示,84% 的決策者表示,現代化運營是當
    的頭像 發表于 05-26 07:34 ?3532次閱讀

    無線數采網關在現代化農業種植的應用

    在邁向現代化的征程,農業種植領域雖取得了顯著進步,但也面臨著諸多棘手的挑戰。 1、在環境監測方面,傳統的人工監測方式效率低下且成本高昂,若采用人工定期巡查土壤濕度、溫度、光照等環境參數,監測的頻率
    的頭像 發表于 03-07 13:53 ?824次閱讀
    無線數采網關在<b class='flag-5'>現代化</b>農業種植<b class='flag-5'>中</b>的應用