网易首页 > 网易号 > 正文 申请入驻

使用 KEDA 自动缩放 Azure pipeline代理

0
分享至

每日分享最新,最流行的软件开发知识与最新行业趋势,希望大家能够一键三连,多多支持,跪求关注,点赞,留言。
KEDA 是一个事件驱动的自动缩放器,它通过根据需要处理的事件数量添加额外的 Pod 来水平缩放容器。

如果您使用Kubernetes解决方案作为在任何公共云中托管容器化应用程序的平台,那么计费就是迟早会追捕您的事情之一。Kubernetes 的计费很大程度上取决于节点的数量,而节点的数量取决于集群的工作负载数量。我们知道自动缩放是 Kubernetes 最喜欢的功能之一。因此,在根本没有工作时缩减一些工作负载并降低云成本会更明智。

当我们谈论 Kubernetes 自动缩放功能时,会自动想到 Horizontal Pod Autoscaler (HPA)。默认情况下,HPA 可以使用 CPU 或 RAM 使用率等基本指标来实现自动缩放。但是,如果复杂的分布式应用程序与 Kubernetes 集群外部的不同组件集成(例如:Kafka 主题滞后、Redis 流、Azure 管道队列、Azure 服务总线、PubSub 主题等),HPA 本身无法扩展基于这些组件的指标的 pod。

HPA 可以使用自定义指标并在此基础上进行扩展,但它需要您设置指标适配器和额外的配置层才能将数据正确映射到 Kubernetes。

这就是KEDA 让我的生活变得轻松的地方。

为了克服此类问题,KEDA 在 Horizo ntal Pod Autoscaler (HPA) 之上提供了扩展功能。KEDA 是一个事件驱动的自动缩放器,它通过根据需要处理的事件数量添加额外的 Pod 来水平缩放容器。它自动扩展不同类型的 Kubernetes 资源,例如部署、Statefulsets、作业和自定义资源。

架构和概念

在高水平。KEDA 由两个组件组成,用于控制 Pod/工作负载的自动缩放。

  1. 代理:它负责激活和停用 Kubernetes 部署、状态集或任何其他目标,以便在没有事件时缩放到零或在有事件时从零缩放。
  2. Metrics Server:它充当 Kubernetes 指标服务器,将从事件源收集的事件(Azure 管道队列、Kafka 主题消息等)公开给 Horizontal Pod Autoscaler (HPA)。

Scaler:KEDA的真正力量在于大量的Scaler。缩放器是丰富的信息源,因为它提供外部数据/事件并允许您根据外部数据进行缩放。今天,它支持 50 多个“缩放器”,并带有特定支持的触发器,如 Azure Pipeline(触发器:azure-pipeline)和 Kafka(触发器:Kafka 主题),并且还会有更多。

ScaledObject:这些被部署为 Kubernetes CRD,它带来了将部署/状态集与事件源链接的功能,并定义了缩放元数据。ScaledObject 使用触发器来响应事件源中发生的事件并根据需要扩展工作负载。

KEDA 使用另一个名为 TriggerAuthentication(namespaced) 或 ClusterTriggerAutnetication (Cluster Scoped) 的 CRD 对事件源进行身份验证。

现在理论足够了;让我们来看一些实际用例,看看我们如何利用 KEDA 来管理代理池中的 azure 管道代理。

用例

在开始之前,让我们花点时间了解一下我们的场景。我们有一个 ADO (Azure DevOps) 项目,它使用持续集成和部署(CICD) 解决方案。在此之下,已经构建了构建/发布管道。这些管道使用自托管的容器化代理来执行所有任务。这些自托管的容器化代理作为 statefulset 部署在 GKE 集群上。

下面的屏幕截图描述了我们在 statefulset 下只有一个 pod 代理,并且一个管道作业正在同一个 pod 代理上运行。如果我们创建更多版本,它们(作业)将进入队列并等待单个 pod 代理空闲。有了 KEDA,我们希望在队列中有新作业时看到 Pod 的数量得到扩展。

先决条件

  1. ADO 项目(已设置代理池)用作 CICD 解决方案。
  2. 在代理池下创建 Azure 管道代理所需的 ADO 项目权限。参考这里。
  3. Kubernetes 集群将 azure 管道代理部署为 statefulset。
  4. 必须为 k8s 集群中的应用程序构建所需的 GCP 网络连接才能访问互联网。
安装 Azure 管道代理

使用以下 YAML 在 k8s 集群上安装自托管容器化 azure 管道代理。

现在让我们验证代理是否已成功注册到 ADO 代理池。我们可以看到代理也出现在Azure Pipelines上。

azp-gent.yamlapiVersion: v1kind: Secretmetadata:name: azp-agent-secrettype: Opaquedata:vstsToken: BASE64-OF-PAT-TOKEN---apiVersion: v1kind: Servicemetadata:name: azp-agentlabels:app.kubernetes.io/instance: azp-agentapp.kubernetes.io/name: azp-agentspec:clusterIP: Noneselector:app.kubernetes.io/instance: azp-agentapp.kubernetes.io/name: azp-agent---apiVersion: apps/v1kind: StatefulSetmetadata:labels:app.kubernetes.io/instance: azp-agentapp.kubernetes.io/name: azp-agentname: azp-agentspec:replicas: 1selector:matchLabels:app.kubernetes.io/instance: azp-agentapp.kubernetes.io/name: azp-agentserviceName: azp-agenttemplate:metadata:labels:app.kubernetes.io/instance: azp-agentapp.kubernetes.io/name: azp-agentspec:containers:- env:- name: POD_NAMEvalueFrom:fieldRef:apiVersion: v1fieldPath: metadata.name- name: AZP_TOKENvalueFrom:secretKeyRef:key: vstsTokenname: azp-agent-secret- name: AZP_POOLvalue: POOL-NAME- name: AZP_URLvalue: https://dev.azure.com/YOUR-ORG-NAME/- name: AZP_WORKvalue: /var/vsts- name: AZP_AGENT_NAMEvalue: $(POD_NAME)image: AZURE-PIPELINE-AGENT-IMAGEimagePullPolicy: Alwaysname: azp-agentresources:limits:cpu: 500mmemory: 1Girequests:cpu: 100mmemory: 500MivolumeMounts:- mountPath: /var/vstsname: workspace- mountPath: /vsts/agentname: agent-dir- mountPath: /var/run/docker.sockname: docker-socketvolumes:- hostPath:path: /var/run/docker.socktype: ""name: docker-socketvolumeClaimTemplates:- apiVersion: v1kind: PersistentVolumeClaimmetadata:name: workspacespec:accessModes:- ReadWriteOnceresources:requests:storage: 50GistorageClassName: standardvolumeMode: Filesystem- apiVersion: v1kind: PersistentVolumeClaimmetadata:name: agent-dirspec:accessModes:- ReadWriteOnceresources:requests:storage: 5GistorageClassName: standardvolumeMode: Filesystem

在 Kubernetes 集群上安装 KEDA

KEDA 可以通过多种方式安装在 Kubernetes 集群上。我已经使用 helm chart 在集群上安装了 KEDA。您可以在此处参考官方 Helm 图表。

科达在行动

如前所述,ScaledObject 是在事件源和部署之间创建映射的对象。现在,我们将使用 azure-pipeline 触发器和 TriggerAuthentication 创建 ScaledObject,以允许 KEDA 在 statefulset 中缩放 pod。

请参阅此处的官方页面以探索 ScaledObject 的所有参数。

创建 ScaledObject 后,KEDA 会自动同步配置并开始监视上面创建的 azp-agent Statefulset。KEDA 无缝创建具有所需配置的 HPA(Horizontal Pod Autoscaler)对象,并根据通过 ScaledObject 提供的触发规则(在本例中为队列长度为“1”)扩展副本。

现在,我将对我的 repo 进行一些提交以将一些构建排入队列。

结果,我们可以看到 KEDA 扩展了 azp-agent Statefulset 中的 pod 数量,这些 pod 将注册到代理池并占用队列中的待处理作业。

KEDA 有 50 多个缩放器来驱动使用不同类型的事件源事件的自动缩放,并且它还在继续添加更多。因此,它绝对是一个生产级应用程序,可用于基于事件的自动缩放。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
越闹越大!陈乔恩深夜发文回应,包贝尔朱桢报警,林更新也被连累

越闹越大!陈乔恩深夜发文回应,包贝尔朱桢报警,林更新也被连累

飞花文史
2024-11-05 09:18:41
开封大学生的“反击”来了!把成千上万的共享单车骑回郑州,郑州文旅:服务“没有售价的青春”

开封大学生的“反击”来了!把成千上万的共享单车骑回郑州,郑州文旅:服务“没有售价的青春”

极目新闻
2024-11-05 08:02:35
一首歌狂赚1个亿,成名后出轨、骗粉,为捞金无底线?

一首歌狂赚1个亿,成名后出轨、骗粉,为捞金无底线?

柴叔带你看电影
2024-11-04 16:58:49
灰熊丢绝杀遭篮网横扫:周志豪25+12+4帽创纪录 崔永熙河村未登场

灰熊丢绝杀遭篮网横扫:周志豪25+12+4帽创纪录 崔永熙河村未登场

醉卧浮生
2024-11-05 11:17:04
王健林再次现身,骨瘦如柴!王思聪:“啥都没有了,但是没卖国”

王健林再次现身,骨瘦如柴!王思聪:“啥都没有了,但是没卖国”

奇思妙想草叶君
2024-11-04 22:36:51
高考迎来“重大调整”,2025年将实施,家长要引起重视

高考迎来“重大调整”,2025年将实施,家长要引起重视

教育导向分享
2024-11-03 22:47:35
中超8冠王即将解散?曝球员已自寻下家 20岁门将或转投辽宁铁人

中超8冠王即将解散?曝球员已自寻下家 20岁门将或转投辽宁铁人

念洲
2024-11-05 09:46:24
李佩霞早露端倪,多张工作照片埋下伏笔:穿着风格和神态露馅了

李佩霞早露端倪,多张工作照片埋下伏笔:穿着风格和神态露馅了

李昕言温度空间
2024-11-04 10:49:10
大选倒计时,7802万人已投票!49%比48%,特朗普在最关键“摇摆州”领先!防弹玻璃、铁丝网、钢板门、狙击手,美国多州加强安保

大选倒计时,7802万人已投票!49%比48%,特朗普在最关键“摇摆州”领先!防弹玻璃、铁丝网、钢板门、狙击手,美国多州加强安保

每日经济新闻
2024-11-05 08:03:10
库里复出24+6 希尔德20分 普尔24分4帽 勇士力克奇才迎4连胜

库里复出24+6 希尔德20分 普尔24分4帽 勇士力克奇才迎4连胜

直播吧
2024-11-05 10:42:15
勇士6人上双豪取4连胜:格林18分罕见爆发,库里复出轰24+6

勇士6人上双豪取4连胜:格林18分罕见爆发,库里复出轰24+6

体坛小李
2024-11-05 10:42:46
涉案41队!足协近期公布行业处罚 中国职业联赛或遭重大打击

涉案41队!足协近期公布行业处罚 中国职业联赛或遭重大打击

念洲
2024-11-05 08:44:15
梭哈了,马斯克:确定特朗普会赢,如果输了把财产捐给投票的人

梭哈了,马斯克:确定特朗普会赢,如果输了把财产捐给投票的人

看晓天下事
2024-11-04 18:12:49
温州女首富抗癌失败,名下有两家医药公司,最后还是拯救不了自己

温州女首富抗癌失败,名下有两家医药公司,最后还是拯救不了自己

李律讲法
2024-11-04 19:30:03
电讯报:WTA年终总决赛上座率不足10%,仅郑钦文的比赛上座率较高

电讯报:WTA年终总决赛上座率不足10%,仅郑钦文的比赛上座率较高

直播吧
2024-11-05 05:31:03
“亚洲最大医院”党委书记调整

“亚洲最大医院”党委书记调整

鲁中晨报
2024-11-04 14:29:04
回应外界呼声,空军新闻发言人:在适当时机和场合会有更“牛”的重器利器露面

回应外界呼声,空军新闻发言人:在适当时机和场合会有更“牛”的重器利器露面

环球网资讯
2024-11-05 09:59:14
特朗普打中国牌:我们给了中国上万亿美元,自己却造不起飞机军舰

特朗普打中国牌:我们给了中国上万亿美元,自己却造不起飞机军舰

头条爆料007
2024-11-05 06:40:39
乒乓球最新世界排名:王楚钦和孙颖莎领跑,大藤沙月首进前十

乒乓球最新世界排名:王楚钦和孙颖莎领跑,大藤沙月首进前十

懂球帝
2024-11-05 11:24:55
重磅刷屏!刚刚,集体暴涨!

重磅刷屏!刚刚,集体暴涨!

中国基金报
2024-11-05 10:51:10
2024-11-05 12:08:49
墨谈科技
墨谈科技
业务数码玩家.无聊的博主
3723文章数 577关注度
往期回顾 全部

科技要闻

硅谷2024最疯狂投资:押注下一任美国总统

头条要闻

已耗资6亿元 文艺中心停工10个月拖累周边房价下跌

头条要闻

已耗资6亿元 文艺中心停工10个月拖累周边房价下跌

体育要闻

一个想改变中国足球的日本人

娱乐要闻

UP主影视飓风Tim官宣离婚,老粉天塌了

财经要闻

特朗普无牌可打

汽车要闻

新款别克世纪将11月12日上市 预售价48.99万起

态度原创

游戏
健康
房产
家居
公开课

《黑神话》PS5日版实体版开启预定!1月30日发售

花18万治疗阿尔茨海默病,值不值?

房产要闻

刺激!大批豪宅疯狂入市,海口住宅风向彻底变了!

家居要闻

纯粹干净空间 极简米灰色基调

公开课

AI如何揭开大自然和宇宙的奥秘

无障碍浏览 进入关怀版