阿里云ACK(容器服务)+ElasticWorkload弹性负载+HPA弹性伸缩实践

这篇具有很好参考价值的文章主要介绍了阿里云ACK(容器服务)+ElasticWorkload弹性负载+HPA弹性伸缩实践。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

背景

阿里云ACK(kubernetes容器服务),高弹性,高稳定性,低成本解决方案。
通过将ECI服务以虚拟节点的方式接入ACK容器集群,将集群中pod应用的固定量调度到现有的ACK容器服务的ECS node节点上,将集群中pod应用的弹性量通过ElasticWorkload组件调度的ECI服务的虚拟节点上。

ACK集群默认架构

以ACK容器服务托管版为例
阿里云ACK(容器服务)+ElasticWorkload弹性负载+HPA弹性伸缩实践,云计算,kubernetes

将ECI虚拟节点接入ACK集群后的容器集群架构

阿里云ACK(容器服务)+ElasticWorkload弹性负载+HPA弹性伸缩实践,云计算,kubernetes

ECI具有以下几个特点

高弹性:快速秒级扩容,可轻松应对百倍突发流量,同时支持HPA及CronHPA。
低成本:根据流量动态使用资源,按需付费。
高可用:精细化应用伸缩,扩容时保留固定N个副本在ECS上运行,第N+1个以上副本调度到ECI;缩容时优先回收ECI上的Pod副本。
兼容性:支持有状态StatefulSet 、无状态Deployment 、任务Job和定时任务CronJob,并且完全兼容Kubernetes。
免运维:不需要管理集群,也不需要管理工作节点,只需要定义应用、服务和任务。
高并发:支持1000/分钟Pod调度能力

创建ECI实例两种方式

参考文档

指定ECS规格创建ECI实例

参考文档
主要从以下两个方面来优化集群的安全性,稳定性

节点层面

通过设置集群节点弹性伸缩组,来提升ACK容器集群的稳定性,以及高可用性。目的是为了预防集群node节点预留资源不满足pod应用所需资源,从而导致pod应用异常或者集群物理节点被打爆。

具体配置方法

在ACK集群控制台找到我们的k8s集群点击自动伸缩,来创建弹性伸缩组,节点池是基于阿里云ESS弹性伸缩服务,通过事先定义节点实例规格,网络,安全组等再结合容器服务定义的阈值,来实现对节点的弹性伸缩操作
阿里云ACK(容器服务)+ElasticWorkload弹性负载+HPA弹性伸缩实践,云计算,kubernetes
创建节点池以及定义伸缩组阈值
阿里云ACK(容器服务)+ElasticWorkload弹性负载+HPA弹性伸缩实践,云计算,kubernetes

POD层面

通过ACK集群使用ElasticWorkload组件+HPA组件来实现对pod层面的弹性伸缩,集群配置完ECI虚拟节点后,可以通过对ElasticWorkload组件配置来实现将pod调度到ECS node节点上还是ECI 虚拟节点上。

具体实现方法如下:

集群安装ack-kubernetes-elastic-workload组件、ACK Virtual Node组件
安装方法:通过阿里云ACK集群的应用市场一键部署或者命令部署安装即可
这两个组件默认都安装在kuber-system名称空间下
阿里云ACK(容器服务)+ElasticWorkload弹性负载+HPA弹性伸缩实践,云计算,kubernetes
阿里云ACK(容器服务)+ElasticWorkload弹性负载+HPA弹性伸缩实践,云计算,kubernetes

HPA+ElasticWorkload调度逻辑

通过ElasticWorkload控制Deployment
HPA控制ElasticWorkload阿里云ACK(容器服务)+ElasticWorkload弹性负载+HPA弹性伸缩实践,云计算,kubernetes

阿里云ACK(容器服务)+ElasticWorkload弹性负载+HPA弹性伸缩实践,云计算,kubernetes
下面通过配置一个应用来实现下具体调度逻辑

ElasticWorkload文件配置如下

[root@k8s-master k8syaml]# cat ew-test-app-demo.yaml 
apiVersion: autoscaling.alibabacloud.com/v1beta1
kind: ElasticWorkload
metadata:
  annotations:
  name: ew-test-app-demo
  namespace: vk
spec:
  elasticUnit:
  - labels:
      alibabacloud.com/eci: "true"
    name: virtual-kubelet
  #默认运行在ecs节点上的副本数量
  replicas: 4
  sourceTarget:
    apiVersion: apps/v1
    kind: Deployment
    #运行在ecs节点上的最大副本数量,超过默认副本数的话超出量会被调度到虚拟节点
    max: 4
    min: 4
    name: test-app-demo

hpa文件配置

[root@k8s-master k8syaml]# cat scm-vendor-web-hpa.yaml 
apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
  name: test-app-demo
  namespace: vk
spec:
  scaleTargetRef:
    apiVersion: autoscaling.alibabacloud.com/v1beta1
    kind: ElasticWorkload
    name: ew-test-app-demo
  minReplicas: 1
  maxReplicas: 5
  metrics:
  - type: Resource
    resource:
      name: cpu
      target:
        type: Utilization
        averageUtilization: 6400
  - type: Resource
    resource:
      name: memory
      target:
        type: Utilization
        averageUtilization: 800

HPA CPU,以及内存阈值计算逻辑(针对于request和limit不是1:1的场景)

容器组当前使用量=pod当前使用量*pod数
HPA统计的pod当前使用量为容器组的平均使用量
容器组平均使用量=所有pod使用量之和
我们可以看到下图当前容器的cpu使用量是190m这个是容器组的平均值
当前使用量百分比=pod当前使用量/容器reques值
如下图所示该应用当前使用量是190m

阿里云ACK(容器服务)+ElasticWorkload弹性负载+HPA弹性伸缩实践,云计算,kubernetes

容器request值为0.05转化为毫核就是50m

阿里云ACK(容器服务)+ElasticWorkload弹性负载+HPA弹性伸缩实践,云计算,kubernetes文章来源地址https://www.toymoban.com/news/detail-678795.html

190m/50m=3.8转化为百分比也就是380%(该值为容器组的当前平均使用量)
先把limit单位转化为毫核
(Targets值)容器组总使用量=(limit值/request)*pod数
总Limit值=(4*1000)*4(pod数)=16000mm
总reques值=0.05*1000*4(pod数)=200mm
(Targets值)容器组使用量百分比=16000/200=80(转化为百分比就是8000%)
我们设定该应用cpu使用率大于等于百分之八十触发HPA伸缩动作
(Targets值)阈值(80%)=80*0.8=64(转化为百分比就是6400%)
内存计算公式同理

HPA预估POD副本数逻辑

期望副本数 = ceil[当前副本数 * (当前指标 / 期望指标)]

到了这里,关于阿里云ACK(容器服务)+ElasticWorkload弹性负载+HPA弹性伸缩实践的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 阿里云——容器服务ACK

    助力企业高效运行云端Kubernetes容器化应用 容器服务 Kubernetes 版(简称 ACK)整合了阿里云虚拟化、存储、网络和安全能力,为您提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。 阿里云是全球首批通过 Kubernetes 一致性验证的服务提供商,为您

    2023年04月08日
    浏览(30)
  • 阿里云国际版旗舰级分销商-容器服务 ACK介绍

    阿里云国际版 容器服务Kubernetes版,简称容器服务ACK,是全球首批通过Kubernetes一致性认证的服务平台,提供高性能的容器应用管理服务,支持企业级Kubernetes容器化应用的生命周期管理,让您轻松高效地在云端运行Kubernetes容器化应用。 ACK包含了专有版Kubernetes(Dedicated Kuberne

    2024年02月12日
    浏览(45)
  • 实现高效Web应用:负载均衡SLB和弹性伸缩AS的原理与实践

    在前面的文章中,我们了解了负载均衡SLB和弹性伸缩AS的基本概念和应用场景。在本篇文章中,我们将深入探讨这些技术的特点,以及它们在实际应用中的优势和局限性。 一、负载均衡SLB的特点 负载均衡SLB是一种基于网络的负载均衡技术。它通过将网络流量分配到多个服务器

    2024年02月06日
    浏览(27)
  • 阿里云服务器的扩展性如何?是否支持弹性扩容和自动负载均衡?

    阿里云服务器的扩展性如何?是否支持弹性扩容和自动负载均衡? 阿里云服务器的扩展性特点 阿里云服务器(ECS)在扩展性方面具有优势,能够满足用户不断变化的业务需求。以下我们将详细介绍阿里云服务器的扩展性特点。 弹性伸缩 * 阿里云服务器支持根据业务需求进行

    2024年02月09日
    浏览(33)
  • 当云技术与 Serverless 遇见容器,云计算迎来新的弹性伸缩时代

    随着云计算技术的不断发展,Serverless 和容器已经成为了云计算部署应用的两大法宝。容器技术的发展历程中,业界普遍将 2014 年视为重要的时间节点,这一年,Docker 公司正式发布了 Docker 镜像,并开源了容器引擎。紧接着,容器技术获得了持续增长,完全基于云的容器编排

    2024年02月06日
    浏览(29)
  • 阿里云 ACK 云原生 AI 套件中的分布式弹性训练实践

    作者:霍智鑫 众所周知,随着时间的推移,算力成为了 AI 行业演进一个不可或缺的因素。在数据量日益庞大、模型体量不断增加的今天,企业对分布式算力和模型训练效率的需求成为了首要的任务。如何更好的、更高效率的以及更具性价比的利用算力,使用更低的成本来训

    2024年01月25日
    浏览(30)
  • Docker进阶:Docker Swarm —弹性伸缩调整服务的副本数量

    💖The Begin💖点点关注,收藏不迷路💖 🍀🍀🍀 续上一篇: Docker进阶:Docker Swarm —实现容器编排的利器 在 Swarm Manager节点中创建一个名为 my-nginx 的服务,并将容器的 80 端口映射到主机的 80 端口上,运行 Nginx 镜像。 查看服务列表,确保 my-nginx 服务已经成功创建并正常运行

    2024年04月08日
    浏览(60)
  • hpa自动伸缩

    1、定义: hpa全称horizontal pod autoscaling(pod的水平自动伸缩),这是k8s自带的模块。pod占用CPU的比率到达一定阀值会触发伸缩机制(根据CPU使用率自动伸缩) replication controller副本控制器,控制pod的副本数 deployment controller节点控制器,部署pod hpa控制副本的数量以及控制部署p

    2024年01月23日
    浏览(27)
  • k8s---pod的水平自动伸缩HPA

    HPA:Horizontal Pod Autoscaling是pod的水平自动伸缩。是k8s自带的模块 pod占用CPU的比率到达一定的阈值会触发伸缩机制。 replication controller:副本控制器。控制pod的副本数 deployment controller:节点控制器。部署pod hpa控制副本的数量以及控制如何部署pod hpa基于kube-controller-manager服务。周

    2024年01月24日
    浏览(28)
  • 深度吐槽阿里云ack服务

    算是一个腾讯云深度用户,用了78年左右,由于业务需求,今年五月份开始逐步在阿里云跑了一些服务。不吹不黑。发自内心的吐槽一下阿里云的ack服务。其他服务没有多大发言权。都差不多。但是作为一个算是比较早期的kubernetes用户有必要吐槽一下阿里云的ack服务,没有办

    2024年02月06日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包