基于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请求创建 Pod3。API Server创建处于等待状态的任务 Pod 14集群自动扩缩容组件检测到该未调度 Pod5进而向云服务商申请新增节点6。最终云服务商分配计算实例作为Node 17该节点成功承载并运行运行中的任务 Pod8。如今搭建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都能从容适配。