探索使用Kubernetes扩展专用游戏服务器:第2部分-管理CPU和内存

简介: 探索使用Kubernetes扩展专用游戏服务器:第2部分-管理CPU和内存

在本系列的第 1 部分中,我们讨论了如何使用专用游戏服务器,将其与 Docker 打包,然后在Kubernetes 上托管和管理它,这是一个很好的开始。然而,由于我们的 Kubernetes 集群通常是固定大小的,我们可能会耗尽所有可用容量来运行我们需要的所有游戏服务器容器,以匹配所有想玩我们的游戏的玩家——这将是一件非常糟糕的事情。


Kubernetes 集群有很多伸缩选项,我们将在以后的文章中深入介绍一个定制的 Kubernetes 节点伸缩器。首先,我们必须解决一个非常重要的事情:我的游戏服务器实际上占用了多少 CPU 和内存?


没有这些知识,就无法将游戏服务器的 CPU 和/或内存利用率与 Kubernetes 集群中的可用资源进行匹配,因此无法知道在给定大小的集群中可以运行多少个游戏服务器。当我们的游戏人数增加时,我们也将无法计算要添加的节点数(因为它自然会是😉),并且我们要确保集群足够大以容纳所有节点。如果流量开始下降,我们还希望缩小集群规模,以便通过删除不使用的集群节点来节省成本。


Kubernetes Dashboard


很棒的是,CPU 和内存使用率的可视化是 Kubernetes 开箱即用提供的另一个功能。 Kubernetes 捆绑有一个仪表板,该仪表板使我们可以很好地直观了解集群内部发生的事情,例如列出Pod 和 Services,为我们提供 CPU,内存使用情况等图表。


微信图片_20220611154433.png


为了安全地连接到 Kubernetes 仪表板,Kubernetes 的命令行工具具有以下命令:


kubectl proxy


运行时将返回以下内容:


Starting to serve on 127.0.0.1:8001


这将创建到 Kubernetes 主服务器的代理连接(假设您有权访问该集群),该主机托管 Kubernetes 集群的 API 和上面显示的仪表板。


如果现在将浏览器指向 http://localhost:8001/ui ,我们将看到仪表板。


确定 CPU 和内存使用率


您可能已经注意到,仪表板为我们提供了整个集群的 CPU 和内存的汇总统计信息,但它也可以在 Pod 级别为我们提供相同的信息!因此,我们需要确定游戏服务器正在使用多少 CPU 和内存的所有工作,就是部署一个包含游戏服务器的 Pod(我们在上一篇文章中进行了设置),并通过在其上运行多个游戏会话来进行一些负载测试 ,并查看提供的图表。


我是在 Paddle Soccer 游戏中这样做的,您可以看到以下结果之一:


微信图片_20220611154453.png


在上面的测试中,这个简单的专用游戏服务器的使用峰值是 0.08 个 CPU 核和略高于 34M 内存。这是我们在专用游戏服务器上进行负载测试时看到的最大使用量,所以我们会在这里画一条线,说明这是我们的服务器使用的上限,添加一些缓冲区,并据此制定计划。


限制CPU和内存的使用


诸如 Docker 之类的软件容器的非常有用的功能之一是,它能够对正在运行的容器的 CPU 和内存使用情况以及其中的进程施加约束。Kubernetes 通过其 Pod 配置向我们展示了这一点,这意味着我们可以明确确保 CPU 和内存使用率不会超过某个阈值,并且不会对在同一节点上运行的其他游戏服务器产生不利影响。考虑到游戏服务器对 CPU 波动的敏感程度,这是非常有用的!


因此,如果我们想限制包含游戏服务器的 Pod 的 CPU 使用率,可以通过更新以前的 Pod 定义来做到这一点:


apiVersion: v1
kind: Pod
metadata:
  generateName: "game-"
spec:
  hostNetwork: true
  restartPolicy: Never
  containers:
    - name: soccer-server
      image: gcr.io/soccer/soccer-server:0.1
      env:
        - name: SESSION_NAME
          valueFrom:
            fieldRef:
              fieldPath: metadata.name
  resources: # This section limits the cpu usage
    limits:
      cpu: "0.1"


值得注意的是,在示例代码中,我使用 Kubernetes API 提供了与上述配置相同的配置,但是 yaml 版本更易于理解,这是在本系列文章中一直使用的格式。


在上面的示例中,我们将限制设置为 “0.1”,以确保我们的游戏服务器只能访问其所运行的节点上的 CPU 的十分之一。为此,我们在 yaml 中为游戏服务器容器定义添加了带有相应限制的资源部分和cpu 部分。


我选择将最大 CPU 使用率设置为 0.1,以为我们在上面看到的 0.08 内核游戏服务器使用率提供一些填充,同时仍然让我在每个 Kubernetes 集群节点上每个核容纳 10 个游戏服务器,这应该可以很好地满足我们的需求。


我们还可以对内存使用量进行类似的限制,但为简单起见,我们将仅限制 CPU 使用量,最终也仅将 CPU 用于我们的扩展指标。

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
缓存 人工智能 算法
不同业务怎么选服务器?CPU / 内存 / 带宽配置表
本文详解了服务器三大核心配置——CPU、内存、带宽,帮助读者快速理解服务器性能原理。结合不同业务场景,如个人博客、电商、数据库、直播等,提供配置选择建议,并强调合理搭配的重要性,避免资源浪费或瓶颈限制。内容实用,适合初学者和业务选型参考。
1771 0
|
存储 消息中间件 缓存
从纳秒到毫秒的“时空之旅”:CPU是如何看待内存与硬盘的?
在数据爆炸的时代,如何高效存储与管理海量数据成为系统设计的核心挑战。本文从计算机存储体系结构出发,解析B+树、LSM树与Kafka日志结构在不同数据库中的应用与优化策略,帮助你深入理解高性能存储背后的原理。
469 0
|
弹性计算 定位技术 数据中心
阿里云服务器配置选择方法:付费类型、地域及CPU内存配置全解析
阿里云服务器怎么选?2025最新指南:就近选择地域,降低延迟;长期使用选包年包月,短期灵活选按量付费;企业选2核4G5M仅199元/年,个人选2核2G3M低至99元/年,高性价比爆款推荐,轻松上云。
1364 11
|
存储 机器学习/深度学习 缓存
阿里云九代云服务器怎么样?计算型c9i、通用型g9i、内存型r9i实例介绍
阿里云第9代云服务器主要实例规格包括计算型c9i、通用型g9i、内存型r9i,本文将为大家介绍阿里云九代云服务器中的计算型c9i、通用型g9i、内存型r9i实例的主要性能特点,并分享最新的活动价格信息,以供参考。
1137 1
|
弹性计算 前端开发 NoSQL
2025最新阿里云服务器配置选择攻略:CPU、内存、带宽与系统盘全解析
本文详解2025年阿里云服务器ECS配置选择策略,涵盖CPU、内存、带宽与系统盘推荐,助你根据业务需求精准选型,提升性能与性价比。
|
存储
阿里云轻量应用服务器收费标准价格表:200Mbps带宽、CPU内存及存储配置详解
阿里云香港轻量应用服务器,200Mbps带宽,免备案,支持多IP及国际线路,月租25元起,年付享8.5折优惠,适用于网站、应用等多种场景。
4049 0
|
存储 设计模式 监控
快速定位并优化CPU 与 JVM 内存性能瓶颈
本文介绍了 Java 应用常见的 CPU & JVM 内存热点原因及优化思路。
1617 166
|
数据可视化 Linux iOS开发
Python测量CPU和内存使用率
这些示例帮助您了解如何在Python中测量CPU和内存使用率。根据需要,可以进一步完善这些示例,例如可视化结果或限制程序在特定范围内的资源占用。
615 22
|
存储 弹性计算 固态存储
阿里云服务器配置费用整理,支持一万人CPU内存、公网带宽和存储IO性能全解析
要支撑1万人在线流量,需选择阿里云企业级ECS服务器,如通用型g系列、高主频型hf系列或通用算力型u1实例,配置如16核64G及以上,搭配高带宽与SSD/ESSD云盘,费用约数千元每月。
1915 0