《云上业务稳定性保障实践白皮书》——五.行业客户稳定性保障实践——5.1 游戏业务稳定性保障——5.1.2 游戏容器化部署最佳实践(3)

本文涉及的产品
云服务器 ECS,每月免费额度200元 3个月
云服务器ECS,u1 2核4GB 1个月
简介: 《云上业务稳定性保障实践白皮书》——五.行业客户稳定性保障实践——5.1 游戏业务稳定性保障——5.1.2 游戏容器化部署最佳实践(3)

《云上业务稳定性保障实践白皮书》——五.行业客户稳定性保障实践——5.1 游戏业务稳定性保障——5.1.2 游戏容器化部署最佳实践(2) https://developer.aliyun.com/article/1232001?groupCode=supportservice



3. 弹性伸缩


ACK 容器服务弹性包括如下两个层面:


调度层弹性,主要是负责修改负载的调度容量变化。例如,HPA是典型的调度层弹性组件,通过HPA可以调整应用的副本数,调整的副本数会改变当前负载占用的调度容量,从而实现调度层的伸缩。


资源层弹性,主要是集群的容量规划不能满足集群调度容量时,会通过弹出

ECS或ECI等资源的方式进行调度容量的补充。两层的弹性组件与能力可以分开使用,也可以结合在一起使用,并且两者之间是通过调度层面的容量状态进行解耦。


•调度层弹性组件

image.png


HPA是k8s的workload的副本数进行自动水平扩缩容(scale)机制,其通过监控业务繁忙情况,在业务忙时,就要对workload扩容副本数;业务空闲时,缩容减少副本数。而默认进行调整的指标只有集群资源的cpu和mem使用率。


容器垂直伸缩(VPA),VPA会基于Pod的资源使用情况自动为集群设置资源占用

的限制,从而让集群将Pod调度到有足够资源的最佳节点上。VPA也会保持最初容器定义中资源request和limit的占比。但是该机制的有些功能目前是处于试验阶段,需要考虑谨慎使用。



•资源层弹性组件


image.png


除了常规的ECS实例,容器服务还提供了虚拟节点(Virtual1Node)功能,实现了Kubernetes与阿里云弹性容器实例ECI(Elastic1Container1Instance)无缝连接,让Kubernetes集群轻松获得极大的弹性能力,而不必受限于集群的节点计算容量。可以灵活动态地按需创建ECIPod,免去集群容量规划的麻烦。


image.png


•弹性伸缩


通过 Horizontal Pod Autoscaler 按指标弹性扩缩容

游戏服务随着玩家上线的多少,是存在波峰波谷的,如果设置固定的资源

Request注定在波谷时会造成资源浪费,针对这样的场景,需要通过HPA基于默认的指标(CPU,内存的利用率)来自动扩容deployment和statefulset中的Pods副本数量,实现资源使用波峰或者流量突增的时候可以自动增加业务负载的副本数量,波谷或者流量较少的时候可以自动减少业务负载的副本数量,将有效提升资源整体利用率。


通过 Vertical Pod Autoscaler 垂直扩缩容

Vertical Pod Autoscaler,以下简称 VPA,K8S Pod垂直自动扩缩,可以自动调整Pod的CPU和内存预留,用于提高集群资源利用率并释放CPU和内存供其它Pod使用。相较于水平自动伸缩功能HPA,其不需要调整pod副本数量,具有扩容速度更快,可以对有状态应用进行扩容(HPA不适合有状态的应用水平扩容)。自动伸缩特性使容器服务具有灵活的自适应能力。应对业务负载急剧飙升的情况,VPA能够在设定范围内快速扩大容器的Request。在业务负载变小的情况下,VPA可根据实际情况适当缩小Request节省计算资源。适用于需要快速扩容、有状态应用扩容等场景。


通过Cluster Autoscaler自动调整节点x数量


HPA和VPA,都是在业务负载层面的自动扩缩副本数量,以灵活应对流量的波峰波谷,提升资源利用率。但是其使用的范围是要求集群有空闲的资源,整个集群资源总数是固定的,HPA和VPA只有在集群有更足够的资源情况下才有效,当集群内整体资源不足,那么就需要Cluster1Autoscaler的组件能力来实现自动扩缩集群规模,在业务波峰自动扩容节点、业务波谷时减少集群的节点数 。


提升CA扩容节点的速率

极速模式-Qboot镜像

停机不收费

提前占位

提前占位


其中Qboot镜像基于Alibaba Cloud Kernel,并直接从内核引导虚拟机启动的定制化镜像。使用该镜像创建的ECS实例相比其它镜像创建的ECS实例,启动速度得到了极大的提升,并且默认运行时与标准镜像完全一致。


通过虚拟节点获得 Serverless 能力

虚拟节点并不是节点,而是一种调度能力,可以将Kubernetes集群中的应用

Pod调度到集群节点之外的资源中,而该资源不需要免客户维护的。阿里云容器服务基于虚拟节点和ECI提供了这种Serverless Container产品形态,ACK on ECI,可以在ACK集群中通过组件管理页面部署ack-virtual-node组件,Virtual Node Controller默认被托管,提供免运维、强隔离、快速启动的容器运行环境。使用ECI无需购买和管理底层ECS服务器,可以关注在容器应用而非底层基础设施的维护工作,有效提升计算弹性效率。


弹性负载-Elastic Workload

综上所述,在Kubernetes中,弹性包括调度层弹性(Pod)和资源层弹性(Node)两个层次,通常会通过HPA、VPA等模型进行Pod的弹性伸缩,再通过cluster-autoscaler或者virtual-kubelet进行资源层的弹性伸缩。两层之间通过Pod进行解耦,这样设计的好处是两层职责明确,坏处是解耦后相互结合的策略过于简单,无法实现更精细的调度策略,在Kubernetes中最小的生命周期管理单元是一个Pod,而传统的Kubernetes负载控制器(例如:Deployment、StatefulSet)管理的Pod是共享相同的调度策略的。因此,如果想要控制一个负载在不同资源上的细粒度分配时,可以通过elastic-workload来实现。



《云上业务稳定性保障实践白皮书》——五.行业客户稳定性保障实践——5.1 游戏业务稳定性保障——5.1.2 游戏容器化部署最佳实践(4) https://developer.aliyun.com/article/1231998?groupCode=supportservice

相关实践学习
Docker镜像管理快速入门
本教程将介绍如何使用Docker构建镜像,并通过阿里云镜像服务分发到ECS服务器,运行该镜像。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
2月前
|
消息中间件 监控 NoSQL
容器化应用系统上生产的最佳实践
容器化应用系统上生产的最佳实践
|
2月前
|
Kubernetes Java 应用服务中间件
制作容器镜像的最佳实践
制作容器镜像的最佳实践
|
29天前
|
运维 Kubernetes 持续交付
构建高效自动化运维体系:基于Docker和Kubernetes的最佳实践
在现代云计算环境中,自动化运维成为保障系统稳定性与提升效率的关键。本文深入探讨了如何利用Docker容器化技术和Kubernetes容器编排工具构建一个高效、可靠的自动化运维体系。文中不仅介绍了相关的技术原理,还结合具体案例分析了实施过程中的常见问题及解决方案,为读者提供了一套行之有效的最佳实践指南。
|
1月前
|
测试技术 Go 云计算
Go语言优化云计算与容器化环境的策略与最佳实践
【2月更文挑战第15天】在云计算和容器化环境中,Go语言的应用和优化策略对于提高系统的性能和效率至关重要。本文深入探讨了如何使用Go语言优化云计算和容器化环境,包括内存管理、并发编程、代码优化等方面的最佳实践,旨在帮助开发者充分利用Go语言的优势,提升系统的整体性能。
|
2月前
|
存储 Kubernetes 容灾
Velero 系列文章(五):基于 Velero 的 Kubernetes 集群备份容灾生产最佳实践
Velero 系列文章(五):基于 Velero 的 Kubernetes 集群备份容灾生产最佳实践
|
2月前
|
消息中间件 Kubernetes NoSQL
「译文」K8S 及 OpenShift 上应用程序的 Labels 和 Annotations 最佳实践
「译文」K8S 及 OpenShift 上应用程序的 Labels 和 Annotations 最佳实践
|
2月前
|
Kubernetes 监控 安全
「译文」在 K8S/OpenShift 上开发应用程序的 14 种最佳实践
「译文」在 K8S/OpenShift 上开发应用程序的 14 种最佳实践
|
4月前
|
负载均衡 持续交付 Docker
Docker容器编排与微服务架构的整合:最佳实践
微服务架构和Docker容器编排工具的结合为现代应用程序的构建和部署提供了巨大的便利性。本文将深入探讨如何将这两者整合在一起,提供丰富的示例代码和详细的最佳实践,以帮助大家构建可伸缩、可维护和高可用的微服务应用。
|
4月前
|
Kubernetes 网络协议 API
kubernetes资源命名约束和最佳实践
kubernetes资源命名约束和最佳实践
144 0
|
5月前
|
监控 Cloud Native 应用服务中间件
带你读《Apache Tomcat的云原生演进》——Web容器可观测最佳实践(1)
带你读《Apache Tomcat的云原生演进》——Web容器可观测最佳实践(1)
带你读《Apache Tomcat的云原生演进》——Web容器可观测最佳实践(1)