如何稳定高效地利用 k8s 集群资源
如果无法正常显示,请先停止浏览器的去广告插件。
1. 如何稳定高效地利用
k8s 集群资源
Shopee 云原生技术专家 / 李鹤
2.
3. 我们是谁
东南亚,台湾,巴西领先的电子商务平台
4. 我们是谁
强大的品牌认知度,持续增长
Google Play
所有购物 App 中用户总花费时间第一
所有购物 App 中平均月活第二
所有 App 中最佳品牌第五
5. 个人简介
•
•
•
•
•
•
kubernetes, karmada member
2016 ~ 今,since v1.4
集群管理,编排调度,资源利用率
优化
GithubID: likakuli
订阅号:云原生散修
blog: https://www.likakuli.com
6. 内容简介
01
02
数据驱动
• 浪费量化
• 风险量化
• Insight Store
03
能力增强
• 调度
• 重调度
04
差异化混部
• 基于时区混部
• 差异化SLO混部
• 资源预测
弹性伸缩
• CA
• HPA
7. Kubernetes in Shopee
10+ 数据中心
200+ 集群
20K+ 节点
~500K Pod
8. 数据驱动
•
•
•
浪费量化
风险量化
insight store
9. 数据驱动
10. 浪费量化
11. 浪费量化
1
100%?
https://blog.betacat.io/post/2023/05/explain
-latency-and-utilization-using-queueing-
theory/
2 Fragmentation
3 Arch
4 Buffer
12. 浪费量化
容量评估
模拟调度
ce
ss
集群压缩
kluster-capacity
sa
cc
风险分析
13. 浪费量化
14. 风险量化
kluster-capacity sa --thresholds=50,60,75,70,75,80
--snapshot=simulationresult.json
--metric-url=https://prometheus.url
--range-start=2024-04-04 00:00:00
--range-end=2024-04-04 23:59:59
--step=60
--g=100
15. 风险量化
16. 风险量化
17. Insight Store
18. Insight Store
19. 能力增强
20. 调度
21. 调度
22. 重调度
23. 重调度
安全
workload,node,ns,cluster 级别限流
全局黑名单 + 特定 Annotation 禁用驱逐
实时
eunomia agent为热点node设置
annotation,descheduler watch node变化
定期执行 + 实时触发
性能
3K+ nodes 50k+ pods
Percycle P99 5m+ → 5s
预测
eunomia agent 预测节点短期负载变化,
平滑处理毛刺
24. 混部
25. 基于时区混部
for every usage class:
sum(usage of all pods) ≤
node.Allocatable * safety threshold
26. 差异化SLO混部
WorkloadQoS
Description
Examples
ProdGuaranteed ●
●
● Reserved CPUSet
CPU and memory NUMA alignment
Unconditionally suppress Mid ~ Batch Highly critical services, control plane
components
ProdBurstable ●
● Share CPUs with other ProdBurstable
Unconditionally suppress Mid ~ Batch Stateless web servers
ProdRelaxed ● Suppress Mid ~ Batch DaemonSet services
Mid ●
● Relatively stable resources
Suppress Batch Internal web services, non-business
critical services
Batch ● Dynamic, unstable resources Low priority batch jobs, cron jobs, big
data jobs, video/image transcoding
27. 差异化SLO混部
28. 差异化SLO混部
29. 差异化SLO混部
30. 差异化SLO混部
31. 资源预测
短期
长期
● 关注趋势 ● ● 更高的数据准确性和精
确性 关注模式(周期性、
季节性)
● 较低的精确性
● 较长的预测窗口
避免回收资源频繁波动
调度到未来一段时间Pod
不会被驱逐的节点
32. 资源预测
● 降低驱逐概率
● 快速响应资源骤减,
利用率突增的场景
33. 资源预测
34. 资源预测
长期预测
长期预测数据缓存在调度器中
调度在线 Pod
优先调度到已分配回收资源较少
的节点上
短期预测
发生或预测到资源利用率突增时
优雅驱逐
调度离线 Pod
调度离线 Pod
对近期频繁发生驱逐的节点进行惩
罚,降低再次调度到其上的概率
优先调度到未来一段时间内不会
被驱逐的节点上(长期预测)
35. 弹性伸缩
36.