从混部到Serverless 化,腾讯自研业务云原生成本优化实践
如果无法正常显示,请先停止浏览器的去广告插件。
1. 从混部到 Serverless 化,
腾讯自研业务云原生成本及稳定性优化实践
吕祥坤
腾讯云容器高级开发工程师
2.
3. 个人介绍
负责腾讯超千万核自研业务容器上云平台 TKEx 的研发设计工作,支持
包括 QQ、腾讯会议、腾讯文档在内的海量自研业务实现云原生架构升
级。在有状态服务应用改造、云原生应用发布与流量管理、大规模集群
的运营效率、稳定性提升等方向有较多的经验与积累。
4. 腾讯自研业务容器化上云历程及主要问题
在线混部集群的资源利用率提升方案
拥抱腾讯云弹性容器服务 EKS 价值所
在
存量 K8s 集群应用平滑迁移弹性容器服务 EKS 的落地实
践
5. 腾讯自研业务容器化上云历程及主要问题
6. 自研业务容器化上云简略架构
业务
社交
游戏
音视频 出行
北极星/TRTC Operators
研效平台
入口
TKEx容器平台
产
品
化
服
务
应用市场
软件源
Tencent Cloud Mesh
TKE
EKS
TKE-Edge
TKE-STACK
7. 独立集群架构
…
Node
问题:
…
Node
直播专属集群
直播专属集群
节点装箱率差
资源利用率低
运营成本高
…
Node
…
Node
海量节点运维成本高
…
Node
…
Node
教育专属集群
BJ
教育专属集群
GZ
8. 公共集群架构
…
…
Node
Node
Node
cluster1
cluster1
期望:
通过混部提升节点资源利用率
…
Node
Node
减少机器数量,降低成本
Node
…
Node
cluster2 cluster2
bj sh
Node
Node
bj
Node
…
Node
Node
Node
…
sh
CA 资源池
9. 在线混部集群的资源利用率提升方案
10. 在线混部集群利用率提升方案
Horizontal Node AutoScaler
Dynamic-Scheduler
ERP Controller
Dynamic-Pod-
Resource-Compressor
De-Scheduler
Node Annatator
二层资源动态超卖
CronHPA Controller
HPAPlus Controller
Node-Operator-Agent
Node-Exporter
节点负载均衡调度
Dynamic-Quota-
Webhook
Dynamic-Quota-
Operator
Node-Scorer
弹性伸缩
业务配额动态管理
Dynamic-Node-
Resource-Oversale
11. 动态调度器
痛点:
Kubernetes原生调度器属于静态调度,
当大量业务混部在一个集群时,必然出现节
点负载不均衡,Pod调度时仍可能往高负载节
点上调度,造成业务服务质量下降。
方案:
自研动态调度器:让节点的关键资源在
集群节点中均衡分布
Cpu/ Memory / Disk usage/ Network
io / System load / Iowait / softirq
自研热点动态补偿算法解决调度热点问
题
K8s Cluster
Kube-apiserver
Pod
P
a
t
c
h
Kube-scheduler
N
o
d
e
H
i
s
t
o
r
y
Crane scheduler
R
e
p
u
r
c
e
Node
U
s
a
g
e
A
a
a
o
t
a
t
i
o
n
Node
Node
Node
Pod
NodeResourceUsage Annotator
predicate:
##cpu usage
- name: cpu_usage_avg_5m
maxLimitPecent: 0.65
- name: cpu_usage_max_avg_1h
maxLimitPecent: 0.75
priority:
##cpu usage
- name: cpu_usage_avg_5m
weight: 0.2
- name: cpu_usage_max_avg_1h
weight: 0.3
- name: cpu_usage_max_avg_1d
weight: 0.5
hotValue:
- timeRange: 5m
count: 5
- timeRange: 1m
count: 2
Prometheus
12. Cpu usage 水平线
Cpu usage 低的节点
二层动态资源超卖
Cpu usage 高的节点
Cpu usage 低的Pod
Cpu usage 高的Pod
技术挑战:
超卖的 CPU
节点超卖比的安全控制,尽量不影响
超卖 cpu 50%
超卖 cpu 10%
业务稳定性。
节点资源超卖对Kubernetes驱逐机制
Node
Node
Node
Pod资源压缩30%
超卖 cpu 0%
Pod资源上调30%
和资源预留机制的影响。超卖比变化需要
动态调整kubelet对应的配置。
超卖比需要根据节点实时的负载数据
kubelet
kubelet
进行动态调整,防止造成节点负载过高。
kubelet
上报 Node Resource
如果出现预料外的节点高负载,通过
de-scheduler及时降低节点负载。
Dynamic-Pod-Resource-Compressor
Pod资源压缩比动态调整
极端情况如果出现大面积节点高负
载,通过HNA进行秒级扩容。
API Server
Dynamic-Node-Resource-Oversaler
Node资源超卖比动态调整
Workload 历史负载数据
ETCD
Prometheus
Node 历史负载数据
Node Annotator
13. 弹性伸缩-集群
目标:
自研多集群资源协调器,将多集
群的闲置资源构建统一的平台级
Buffer池,让资源在多集群高效流
Custer
Custer
De scheduler De scheduler
Node Score Node Score
HNA Controller HNA
Controller
转。
节点上下线实现自动化和标准
化。
Push Node Scores Get/Return Machines
Resource Combinator ERP Controller
Get Metrics
云梯 API
Get/Return Machines
二级弹性资源池方案,支持常规
扩缩容和紧急扩缩容2种场景。
集群负载高或者资源不足时,最
快可实现小于1分钟的扩容速度,这
样对降低集群负载有极大的益处。
紧急资源Buffer池
云梯免审批资源池
14. 集群缩容策略
node scorer 会周期性地对所有
节点进行打分,我们认为某个阈值下
得分的 node 都是可以缩容的
15. 弹性伸缩-业务
3rd Monitor Server
HPAPlus-Controller:
HPAPlus-Controller
支持业务常规弹性伸缩场景。
External Metric
Adaptor
支持HPA对象自定义关键配置:扩缩容
速率/计算周期/指标容忍度等。
支持弹性的maxReplicas策略,避免超
出预期的流量受限于maxReplicas配置太低,
导致业务雪崩。
性能优化:支持几千个业务HPA对象并
行弹性伸缩计算逻辑。
CronHPA-Controller:
支持业务周期性弹性伸缩场景。
c
o
o
p
e
r
a
t
e
Scale
Deployment/
StatefulSetPlus
Kube-ApiServer
Aggregator
Metrics Server
CronHPA-Controller
Kubelet/cAdvisor
HPA与CronHPA联动决策:支持业务计划
内的定时扩容策略,如果业务实际流量超过
预估流量,仍能自动扩容。
Prometheus
Adaptor
… Exportors
Prometheus
16. 在线混部利用率提升方案效果
通过在线业务混部超卖方案,
集群CPU平均利用率提升到30%~40%
未使用在线混部超卖方案的集群节点负载很不均衡。
已使用在线混部超卖方案的集群节点负载均衡性良好。节点负载均方差是未使用的20%左右。
通过Crane开源全套技术
https://github.com/gocrane/crane
17. 稳定性提升方案
业务经常因节点关键资源抢占导致业务服务质量下降。
深入内核,从内核层面提供更丰富的节点及容器级的稳定性
指标。在节点层面进行自愈,在容器层面进行协同调度编排。
Dockerd/Containerd/Kubelet状态和异常日志分析
Umount
Failed | frequency/fd
Shim残留 | Syncloop hung住 | 进程D状
Pod restart
态 | Cgroup 泄露/残留 | Container残留
Pod Load.r/load.d
OS稳定性指标检测
Pod Long sys
Memory usage | 数据盘 usage | PID Pressure | D状态进
程数
Iowait | System load | FD Pressure |节点网络异
Pod | Cpu调度延时
常检测
Pod Iowait
内核稳定性事件检测 (云原生TencentOS)
Pod 内存分配延时
Kernel死锁
| Softlockup | Hungtask | RCU Stall |
Kernel Panic
18. 拥抱腾讯云弹性容器服务 EKS 价值所在
19. 腾讯云弹性容器服务 EKS – 架构演进最终选
择
托管
介绍:
采用 Serverless 架构,以 Pod 为交
付资源 —— 无须在集群添置节点,即可部
署工作负载。容器弹性不受固定资源池限
制,理论上可以无限制扩容。
采用Pod间虚拟化隔离技术,每个 Pod
轻量虚拟机
轻量虚拟机
轻量虚拟机
轻量虚拟机
Cluster2
独享虚拟机,不会收到集群其他异常 Pod 干
轻量虚拟机
轻量虚拟机
Cluster2
集群
扰。
通过 Pod 而非节点计费 —— 根据
Pod 的资源配置及运行时间计费,容器运行
结束自动停止计费,无须为 buffer 资源付
费。
轻量虚拟机
轻量虚拟机
轻量虚拟机
轻量虚拟机
轻量虚拟机
轻量虚拟机
Cluster1 Cluster1
BJ Resource Pool GZ Resource Pool
20. 产品优势
提供云原生标准协议 高性能 支持 k8s 编排,完全兼容社
区 k8s api 计算、网络性能媲美云服务器 主备、多副本管控组件
支持 k8s 扩展性 定制内核 可自动/指定跨 zone 部署应
用
支持社区生态 负载均衡流量直通容器 容器支持热迁移
支持异构算力 弹性效率 丰富的 Intel 型号 秒级冷启动 容器间虚拟化隔离
腾讯云自研 AMD 支持镜像复用技术 集群间网络、管控隔离
多种主流 GPU 型号 支持数万容器并发创建 租户间绝对隔离
虚拟化 GPU 支持敏感扩容、定时扩容 管控与数据面隔离
•
•
高可用
安全性
21. 存量 K8s 集群应用平滑迁移弹性容器服务 EKS 的落地实践
22. 平滑迁移架构
Console
Kubernetes API
Kubectl
内网LB
轻量虚拟机 CVM 轻量虚拟机 轻量虚拟机 CVM
轻量虚拟机 轻量虚拟机 轻量虚拟机 轻量虚拟机 轻量虚拟机
母机 Node1
母机 Node2
Zone A
Cluster
母机 Node
Zone B
23. 命令行展示
24. 命令行展示
25. 正在做的事情
26. 引入EHPA,预测传入的峰值流量并提前扩展其副本数,提升用户使用 HPA 的信心。
通过服务负载历史数据,给用户进行资源配置推荐、以此提升资源利用率。
针对需要固定副本数的工作负载,进行副本数推荐;可以开启HPA 的工作负载,进行上下限副本数推荐
27.
28.