最新要闻
- 市场监管总局批准启用激光小角度副基准装置
- 天天快资讯丨厦门港务:将进一步研究探讨新兴技术在智慧物流云平台等方面的应用
- 当前快看:是块硬骨头!中国首个6x6超级越野平台首车诞生:3轴6驱5把锁
- 《幽灵线:东京》令人诧异:微软第一方大作PS5表现更好
- 【天天聚看点】自循环动态呼吸:骆驼新款Q态羽网面跑鞋129元1.9折狂促
- 环球今日报丨饮水机不清洗菌落超16000种?打工人看完心态崩了
- 曝特斯拉上海工厂克扣员工绩效 马斯克回应:将进行调查
- 天天观热点:厚植绿色技术创新优势
- 钉钉个人版来了!将全面接入千问大模型
- 驱动网简介
- 焦点信息:“大块头”正当时,中国经济网带您走进2023上海车展
- 【全球新要闻】20多万有戏!全新宝马iX1纯电SUV发布:中国独享加长版
- 世界热议:钉钉宣布接入通义千问!一条“/”拉高生产力
- 天天新消息丨不给小鹏留活路?理想一只脚踏入纯电领域:城市高阶辅助驾驶也来了
- 天天要闻:小米13 Ultra同时把潜望+1英寸可变光圈塞进手机里 雷军:非常不容易
- 女司机误将车内空调开成热风中暑:交警帮忙开下高速
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
【天天热闻】Kubernetes集群调度增强之超容量扩容
作者:京东科技徐宪章
1 什么是超容量扩容
超容量扩容功能,是指预先调度一定数量的工作节点,当业务高峰期或者集群整体负载较高时,可以使应用不必等待集群工作节点扩容,从而迅速完成应用横向扩容。通常情况下HPA、ClusterAutosacler和超容量扩容同时使用以满足负载敏感度高的业务场景。
(资料图)
超容量扩容功能是通过K8S应用优先级设置和ClusterAutosaler共同作用实现的,通过调整低优先级空载应用的数量,使集群已调度资源保持在较高的状态,当其他高优先级应用因为HPA或者手动调整应用分片数量时,可以通过驱逐空载的方式腾空调度资源却保高优先级应用可以在第一时间调度并创建。当空载应用从被驱逐转变为等到状态时,ClusterAutosaler此时对集群机型扩容,确保下次高优先级应用调度时,有足够的空载应用可以被驱逐。
超容量扩容功能的核心为OverprovisionAutoscaler(超容量扩容)和ClusterAutosaler(集群自动扩容),两者都需要通过不断调整参数配置去适配多重业务需求需求。
超容量扩容功能在一定程度上降低了资源使用饱和度,通过增加成本提高了集群和应用的稳定性,实际业务场景中需要根据需求进行取舍并合理配置。
2 什么情况下需要使用超容量扩容
当集群值开启Hpa和Autoscaler时,在发生节点扩容的情况下,应用调度时间通常为4-12分钟,主要取决于创建工作节点资源以及工作节点从加入集群到Ready的总耗时。以下为最佳和最差效率分析
最佳案例场景-4分钟
• 30秒 - 目标指标值更新:30-60秒
• 30秒 - HPA检查指标值:30秒 - >30秒 - HPA检查指标值:30秒 - >
• <2秒 - Pods创建之后进入pending状态<2秒 -Pods创建之后进入pending状态
• <2秒 - CA看到pending状态的pods,之后调用来创建node 1秒<2秒 -CA看到pending状态的pods,之后调用来创建node 1秒
• 3分钟 - cloud provider创建工作节点,之后加入k8s之后等待node变成ready
最糟糕的情况 - 12分钟
• 60 秒 —目标指标值更新
• 30 秒 — HPA检查指标值
• < 2 秒 — Pods创建之后进入pending状态
• < 2 秒 —CA看到pending状态的pods,之后调用来创建node 1秒
• 10 分钟 — cloud provider创建工作节点,之后加入k8s之后等待node变成ready
两种场景下,创建工作节点耗时占比超过75%,如果可以降低或者完全不考虑该时间,将大大提高应用扩容速度,配合超容量扩容功能可以大大增强集群和业务稳定性。超容量扩容主要用于对应用负载敏感度较高的业务场景
大促备战
流计算/实时计算
Devops系统
其他调度频繁的业务场景
3 如何开启超容量扩容
超容量扩容功能以ClusterAutoscaler为基础,配合OverprovisionAutoscaler实现。以京东公有云Kubernetes容器服务为例
3.1 开启ClusterAutoscaler
https://cns-console.jdcloud.com/host/nodeGroups/list
• 进入 “kubernetes容器服务”->“工作节点组”
• 选择需要对应节点组,点击开启自动伸缩
• 设置节点数量区间,并点击确定
3.2 部署OverprovisionAutoscaler
1 部署控制器及配置
apiVersion: apps/v1kind: Deploymentmetadata: name: overprovisioning-autoscaler namespace: default labels: app: overprovisioning-autoscaler owner: cluster-autoscaler-overprovisioningspec: selector: matchLabels: app: overprovisioning-autoscaler owner: cluster-autoscaler-overprovisioning replicas: 1 template: metadata: labels: app: overprovisioning-autoscaler owner: cluster-autoscaler-overprovisioning spec: serviceAccountName: cluster-proportional-autoscaler containers: - image: jdcloud-cn-north-1.jcr.service.jdcloud.com/k8s/cluster-proportional-autoscaler:v1.16.3 name: proportional-autoscaler command: - /autoscaler - --namespace=default ## 注意这里需要根据需要指定上述的configmap的名称 ## /overprovisioning-autoscaler-ladder/overprovisioning-autoscaler-linear - --configmap=overprovisioning-autoscaler-{provision-mode} ## 预热集群应用(类型)/ 名称,基准应用和空值应用需要在同一个命名空间下 - --target=deployment/overprovisioning - --logtostderr=true - --v=2 imagePullPolicy: IfNotPresent volumeMounts: - name: host-time mountPath: /etc/localtime volumes: - name: host-time hostPath: path: /etc/localtime---kind: ServiceAccountapiVersion: v1metadata: name: cluster-proportional-autoscaler namespace: default---kind: ClusterRoleapiVersion: rbac.authorization.k8s.io/v1metadata: name: cluster-proportional-autoscalerrules: - apiGroups: [""] resources: ["nodes"] verbs: ["list", "watch"] - apiGroups: [""] resources: ["replicationcontrollers/scale"] verbs: ["get", "update"] - apiGroups: ["extensions","apps"] resources: ["deployments/scale", "replicasets/scale","deployments","replicasets"] verbs: ["get", "update"] - apiGroups: [""] resources: ["configmaps"] verbs: ["get", "create"]---kind: ClusterRoleBindingapiVersion: rbac.authorization.k8s.io/v1metadata: name: cluster-proportional-autoscalersubjects: - kind: ServiceAccount name: cluster-proportional-autoscaler namespace: defaultroleRef: kind: ClusterRole name: cluster-proportional-autoscaler apiGroup: rbac.authorization.k8s.io---apiVersion: scheduling.k8s.io/v1kind: PriorityClassmetadata: name: overprovisioningvalue: -1globalDefault: falsedescription: "Priority class used by overprovisioning."
2 部署空载应用
apiVersion: apps/v1kind: Deploymentmetadata: name: overprovisioning namespace: default labels: app: overprovisioning owner: cluster-autoscaler-overprovisioningspec: replicas: 1 selector: matchLabels: app: overprovisioning owner: cluster-autoscaler-overprovisioning template: metadata: annotations: autoscaler.jke.jdcloud.com/overprovisioning: "reserve-pod" labels: app: overprovisioning owner: cluster-autoscaler-overprovisioning spec: priorityClassName: overprovisioning containers: - name: reserve-resources image: jdcloud-cn-east-2.jcr.service.jdcloud.com/k8s/pause-amd64:3.1 resources: requests: ## 根据预热预期设置配置的分片数量及单分片所需资源 cpu: 7 imagePullPolicy: IfNotPresent
3.3 验证超容量扩容功能是否正常
1 验证Autoscaler
• 查看autoscaler控制器是否Running
• 不断创建测试应用,应用需求资源略微小于节点组单节点可调度资源
• 观察集群节点状态,当资源不足导致pod 等待中状态时,autocalser是否会按照预设(扩容等待、扩容冷却、最大节点数量等)进行扩容
• 开启集群自动缩容,删除测试应用,观察集群节点资源Request到达阈值后是否发生缩容。
2 验证OverprovisionAutoscaler
• 查看OverprovisionAutoscaler控制器是否Running
• 不断创建测试应用,当发生autoscaler后,空载应用数量是否会根据配置发生变化
• 当业务应用pendding后,空载应用是否会发生驱逐,并调度业务应用
4 设置OverprovisionAutoscaler及ClusterAutoscaler参数
4.1 配置ClusterAutoscaler
1 ca参数说明
参数名称 | 默认值 | 参数说明 |
---|---|---|
scan_interval | 20s | How often cluster is reevaluated for scale up or down |
max_nodes_total | 0 | Maximum number of nodes in all node groups |
estimator | binpacking | Type of resource estimator to be used in scale up. |
expander | least-waste | Type of node group expander to be used in scale up |
max_empty_bulk_delete | 15 | Maximum number of empty nodes that can be deleted at the same time |
max_graceful_termination_sec | 600 | Maximum number of seconds CA waits for pod termination when trying to scale down a node |
max_total_unready_percentage | 45 | Maximum percentage of unready nodes in the cluster. After this is exceeded, CA halts operations |
ok_total_unready_count | 100 | Number of allowed unready nodes, irrespective of max-total-unready-percentage |
max_node_provision_time | 900s | Maximum time CA waits for node to be provisioned |
scale_down_enabled | true | Should CA scale down the cluster |
scale_down_delay_after_add | 600s | How long after scale up that scale down evaluation resumes |
scale_down_delay_after_delete | 10s | How long after node deletion that scale down evaluation resumes, defaults to scanInterval |
scale_down_delay_after_failure | 180s | How long after scale down failure that scale down evaluation resumes |
scale_down_unneeded_time | 600s | How long a node should be unneeded before it is eligible for scale down |
scale_down_unready_time | 1200s | How long an unready node should be unneeded before it is eligible for scale down |
scale_down_utilization_threshold | 0.5 | Node utilization level, defined as sum of requested resources divided by capacity, below which a node can be considered for scale down |
balance_similar_node_groups | false | Detect similar node groups and balance the number of nodes between them |
node_autoprovisioning_enabled | false | Should CA autoprovision node groups when needed |
max_autoprovisioned_node_group_count | 15 | The maximum number of autoprovisioned groups in the cluster |
skip_nodes_with_system_pods | true | If true cluster autoscaler will never delete nodes with pods from kube-system (except for DaemonSet or mirror pods) |
skip_nodes_with_local_storage | true | If true cluster autoscaler will never delete nodes with pods with local storage, e.g. EmptyDir or HostPath", NOW(), NOW(), 1); |
2 推荐配置
# 其他保持默认scan_interval=10smax_node_provision_time=180sscale_down_delay_after_add=180sscale_down_delay_after_delete=180sscale_down_unneeded_time=300sscale_down_utilization_threshold=0.4
4.2 配置OverprovisionAutoscaler
OverprovisionAutoscaler的配置有线性配置和阶梯配置两种方式,两种配置方式只能选择一种.
1 线性配置(ladder)
线性配置,通过配置总体CPU核数以及节点数量和空载应用数量的比例实现线性资源预留,空载应用数量总是和CPU总量以及节点数量成正比,精度会根据空载应用CPU资源request变化,request值越小,精度月高,当配置发生冲突时,取符合线性关系的空载应用数量最大值.
节点数量满足配置中min和max的区间
preventSinglePointFailure,当为true时,Running状态的空载应用分片数满足线性关系;当为false时,Failer/Running状态的空载应用分片数满足线性关系
includeUnschedulableNodes,是否考虑不可调度节点
kind: ConfigMapapiVersion: v1metadata: name: overprovisioning-autoscaler-linear namespace: defaultdata: linear: |- { "coresPerReplica": 2, "nodesPerReplica": 1, "min": 1, "max": 100, "includeUnschedulableNodes": false, "preventSinglePointFailure": true }
2 阶梯配置(linear)
阶梯配置,通过配置总体CPU核数或者节点数量和空载应用数量的矩阵实现阶梯状资源预留,空载应用数量符合CPU总量以及节点数量的分布状态,当配置发生冲突时,取符合区间分布的空载应用数量最大值
kind: ConfigMapapiVersion: v1metadata: name: overprovisioning-autoscaler-ladder namespace: defaultdata: ladder: |- { "coresToReplicas": [ [ 1,1 ], [ 50,3 ], [ 200,5 ], [ 500,7 ] ], "nodesToReplicas": [ [ 1,1 ], [ 3,4 ], [ 10,5 ], [ 50,20 ], [ 100,120 ], [ 150,120 ] ] }
关键词:
-
每日短讯:Python精品书籍
目录Python精品书籍*参考资料基础Python编程:从入门到实践(第2版)笨办法学_PythonCodingforKids:Python:LearntoCodewith
来源: 【天天热闻】Kubernetes集群调度增强之超容量扩容
每日短讯:Python精品书籍
环球即时看!用户隐私安全卫士——小程序沙箱
Portainer认识、安装、使用
使用openssl自签CA
市场监管总局批准启用激光小角度副基准装置
每日机构分析:4月18日
天天快资讯丨厦门港务:将进一步研究探讨新兴技术在智慧物流云平台等方面的应用
当前快看:是块硬骨头!中国首个6x6超级越野平台首车诞生:3轴6驱5把锁
《幽灵线:东京》令人诧异:微软第一方大作PS5表现更好
【天天聚看点】自循环动态呼吸:骆驼新款Q态羽网面跑鞋129元1.9折狂促
环球今日报丨饮水机不清洗菌落超16000种?打工人看完心态崩了
曝特斯拉上海工厂克扣员工绩效 马斯克回应:将进行调查
天天观热点:厚植绿色技术创新优势
【天天热闻】苹果手机里面的udid怎么查出来
mysql connector 执行 select 和 shardingshpere-proxy 的处理过程
【世界播资讯】Nlog-动态修改DatabaseTarget,对数据库字符串进行加密
精选!Python实现搭建-简单服务器教程
滚动:PHP 7 教程_编程入门自学教程_菜鸟教程-免费教程分享
钉钉个人版来了!将全面接入千问大模型
驱动网简介
头条:【新华500】新华500指数(989001)18日上涨0.24%
焦点信息:“大块头”正当时,中国经济网带您走进2023上海车展
【全球新要闻】20多万有戏!全新宝马iX1纯电SUV发布:中国独享加长版
世界热议:钉钉宣布接入通义千问!一条“/”拉高生产力
天天新消息丨不给小鹏留活路?理想一只脚踏入纯电领域:城市高阶辅助驾驶也来了
天天要闻:小米13 Ultra同时把潜望+1英寸可变光圈塞进手机里 雷军:非常不容易
女司机误将车内空调开成热风中暑:交警帮忙开下高速
天长新型城镇化提质升级补短板项目开展消防演练
世界滚动:好物分享:一款可以加密云盘视频,并依然可在线播放的免费小工具——Alist 云盘视频加密助手!
环球报道:Grafana监控OracleDB的完整过程
环球简讯:Jenkins常用插件
全球热头条丨仅1.0MB,开源压缩软件7-Zip
全量通过,华为云GaussDB首批完成信通院全密态数据库评测
环球快播:吃避孕药副作用有哪些_吃避孕药的副作用有什么
闹大!近10万人联合抵制 网飞黑人《埃及艳后》摊上事:歧视非裔 篡改历史
【世界热闻】Mate60或将首发 华为鸿蒙4.0秋季发布:AI会是亮点
曝芒果TV涉嫌恶意扣费 页面无取消续费选项 你中招没
要闻:2199元 小米米家无线洗地机2发布:活水杀菌 180°躺平洗地
环球讯息:迈威生物(688062)2022年年报简析:增收不增利,存货大幅上升
了解GIS地图和可视化如何改变我们对地理信息的理解
天天热议:火山引擎DataLeap下Notebook 系列文章一:技术选型之路
全球热议:新车充电烧毁 特斯拉回应因电流过大:曾甩锅被国家电网硬怼
环球看点!潍坊风筝节现躺平版“秦始皇” 网友:这是他摔过最狠的一跤
大众拟2026年之前再推10款电动汽车
看热讯:网络编程懒人入门(十五):外行也能读懂的网络硬件设备功能原理速成
环球热议:若依前后端分离 代码生成修改(2)
【聚看点】用C#破解Chrome浏览器cookie值
【世界时快讯】3D轻量化引擎推出新技术,模型渲染更逼真!
17.88万起圆你跑车梦 哪吒GT开售:双门四座零百三秒
环球焦点!鸿蒙5G新机来了!WIKO Hi畅享60官宣:4800万金环双摄
全品牌销冠!魅族20系列成3000元档周线上销量第一
内外双2K E6旗舰屏!vivo X Fold2配置详解:九大全球领先科技
环球微速讯:农业农村部:今年全国农作物种子市场总体上供大于求,合格率稳定保持在98%以上
报道:【Git代码仓库托管】上海道宁为您提供构建、扩展和交付安全软件的完整开发人员平台
世界今日讯!windows系统git使用ssh方式和gitee/github进行同步
【天天时快讯】springboot统一响应实体封装+统一异常类管理
当前观察:Redis---哨兵服务
全球即时:python的matplotlib绘制动态图形(用animation中的FuncAnimation)
财政部:将专项债务限额及时下达各地 推动尽快形成实物工作量
世界看热讯:在史上“最热闹”的上海车展 特斯拉竟然缺席了 维权有阴影?
漫威面临征服者康难题
世界微头条丨爆款狂促!玫瑰精油洗发水47.8元买1000ml:解决软塌油头
焦点观察:王一博主演!《长空之王》领跑五一档预售票房榜
72岁王石出手创立私募基金:曾表态市场一定会惩罚暴利
方萍萍:2023年04月18日原油交易策略
秦昊结了几次婚?秦昊的老婆叫什么名字?
罗云熙真实身高体重是多少?罗云熙为什么那么瘦?
粉红法拉利是谁唱的?粉红法拉利完整版歌词
化骨绵掌是什么意思?化骨绵掌是谁的绝招?
车俊焕多大了?车俊焕个人资料介绍
【世界报资讯】Go 单表头结构体导入导出
世界看点:nginx服务在高并发场景下的优化方案及具体配置
今日观点!兔子产子问题
关注:大连积极扩大有效投资加速迈向“万亿GDP城市”
【财经分析】紧缩预期压制买需 2月超六成海外“债主”抛售美债
视讯!新华社重庆分社社长李勇:将从三方面助力重庆数字政府建设
首批扩募REITs将召开持有人大会
每日热议!生产力起飞!金山官宣WPS AI:聊天帮忙做好Word文档
环球今日报丨发布三个月跳水超1000!苹果M2版Mac mini降到3478元了
全球快资讯:上海一物流网点起火:快递员怀疑液体可燃 用打火机尝试发现真的可燃
今晚发布!小米13 Ultra配置带你提前看 就差价格了
全球快看:AI绘制90年代“复仇者联盟” 阿汤哥来演钢铁侠
世界速看:uniapp ios app离线打包
如何假装你懂Meta Segment Anything?
前沿资讯!基础电子元器件产业发展专项协调机制年度工作会议在深圳召开
【全球时快讯】游戏掉帧电脑卡顿?这锅CPU不背
四电机原地掉头 奔驰EQG概念车亮相上海车展:全新电池装车
理想汽车累计交付破32万辆 30万元以上新能源品牌销量第一
全球短讯!像人一样开 理想发布理想AD Max 3.0:连路上的狗都能识别
世界新资讯:iPhone 15 Pro新变化:用音量键组合关机重启成过去式
福建省厦门市发布雷雨大风黄色预警
【全球聚看点】如何在 Linux 上录制你的终端操作
dbatools demo
当前速递!一段话理解正向代理和反向代理的区别
热头条丨大数据开发相关技术汇总
环球热消息:6月6日全平台发售!《暗黑破坏神4》已完成开发:送厂压盘
蒙古国发布强沙尘暴预警:今日起席卷全境 影响我国部分地区
天天观热点:抢先看!迪士尼送真人版《小美人鱼》新预告:黑小美人鱼水中甩发画面动情
环球微资讯!蒙古国发布强沙尘暴预警 18日起将席卷全境