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

简介: 《云上业务稳定性保障实践白皮书》——五.行业客户稳定性保障实践——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

相关实践学习
使用ACS算力快速搭建生成式会话应用
阿里云容器计算服务 ACS(Container Compute Service)以Kubernetes为使用界面,采用Serverless形态提供弹性的算力资源,使您轻松高效运行容器应用。本文将指导您如何通过ACS控制台及ACS集群证书在ACS集群中快速部署并公开一个容器化生成式AI会话应用,并监控应用的运行情况。
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
6月前
|
Kubernetes Docker Python
Docker 与 Kubernetes 容器化部署核心技术及企业级应用实践全方案解析
本文详解Docker与Kubernetes容器化技术,涵盖概念原理、环境搭建、镜像构建、应用部署及监控扩展,助你掌握企业级容器化方案,提升应用开发与运维效率。
985 108
|
6月前
|
运维 监控 数据可视化
小白也能部署应用,3个免费的容器化部署工具测评
本文对比了三款容器化部署工具:Docker Compose、Portainer 和 Websoft9。Docker Compose 适合开发者编排多容器应用,Portainer 提供图形化管理界面,而 Websoft9 则面向中小企业和非技术人员,提供一键部署与全流程运维支持,真正实现“开箱即用”。三款工具各有定位,Websoft9 更贴近大众用户需求。
小白也能部署应用,3个免费的容器化部署工具测评
|
8月前
|
运维 监控 数据可视化
容器化部署革命:Docker实战指南
容器化部署革命:Docker实战指南
|
4月前
|
存储 关系型数据库 MySQL
MySQL Docker 容器化部署全指南
MySQL是一款开源关系型数据库,广泛用于Web及企业应用。Docker容器化部署可解决环境不一致、依赖冲突问题,实现高效、隔离、轻量的MySQL服务运行,支持数据持久化与快速迁移,适用于开发、测试及生产环境。
736 4
|
8月前
|
存储 运维 安全
Docker化运维:容器部署的实践指南
Docker化运维:容器部署的实践指南
|
6月前
|
运维 数据可视化 C++
2025 热门的 Web 化容器部署工具对比:Portainer VS Websoft9
2025年热门Web化容器部署工具对比:Portainer与Websoft9。Portainer以轻量可视化管理见长,适合技术团队运维;Websoft9则提供一站式应用部署与容器管理,内置丰富开源模板,降低中小企业部署门槛。两者各有优势,助力企业提升容器化效率。
440 1
2025 热门的 Web 化容器部署工具对比:Portainer VS Websoft9
|
5月前
|
存储 Kubernetes 持续交付
为什么Docker容器化改变了开发与部署?
为什么Docker容器化改变了开发与部署?
|
9月前
|
关系型数据库 MySQL 数据库
【赵渝强老师】数据库不适合Docker容器化部署的原因
本文介绍了在Docker中部署MySQL数据库并实现数据持久化的方法,同时分析了数据库不适合容器化的原因。通过具体步骤演示如何拉取镜像、创建持久化目录及启动容器,确保数据安全存储。然而,由于数据安全性、硬件资源争用、网络带宽限制及额外隔离层等问题,数据库服务并不完全适合Docker容器化部署。文中还提到数据库一旦部署通常无需频繁升级,与Docker易于重构和重新部署的特点不符。
475 18
【赵渝强老师】数据库不适合Docker容器化部署的原因
|
8月前
|
Ubuntu 安全 数据安全/隐私保护
在Docker容器中部署GitLab服务器的步骤(面向Ubuntu 16.04)
现在,你已经成功地在Docker上部署了GitLab。这就是我们在星际中的壮举,轻松如同土豆一样简单!星际旅行结束,靠岸,打开舱门,迎接全新的代码时代。Prepare to code, astronaut!
535 12

推荐镜像

更多