从混部到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.

Home - Wiki
Copyright © 2011-2024 iteam. Current version is 2.139.0. UTC+08:00, 2024-12-23 10:34
浙ICP备14020137号-1 $Map of visitor$