基于Kubernetes的GAMS分布式优化求解框架
Engine版本
同时运行数千个优化模型并非易事。我们在亚马逊云服务(AWS)集群中采用 Kubernetes架构,为客户提供可弹性扩展的服务。自研引擎版本现已正式命名为 Engine K,自2022年起为旗下Engine SaaS解决方案提供技术支撑。
目前我们推出三款产品方案:
1、GAMS Engine SaaS:云端运行 GAMS 的专属方案,全程无需运维。
2、GAMS Engine One:基于单节点部署,可通过 Docker Compose 在本地机房或云端运行 GAMS。
3、GAMS Engine:本地部署方案,适用于希望在多节点、异构工作节点环境中使用引擎的用户。
图1 Engine K的任务执行与集群动态扩缩容工作流。外部Engine API 首先将任务加入任务队列(1);随后任务调度器从队列中取出待执行任务(2),并向 K8s API Server请求创建 Pod(3)。API Server创建处于等待状态的任务 Pod 1(4),集群自动扩缩容组件检测到该未调度 Pod(5),进而向云服务商申请新增节点(6)。最终,云服务商分配计算实例作为Node 1(7),该节点成功承载并运行运行中的任务 Pod(8)。
如今搭建Kubernetes集群变得前所未有的简单!
通常,运维一套生产级 Kubernetes 集群需要专门团队负责。虽说多数情况下确实如此,但这并不妨碍大家快速上手。借助 K3s 这类项目,你就能快速部署 Kubernetes 集群。
无需大规模云资源,也可以搭建企业级 Kubernetes 环境。只需安装对应的Engine Helm 图表,依托云原生计算基金会(CNCF)认证的轻量版 Kubernetes——K3s,即便在单台设备上,也能完整运行Engine K技术栈。
使用GAMS Engine K的优势如下:
。部署:通过 Helm 图表即可完成快速安装与运维。
。精准扩缩容:支持异构工作节点。用户可为单个任务指定 CPU 与内存资源,既保障大型复杂模型拥有充足算力,也让小型任务资源占用保持精简。
。权限管控:管理员可设置精细化资源配额,精准限定特定用户或用户组可申请的资源总量。
分步指南:五分钟从零搭建 GAMS Engine K
本节将演示:只需一台设备、开启 SSH 访问权限,并安装 Helm 命令行工具,就能在 Kubernetes环境中部署并运行Engine K。
以下为操作视频,你可以参照视频,也可阅读下方文档。
第一步:安装 K3s
在任意 Linux 设备上执行以下单行命令,即可搭建一套经过完整认证、安全可靠的 Kubernetes 集群(K3s 运行要求见下文)。

K3s 默认将配置文件存放在 /etc/rancher/k3s/k3s.yaml 路径下,该文件需要管理员权限才能访问。我们现将集群配置文件复制到普通用户可访问的目录中:

查看集群节点(运行集群的服务器)状态,确认节点已就绪:
安装 Helm 并添加 GAMS Repo
我们将使用 Kubernetes 的包管理工具 Helm 来部署 Engine K。若你的设备尚未安装 Helm,请按以下步骤操作:

GAMS Engine K的Helm图表可从以下地址获取:https://github.com/GAMS-dev/engine-helm-chart

部署Engine K
这里重点说明一项核心特性:Engine K可按需灵活调整部署规模,可大可小。初次使用无需搭建大型云集群,同时也适用于常规业务环境与测试场景。你可以在 values.yaml 文件中自定义资源配置。

创建该 YAML 文件后,执行以下命令安装Engine K的 Helm 图表:

执行以下命令,查看已创建的全部资源:

GAMS基于借助Engine K求解优化模型
当引擎发布新版本时,你可以通过 Helm upgrade 命令完成系统升级。
若引擎新版本需要执行数据迁移,系统会先完成迁移操作,再执行版本升级。
代理容器组同时承载Engine API 与Engine UI,这是访问引擎的标准方式。代理组件是接入Engine K的入口。我们已在values.yaml文件中开启了入站流量配置,可通过localhost:80和localhost:443地址访问引擎。

卸载Engine K Helm图表
完成测试后,卸载Engine K的操作和安装一样简单,执行以下步骤即可:

结语
上手使用Engine K十分简便。它结合了引擎强大的用户与任务管理能力,以及 Kubernetes 完备的编排能力,在多节点部署场景中表现尤为出色。无论你需要2个节点还是2000个节点,Engine K都能从容适配。
更多推荐



所有评论(0)