部署EMS
部署准备
- EMS部署时将自动创建3个50GB的云硬盘,并将其用作PVC挂载到ZooKeeper的Pod实例上,用于ZooKeeper数据持久化保存。
- EMS会将运行日志保存在“/var/log/ems”目录下,需要准备20GB的本地磁盘空间用于存放EMS运行日志。
- 部署前请确保CCE集群中要部署的节点处于“运行中 可调度”的状态。
- 为了就近提供高性能内存缓存服务,EMS内存集群必须同AZ部署。
- EMS后台系统占用资源大小如下表:
Pod名称
类别
容器名
最小内存(GB)
最大内存(GB)
最小vCPU(个数)
最大vCPU(个数)
备注
ems-controller
无状态负载
ems-controller
8
10
8
16
/
sidecar
1
1
1
1
/
init
0.5
0.5
0.25
0.25
/
ems-server
守护进程集
ems-server
40
50
40
42
ems-server
需要额外配置大页内存数,建议将DRAM的一半划分为大页内存。详见3。
sidecar
1
1
1
1
init-check-big-mem
0.5
0.5
0.25
0.25
init
0.5
0.5
0.25
0.25
zookeeper
有状态负载
infra-zk
4
8
1
4
/
Total
/
/
55.5
71.5
51.75
64.75
/
- ems-server的内存占用分为两部分,普通页内存与大页内存,其中大页内存需要单独设置,详情请参见3。
- ems-server需要额外配置大页内存用于KVCache缓存,分配的DRAM缓存空间越大,KVCache命中率越高,推理性能提升越好。
CloudShell部署

目前华东二不支持CloudShell,可参考应用模板部署进行部署。
- 添加节点标签。
- 登录CCE控制台,单击集群名称进入集群。
- 左侧导航栏选择“集群 > 节点管理”,单击“节点”标签,选中需要安装EMS的节点,并单击左上方“标签与污点管理”。
- 在弹出的窗口中,在“批量操作”下方单击“新增批量操作”,然后选择“添加/更新”,选择“K8S标签(Labels)”。
填写需要增加标签的“键”为“ems”,“值”为“true”,单击“确定”。
当只打算在CCE集群的部分节点部署EMS时,这些节点需要打上“ems=true”标签,EMS通过节点标签识别需要进行部署的节点。如果需要在CCE中所有节点部署EMS,跳过本步骤并设置EMS配置文件中的标签配置项“nodeSelector.enable”为“false”,详见3。
- 从EMS提供的OBS桶下载链接获取主机配置脚本“ems_config.sh”,与EMS部署所需的Helm包。
- 修改Helm包中的配置并保存。
表1 Helm包参数配置 配置项
参数说明
参考值
hugePages.num
大页数,EMS采用2M的大页,所以此处表示2MB的个数。
例如:如果在主机上配置大页为500G,则这里应该是500*1024/2=256000。
说明:划分成大页后,普通页的内存会相应减少,需要合理规划上层推理进程的内存占用。
建议设置为DRAM容量值的一半
hugePages.requestsMemory
ems-server所需的最小大页数,如果主机上大页设置为500G,则配置为500Gi
建议设置为DRAM容量值的一半
hugePages.limitsMemory
ems-server所需的最大大页数,如果主机上大页设置为500G,则配置为500Gi
建议设置为DRAM容量值的一半
nodeSelector.enable
设置节点标签是否启用,如果启用,则EMS只会安装在设置了对应标签的主机节点上。
如果在CCE集群中所有节点部署EMS,则本值设置为false,否则设置为true
emsCtrl.labelKey
针对ems-controller与ZooKeeper服务的主机标签键值
ems
emsCtrl.labelValue
针对ems-controller与ZooKeeper服务的主机标签值。
true
emsServer.labelKey
针对ems-server与ZooKeeper服务的主机标签键值。
ems
emsServer.labelValue
针对ems-server与ZooKeeper服务的主机标签值。
true
- 将主机配置脚本“ems_config.sh”拷贝到打上“ems=true”标签的节点宿主机上,并在宿主机上运行sh ems_config.sh config 256000命令。
表2 脚本参数说明 脚本参数
参数说明
config
表示命令的行为是对机器进行“配置”
256000
表示为主机分配500G大页空间,本值可由用户自行调整;EMS的大页大小为2MB, 计算方法为: 500*1024/2
脚本内容说明:
- 通信目录设置
建立“/mnt/paas/kubernetes/kubelet/ems” 文件夹以支持EMS与推理进程之间进行高效本地进程间通信。此通信依赖于一个共享的文件夹,该文件夹会在EMS启动后,映射至EMS Pod与推理Pod内。EMS将在该目录下启动服务,而推理Pod将利用该Socket进行双向通信。
- 用户与组权限配置
设立专用于EMS操作的用户“ems”及用户组“emsgroup”,并需将“ems”用户添加至“emsgroup”组,以确保符合系统安全策略及正确身份验证流程。
- 日志管理目录配置
在主机上创建日志存储位置“/var/log/ems”,并预留的存储空间。该容量设定是基于EMS服务运行时需要记录的运行与调试信息。
- 内核参数优化:虚拟内存映射管理
调整系统内核配置,将“vm.max_map_count”参数值由默认值调整至建议值“6553000”。此参数控制每个进程可拥有的最大虚拟内存区域数量,EMS因需处理海量数据流与频繁内存映射操作故对此值有较高要求。
- 内核参数优化:大页配置
配置“vm.nr_hugepages”参数以指定系统中支持的大页数目。操作系统默认使用大小为的常规页面,而设置大页可显著提高大型数据结构访问效率;考虑到EMS需求,应将大页大小设置为“2MB”并确保EMS独占使用权,这一操作会减少系统剩余的普通页面内存。
- 服务重启与系统适应调整
完成上述内核参数调整后,需重启Kubernetes组件kubelet以确保更新设置生效。重新启动kubelet并不会影响主机上已存在容器与Pod,其作用在于使Kubernetes节点能够根据新的配置调度需要大页支持的EMS进程。此操作仅涉及本地管理层重启,不触发全局集群范围内的调整。
以上脚本旨在优化资源利用效率,确保EMS及其依赖组件的稳定高效运行。
- 通信目录设置
- 返回到CCE控制台页面,在左侧导航栏中单击“集群管理”。在右侧集群列表中,找到对应集群,在右侧单击“命令行工具”进入命令行。
- 在命令行菜单单击
,选择修改后的Helm包上传到主机并解压。
可执行ll命令查看是否上传成功。
执行以下命令解压压缩包。
tar zxvf Helm包名
- 运行以下命令在ems文件夹中安装Helm包。
cd ems
helm install ems ./
应用模板部署
- 添加节点标签。
- 登录CCE控制台,单击集群名称进入集群。
- 左侧导航栏选择“集群 > 节点管理”,单击“节点”标签,选中需要安装EMS的节点,并单击左上方“标签与污点管理”。
- 在弹出的窗口中,在“批量操作”下方单击“新增批量操作”,然后选择“添加/更新”,选择“K8S标签(Labels)”。
填写需要增加标签的“键”为“ems”,“值”为“true”,单击“确定”。
当只打算在CCE集群的部分节点部署EMS时,这些节点需要打上“ems=true”标签,EMS通过节点标签识别需要进行部署的节点。如果需要在CCE中所有节点部署EMS,跳过本步骤并设置EMS配置文件中的标签配置项“nodeSelector.enable”为“false”,详见3。
- 从EMS提供的OBS桶下载链接获取EMS部署所需的Helm包。修改Helm包中的初始化参数配置,其余参数同表1。
表3 应用模板部署Helm包参数配置 配置项
参数说明
参考值
init.enable
应用模板部署的初始化开关
true
- 将修改后的helm包压缩为tgz 包,包名需满足命名规范。如:name-version.tgz,name字段不超过64个字符。
- 返回到CCE控制台页面,在左侧导航栏中单击“集群管理”。在右侧集群列表中,找到对应集群,单击名称进入集群。
- 进入集群后选择右侧“应用模板”,单击“上传模板”,在“添加文件”时选择3中的压缩包,添加后单击“上传”。
- 上传成功后在“我的模板”,单击“安装”,输入实例名称,单击右下角“安装”按钮进行安装。等待安装完成。
部署后检查
本章主要描述对EMS的安装后检查,确保EMS已正常运行。
- 登录CCE控制台,单击集群名称进入集群。
- 左侧导航栏选择“Kubernetes 资源 > 工作负载”,“命名空间”选择“ems”。
- 检查“无状态负载”页签下“ems-controller”的“状态”。
- 检查“守护进程集”页签下“ems-server”的“状态”。
- 检查“有状态负载”页签下“zookeeper”的“状态”。
以上所有“状态”为“运行中”是正常状态,如果在5分钟后还显示非正常状态,请联系EMS技术支持。