《基于 Crane 的云原生降本增效最佳实践-陈凯悦.pdf》由会员分享,可在线阅读,更多相关《基于 Crane 的云原生降本增效最佳实践-陈凯悦.pdf(57页珍藏版)》请在三个皮匠报告上搜索。
1、基于Crane的云原生降本增效最佳实践腾讯云高级开发工程师/陈凯悦目录目录01010 02 20 03 3云原生资源利用现状云原生资源利用现状深入理解深入理解KubernetesKubernetes的资源管理的资源管理基于基于CraneCrane的成本管理最佳实践的成本管理最佳实践云原生资源利用现状云原生资源利用现状Flexera Flexera 发布的发布的2021 2021 云计算市场发展状态报告云计算市场发展状态报告 30%-35%30%-35%的云支出被浪费了的云支出被浪费了物理机物理机利用率:利用率:10%10%虚拟机虚拟机利用率:利用率:12%12%基于腾云公有云客户数据分析和调研
2、,客户集群中资源成本浪费非常严重,有众多客户提出关于基于腾云公有云客户数据分析和调研,客户集群中资源成本浪费非常严重,有众多客户提出关于提高资源利用率提高资源利用率的诉求。的诉求。容器化容器化利用率:利用率:14%14%云原生基金会云原生基金会20212021年调查显示,云原生的部署率已经达到调查样本的历史性新高年调查显示,云原生的部署率已经达到调查样本的历史性新高96%96%的组织已经在调研或使用的组织已经在调研或使用KubernetesKubernetes成本优化成为企业上云的核心关切去中心化去中心化随着以Kubernetes为核心的云原生应用的蓬勃发展,传统的集中式财务预算和IT管理模式
3、在向以业务为导向的分布式决策转型。不断上涨不断上涨CNCF调查显示,随着业务的快速发展,企业的云费用以24%的年增长率快速增加。动态变化动态变化与原生的动态环境和弹性能力导致云费用随业务负载不断变化。浪费严重浪费严重业务上云以后缺乏资源优化意识,依然以传统资源配置思维管理资源,浪费严重。后云原生时代的成本管理挑战腾讯内部海量自研业务云上成本优化成效总体规模:总体规模:50005000万核万核累计节省:累计节省:3030亿亿混部后资源利用率:混部后资源利用率:65%65%深入理解深入理解KubernetesKubernetes的资源管理的资源管理深入理解深入理解 KubernetesKubern
4、etes 中的中的节点节点资源资源NodeNodeapiVersion:v1kind:Nodemetadata:name:node1spec:podCIDR:192.168.0.0/24 podCIDRs:-192.168.0.0/24status:allocatable:cpu:4 memory:12095184Ki capacity:cpu:4 memory:12197584KiapiVersion:v1kind:Podmetadata:name:nginxspec:containers:-name:nginx image:nginx resources:limits:memory:1Gi
5、 cpu:1 requests:memory:256Mi cpu:100m Node:node1 Container:nginxPod:nginxPod:otherpodCgroup:cpu.cfs_quotaCgroup:cpu.share调度器参考DeploymentKubernetesKubernetes 中中的资源分配的资源分配资源总量以及用量资源总量以及用量资源分配率和使用率资源分配率和使用率资源总量资源总量实际资源用量实际资源用量未分配资源未分配资源过多分配资源过多分配资源业务波谷闲置资源业务波谷闲置资源云成本管理的核心云成本管理的核心:在保障业务的前提下,最小化资源需求:在保障业
6、务的前提下,最小化资源需求典型资源利用率典型资源利用率应用扩容是指在应用接收到的并发请求已经处于其处理请求极限边界的情形下,扩展处理能力而确保应用高可用的技术手段Horizontal Scaling所谓横向伸缩是指通过增加应用实例数量分担负载的方式来提升应用整体处理能力的方式Vertical Scaling所谓纵向伸缩是指通过增加单个应用实例资源以提升单个实例处理能力,进而提升应用整体处理能力的方式12PodPodPod负载均衡CPUCPU内存内存实例数量实例数量Pod横向伸缩和纵向伸缩横向伸缩和纵向伸缩基于阈值的弹性的滞后性导致业务来不及弹CPU是可压缩资源,CPU承压时,不驱逐,所有Pod
7、等比受损发生CPU抢占时,以 cpu.shares 公平分配时间片无法确保延迟敏感型业务的稳定性独占式绑核能力造成较大资源浪费业务稳定性弹性基于经验的资源配置不准导致大量浪费资源配置不会配业务现状业务现状配置手段配置手段面临挑战面临挑战不敢配不能配Kubernetes原生能力的不足CraneCrane助力全面增效降本助力全面增效降本1.提升节点装箱率2.提升资源利用率峰值3.提升资源利用率均值问题问题步骤步骤方案方案运维可一键配置最大装箱率(比如200%)业务无需关心超卖比,按实际需求配置request1.Request推荐,基于业务特性智能预估2.Pod原地升降配,pod无需重启3.定制调度
8、器:设定目标利用率后可配置紧缩优先策略,打满节点4.重调度能力:保证节点负载在目标利用率内:超过目标值时进行友好驱逐(驱逐时先增加 Pod再删除旧Pod,实现平滑迁移)1.通过机器学习聚类算法,将业务按照时间和用量两个维度进行聚类2.对聚类后的业务进行反相似性和错峰部署3.为业务设置优先级和 QoS 质量保障,在资源紧张时对低优业务进行抢占和压制,保障业务稳定性1.运维侧无法从全局视角管控装箱率,每个业务单独配置超卖比1.request配置不合理2.K8s原生调度策略是默认均衡优先3.在提升节点使用率时,负载过高可能影响业务稳定1.业务存在波峰波谷2.存在复杂任务类型时(高优在线任务、低优离线
9、任务),难以动态的完成资源管理和调度,确保在线业务不受影响全链路降本全链路降本控制台控制台二级调度:节点级精细化调度与稳定性保证二级调度:节点级精细化调度与稳定性保证干扰检测与干扰检测与低优业务低优业务主动回避主动回避节点进程调度与节点进程调度与性能隔离性能隔离CPU隔离闲置资源再利用干扰判断主动回避内存异步回收水位磁盘IO带宽网络带宽隔离一级调度:应用画像与作业调度一级调度:应用画像与作业调度云原生云原生增强调度增强调度智能预测与弹性智能预测与弹性可扩展的资源优化推荐可扩展的资源优化推荐负载感知调度与重调度拓扑感知调度资源预测浪费分析智能推荐智能弹性使用标准资源使用标准资源高优在线业务低优在
10、线业务离线业务使用闲置回收资使用闲置回收资源源OpenCloudOSOpenCloudOS内核内核CPU QoSMem QoSNetwork QoSqGPUDisk QoS成本分布优化预期测算平台优化策略管理浪费看板业务资源优化运维运维业业务务统一推荐框架统一推荐框架A FinOpsFinOps framework for Cloud Resource Analytics Cloud Resource Analytics and EconomicsEconomics统一推荐框架统一推荐框架统一推荐框架FilterPrepareRecommendObserve灵活扩展的推荐插件灵活扩展的推荐插件
11、Request推荐副本数推荐弹性推荐闲置PVC优化建议多种结果展示方式多种结果展示方式自动化Action成本展示功耗与碳排放量展示生态集成生态集成Kubesphere成本优化套件与ArgoCD等流水线集成apiVersion:analysis.crane.io/v1alpha1kind:RecommendationRulemetadata:name:workloadspec:namespaceSelector:any:true recommenders:-name:WorkloadReplicas -name:WorkloadResource resourceSelectors:-apiVer
12、sion:apps/v1 kind:Deployment runInterval:1h基于历史用量的基于历史用量的RequestRequest推荐推荐降配后规格变化降配后规格变化apiVersion:analysis.crane.io/v1alpha1kind:Recommendationmetadata:name:workloads-rule-resource-78jp9spec:adoptionType:StatusAndAnnotation completionStrategy:completionStrategyType:Once targetRef:apiVersion:apps/v
13、1 kind:Deployment name:grafana namespace:crane-system type:Resourcestatus:lastUpdateTime:2022-08-29T13:24:54Z recommendedValue:|resourceRequest:containers:-containerName:grafana target:cpu:114m memory:120586239资源推荐基于历史用量与未来预测的副本数推荐基于历史用量与未来预测的副本数推荐基于VPA+DSP算法根据峰值推荐副本数基于历史用量与未来预测的弹性推荐基于历史用量与未来预测的弹性推荐
14、基于VPA+DSP算法根据波动规律推荐弹性apiVersion:analysis.crane.io/v1alpha1kind:Recommendationmetadata:name:workloads-rule-replicas-pbwnr namespace:kube-systemspec:adoptionType:StatusAndAnnotation completionStrategy:completionStrategyType:Once targetRef:apiVersion:apps/v1 kind:Deployment name:coredns namespace:kube-
15、system type:Replicasstatus:lastUpdateTime:2022-08-29T13:24:54Z recommendedValue:|replicasRecommendation:replicas:2推荐后副本数变化推荐后副本数变化弹性推荐智能弹性智能弹性22apiVersion:autoscaling.crane.io/v1alpha1kind:EffectiveHorizontalPodAutoscalermetadata:name:php-apachespec:scaleTargetRef:apiVersion:apps/v1 kind:Deployment
16、name:php-apache minReplicas:1 maxReplicas:10 scaleStrategy:Auto metrics:-type:Resource resource:name:cpu target:type:Utilization averageUtilization:50prediction:predictionWindowSeconds:3600 predictionAlgorithm:algorithmType:dsp dsp:sampleInterval:60s historyLength:3d智能弹性提前扩容提前扩容时间序列算法:FFT快速傅里叶变换取预测窗
17、口最大值:提前扩容基于 Custom Metricmetric 兜底保护减少无效缩容减少无效缩容预测未来可以减少不必要的缩容支持支持 CronCron 配置配置应对大促节假日等有规律的流量洪峰易于使用易于使用完全兼容社区 HPA 支持 Dryrun 观测指标支持 Prometheus Metric预测Metric实时Metric弹性计算Metric预测弹性效果预测弹性效果增强调度增强调度基于真实负载的调度器基于真实负载的调度器 底层依赖Prometheus采集真实负载,代替Request值 引入节点历史负载指标(1h内最大利用率,1天内最大利用率),感知业务波峰负载感知调度负载感知调度负载感知
18、调度效果负载感知调度效果性能优先性能优先 优先选择Pod能绑定在单NUMA Node内的节点负载均衡负载均衡 优先选择空闲资源更多的NUMA Node更灵活的策略更灵活的策略 解决原生CPU Manager导致集群负载过低的问题拓扑感知调度拓扑感知调度来自来自TEGTEG星辰算力团队的技术沉淀星辰算力团队的技术沉淀支持模拟调度的重调度器支持模拟调度的重调度器优雅驱逐能力优雅驱逐能力有全局视图,在多workload并行、同一workload内串行驱逐支持模拟调度,集群资源不足时可停止驱逐可以通过先扩容后缩容的方式实现无感驱逐支持场景支持场景驱逐负载过高的节点上的低优Pod支持固定时间窗口腾空节点
19、支持基于特定标签批量驱逐Pod混布混布在线离线空闲混布混布将延迟敏感业务与高吞吐量离线业务混合部署至共享节点以提升节点资源利用率的技术手段NodeCore1Core2Core3Core4大吞吐量离线业务大吞吐量离线业务延迟敏感在线业务延迟敏感在线业务KubernetesKubernetes在线业务集群在线业务集群web应用中间件缓存KubernetesKubernetes离线业务集群离线业务集群数据存储搜索引擎AI推理HadoopSparkFlinkAI数据处理模型训练EDA渲染NodeCore1Core2Core3Core4NodeCore1Core2Core3Core4NodeCore1C
20、ore2Core3Core4NodeCore1Core2Core3Core4BatchBatchBatchBatchBatchNodeCore1Core2Core3Core4Latency SensitiveLatency SensitiveLatency Sensitive传统常见部署传统常见部署延迟敏感在线业务延迟敏感在线业务 /大吞吐量离线业务大吞吐量离线业务KubernetesKubernetes混布集群混布集群web应用中间件缓存数据存储搜索引擎AI推理HadoopSparkFlinkAI数据处理模型训练EDA渲染NodeCore1Core2Core3Core4Latency Sen
21、sitiveLatency SensitiveLatency SensitiveBatchBatchBatch通过混布部署提升资源利用率通过混布部署提升资源利用率NodeCore1Core2Core3Core4BatchBatchLatency SensitiveBatchBatchBatchNodeCore1Core2Core3Core4Latency SensitiveLatency SensitiveLatency SensitiveLatency SensitiveBatchBatch干扰的存在导致混布难以落地干扰的存在导致混布难以落地I/O BridgeUSEI/O Controll
22、erNetwork ControllerCPU 1DRAMPower SupplyPortPortDiskDiskDiskExpender InterconnectCPU InterconnectUSEUSEUSEUSEUSEUSEUSEUSEUSEUSEFanI/O BusInterfaceTransportsMemoryBusUtilization Saturation Errors 干扰来源:干扰来源:内存:内存容量与带宽磁盘:存储容量与带宽网络:网络带宽CPU:L1,L2,LLC容量与带宽、TLB等CraneCrane混布的解题思路混布的解题思路全维度性能隔离全维度性能隔离CPU Qo
23、SCPU QoSMemMem QoSQoSDiskIODiskIO QoSQoSNetIONetIO QoSQoS使用标准资源高优在线业务低优在线业务离线业务使用弹性资源OpenCloudOSOpenCloudOS/OpenEulerOpenEuler/公版公版LinuxLinux进程优先级CPU BurstCPUSet管理超线程隔离异步回收全局分级水位pagecache上限入站流量限速出站流量限速Pod分级限速端口白名单Direct IOPSBuffered IOPSDirect BPSBuffered BPS节点弹性资源水位控制节点网卡限速节点全局pagecache管理全局分级水位干扰检测
24、与主动回避干扰检测与主动回避业务指标采集闲置资源回收干扰判断主动回避资源预测节点指标采集指标采集指标采集闲置资源回收闲置资源回收NodeQOSNodeQOSPodQOSPodQOS闲置资源再分配闲置资源再分配干扰检测干扰检测主动回避主动回避全维度指标采集全维度指标采集stateMapnode-localcAdvisornode-resourcecpu:/proc/cpuinfocpuLoad:/proc/loadavgmem:/proc/meminfonetio:/proc/net/devdiskio:/proc/diskstatscontainer_cpu_total_usagecontai
25、ner_cpu_limitcontainer_cpu_quotacontainer_cpu_periodcontainer_sched_run_queue_timetsp:status.allocatable.ext-rescpu:cAdvisorcpu_total_usagecpu_total_utilizationcpu_load_1_mincpu_load_5_mincpu_load_15_minmemory_total_usagememory_total_utilizationdisk_read_kibpsdisk_write_kibpsdisk_read_iopsdisk_write
26、_iopsdisk_read_utilizationnetwork_receive_kibpsnetwork_sent_kibpsnetwork_receive_pckpsnetwork_sent_pckpsnetwork_drop_innetwork_drop_outexclusive_cpu_idleext_res_container_cpu_total_usageext_cpu_total_distributeeBPF基于多种手段采集实时资源用量并构建基于多种手段采集实时资源用量并构建 StateState MapMapPodsNode Resource ControllerTimeSe
27、riesPredictionTemplate PredictionAlgorithem:DSPTimeSeriesPrediction:TargetRef:Kind:NodeResource PredictorResource PredictorNode:Allocatable:gocrane.io/cpu:7 gocrane.io/mem:12GiNode弹性资源回收弹性资源回收基于预测的回收基于预测的回收节点代理启动时创建TSP对象Craned针对节点TSP进行预测节点代理监听TSP状态获取节点空闲资源基于本地实时用量指标的回收基于本地实时用量指标的回收读取stateMap基于当前利用率计
28、算弹性资源弹性资源计算弹性资源计算基于预测的回收和基于本地实时用量计算可用弹性资源,并更新至节点Extend ResourceRequest:CPU:4 Mem:8GiAllocatable:CPU:8 Mem:16GiUsage:CPU:1 Mem:4Gi弹性CPU=节点可分配CPU*(1-预留比例)-(节点实际CPU用量-弹性资源用量+绑核业务独占的CPU)节点可分配CPU:节点可分配CPU,即Node.Status.Allocatable.CPU预留比例:保证始终有一定的空闲资源不能被复用,保证集群的稳定节点实际CPU用量:节点实际的CPU用量,即node_cpu_seconds_tot
29、al弹性资源用量:节点实际用量包含了使用弹性资源的部分业务,而这部分开销是是弹性资源,因此需要算入弹性CPU中绑核业务独占的CPU:被业务绑定的CPU不可二次分配,因此需要再弹性CPU中扣除基于本地实时用量指标的回收基于本地实时用量指标的回收spec:containers:-image:nginx name:extended-resource-demo resources:limits:gocrane.io/cpu:2 gocrane.io/memory:2000Mi requests:gocrane.io/cpu:2 gocrane.io/memory:2000Mi基于预测的回收基于预测的回
30、收干扰判断与主动回避干扰判断与主动回避冲突处理动作定义冲突处理动作定义服务质量保证策略定义服务质量保证策略定义动作执行动作执行NodeQoSPodQoSCollectorCollectorNodeLocalMetric SevereBPFTSPAnalyzerAnalyzerAvoidanceAvoidanceScheduling DisableThrottleEvictMerge Actions指标采集指标采集2.更新采集配置1.策略同步3.采集对应指标4.发送采集数据5.检测异常合并结果7.执行冲突回避动作6.通知AvoidanceAction灵活的异常规则配置与检测灵活的异常规则配置与检
31、测静态阈值基于OPA的灵活定义多种算法支持可自定义的主动回避规则可自定义的主动回避规则NodeQOS和PodQOS灵活组合多优先级在线混布在离线混布在离线混布配置示例在离线混布配置示例apiVersion:ensurance.crane.io/v1alpha1kind:NodeQOSmetadata:name:evict-on-highloadspec:nodeQualityProbe:nodeLocalGet:localCacheTTLSeconds:60 timeoutSeconds:10 rules:-actionName:eviction avoidanceThreshold:2 me
32、tricRule:name:cpu_total_utilization value:80 name:cpu-usage restoreThreshold:2apiVersion:ensurance.crane.io/v1alpha1kind:PodQOSmetadata:name:offline-taskspec:allowedActions:-eviction resourceQOS:cpuQOS:cpuPriority:7 scopeSelector:matchExpressions:-operator:In scopeName:QOSClass values:-BestEffort la
33、belSelector:matchLabels:app-type:offlineapiVersion:ensurance.crane.io/v1alpha1kind:AvoidanceActionmetadata:name:evictionspec:coolDownSeconds:300 description:evict low priority pods eviction:terminationGracePeriodSeconds:30NodeNode QoSQoS规则规则超过80%则运行eviction动作PodPod QoSQoS规则规则满足app-type=offline的BE Po
34、d,CPU优先级设置为7并允许驱逐AvoidanceAvoidance ActionAction规则规则对Pod进行软驱逐,优雅终止时间30秒支持模拟调度的优雅驱逐支持模拟调度的优雅驱逐APIAPINodeQOSPodQOSCrane SchedulerCrane SchedulerPodNodeTaintTaint NodeNode Key:interference.crane.io Effect:PreferNoScheduleAvoidanceActionobjectiveEnsurances:-name:cpu-usage avoidanceThreshold:2 restoreThr
35、eshold:2 actionName:eviction metricRule:name:cpu_total_usage value:6000scopeSelector:matchExpressions:-operator:In scopeName:QOSClass values:-BestEffortresourceQOS:cpuQOS:cpuPriority:7 htIsolation:enable:falseallowedActions:-EvictionCrane-AgentCrane-AgentLabel PodLabel Pod eviction.crane.io/candidat
36、e=true负载感知调器负载感知调器根据节点实际负载调度Pod,让集群负载更均衡或更集中支持优雅驱逐的重调度器支持优雅驱逐的重调度器驱逐特定标记Pod有全局视图,在多workload并行、同一workload内串行驱逐支持模拟调度,集群资源不足时可停止驱逐可以通过先扩容后缩容的方式实现无感驱逐R RUEUE内核提供混部的稳定底座内核提供混部的稳定底座实践案例实践案例 腾讯内部自研落地腾讯内部自研落地数据驱动的成本分析与成果测算离线数仓离线数仓自定义Spec Watcher捕获workload变动基于Prometheus Metrics Beats每日凌晨拉取当天业务指标针对Metrics Be
37、ats做了自定义存储优化,存储空间降低数个量级离线算法评估离线算法评估针对大量离线指标数据评估预测算法准确性超参调优运营数据分析运营数据分析聚类与业务画像大盘现状与走势优化进展用户行为分析成本分析 集群装箱率与利用率分布某部门集群优化前现状:某部门集群优化前现状:节点装箱率参差不齐:节点装箱率参差不齐:近一半集群装箱率不足50%节点利用率低:节点利用率低:三分之二集群峰值利用率不到40%成本分析 业务利用分析业务资源利用率低:业务资源利用率低:cpu利用率15%,内存利用率25%有效弹性占比低:有效弹性占比低:只有10%的HPA在本年度弹出过目标设定与绩效晾晒为优化腾讯内部业务云资源,腾讯定义
38、了云成熟度模型该模型从平台侧以及业务侧考核各个BG的云资源使用情况总成熟度得分=业务侧得分*50%+平台侧得分*50%得分情况从作业,产品,部门维度层层汇总,并以该结果作为考核参考指标自上而下设定目标自上而下设定目标自下而上汇总绩效自下而上汇总绩效集群大盘可视化集群大盘可视化集群总体利用率节点利用率热力图节点容量缩放节点容量缩放可定义节点容量缩放比例,放大节点可分配资源,提升装箱率节点水位控制节点水位控制可自定义节点水位,控制节点利用率上限动态调度器依据利用率装箱,确保真实利用率与目标利用率一致可配置紧缩优先调度策略,方便退还闲置节点平台侧优化 节点容量缩放和水位管理平台侧优化 业务定级与混部
39、通过通过混部混部技术,利用率提升技术,利用率提升3 3倍倍敏感业务稳定性不受损敏感业务稳定性不受损优先级定义优先级定义平台运维定义基于PriorityClass的冲突处理策略业务运维为业务定级冲突检测与主动回避冲突检测与主动回避灵活的异常检测策略cAdvisor,eBPF,BizProbe综合指标考量CPI,Steal Time,CPU Utilization,Memory Utilization,Network IO,DiskIO主动回避策略主动回避策略高优业务CPU绝对抢占低优业务主动驱逐内部大规模落地的成效在腾讯内部自研业务大规模落地部署至数百个Kubernetes集群管控数百万CPU核
40、全面上线一个月内,大盘总核数缩减25%控制台控制台二级调度:节点级精细化调度与稳定性保证二级调度:节点级精细化调度与稳定性保证干扰检测与干扰检测与低优业务低优业务主动回避主动回避节点进程调度与节点进程调度与性能隔离性能隔离CPU隔离闲置资源再利用干扰判断主动回避内存异步回收水位磁盘IO带宽网络带宽隔离一级调度:应用画像与作业调度一级调度:应用画像与作业调度云原生云原生增强调度增强调度智能预测与弹性智能预测与弹性可扩展的资源优化推荐可扩展的资源优化推荐负载感知调度与重调度拓扑感知调度资源预测浪费分析智能推荐智能弹性使用标准资源使用标准资源高优在线业务低优在线业务离线业务使用闲置回收资使用闲置回收资源源OpenCloudOSOpenCloudOS内核内核CPU QoSMem QoSNetwork QoSqGPUDisk QoS成本分布优化预期测算平台优化策略管理浪费看板业务资源优化运维运维业业务务