更新时间:2025-07-25 GMT+08:00
分享

部署EMS

部署准备

  1. EMS部署时将自动创建3个50GB的云硬盘,并将其用作PVC挂载到ZooKeeper的Pod实例上,用于ZooKeeper数据持久化保存。
  2. EMS会将运行日志保存在“/var/log/ems”目录下,需要准备20GB的本地磁盘空间用于存放EMS运行日志。
  3. 部署前请确保CCE集群中要部署的节点处于“运行中 可调度”的状态。
  4. 为了就近提供高性能内存缓存服务,EMS内存集群必须同AZ部署。
  5. 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,可参考应用模板部署进行部署。

  1. 添加节点标签。

    1. 登录CCE控制台,单击集群名称进入集群。
    2. 左侧导航栏选择“集群 > 节点管理”,单击“节点”标签,选中需要安装EMS的节点,并单击左上方“标签与污点管理”。
    3. 在弹出的窗口中,在“批量操作”下方单击“新增批量操作”,然后选择“添加/更新”,选择“K8S标签(Labels)”。

      填写需要增加标签的“键”为“ems”,“值”为“true”,单击“确定”。

    当只打算在CCE集群的部分节点部署EMS时,这些节点需要打上“ems=true”标签,EMS通过节点标签识别需要进行部署的节点。如果需要在CCE中所有节点部署EMS,跳过本步骤并设置EMS配置文件中的标签配置项“nodeSelector.enable”为“false”,详见3

  2. 从EMS提供的OBS桶下载链接获取主机配置脚本“ems_config.sh”,与EMS部署所需的Helm包。
  3. 修改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

  4. 将主机配置脚本“ems_config.sh”拷贝到打上“ems=true”标签的节点宿主机上,并在宿主机上运行sh ems_config.sh config 256000命令。

    表2 脚本参数说明

    脚本参数

    参数说明

    config

    表示命令的行为是对机器进行“配置”

    256000

    表示为主机分配500G大页空间,本值可由用户自行调整;EMS的大页大小为2MB, 计算方法为: 500*1024/2

    脚本内容说明:

    1. 通信目录设置

      建立“/mnt/paas/kubernetes/kubelet/ems” 文件夹以支持EMS与推理进程之间进行高效本地进程间通信。此通信依赖于一个共享的文件夹,该文件夹会在EMS启动后,映射至EMS Pod与推理Pod内。EMS将在该目录下启动服务,而推理Pod将利用该Socket进行双向通信。

    2. 用户与组权限配置

      设立专用于EMS操作的用户“ems”及用户组“emsgroup”,并需将“ems”用户添加至“emsgroup”组,以确保符合系统安全策略及正确身份验证流程。

    3. 日志管理目录配置

      在主机上创建日志存储位置“/var/log/ems”,并预留的存储空间。该容量设定是基于EMS服务运行时需要记录的运行与调试信息。

    4. 内核参数优化:虚拟内存映射管理

      调整系统内核配置,将“vm.max_map_count”参数值由默认值调整至建议值“6553000”。此参数控制每个进程可拥有的最大虚拟内存区域数量,EMS因需处理海量数据流与频繁内存映射操作故对此值有较高要求。

    5. 内核参数优化:大页配置

      配置“vm.nr_hugepages”参数以指定系统中支持的大页数目。操作系统默认使用大小为的常规页面,而设置大页可显著提高大型数据结构访问效率;考虑到EMS需求,应将大页大小设置为“2MB”并确保EMS独占使用权,这一操作会减少系统剩余的普通页面内存。

    6. 服务重启与系统适应调整

      完成上述内核参数调整后,需重启Kubernetes组件kubelet以确保更新设置生效。重新启动kubelet并不会影响主机上已存在容器与Pod,其作用在于使Kubernetes节点能够根据新的配置调度需要大页支持的EMS进程。此操作仅涉及本地管理层重启,不触发全局集群范围内的调整。

    以上脚本旨在优化资源利用效率,确保EMS及其依赖组件的稳定高效运行。

  5. 返回到CCE控制台页面,在左侧导航栏中单击“集群管理”。在右侧集群列表中,找到对应集群,在右侧单击“命令行工具”进入命令行。

  6. 在命令行菜单单击,选择修改后的Helm包上传到主机并解压。

    可执行ll命令查看是否上传成功。

    执行以下命令解压压缩包。

    tar zxvf Helm包名

  7. 运行以下命令在ems文件夹中安装Helm包。

    cd ems

    helm install ems ./

应用模板部署

  1. 添加节点标签。

    1. 登录CCE控制台,单击集群名称进入集群。
    2. 左侧导航栏选择“集群 > 节点管理”,单击“节点”标签,选中需要安装EMS的节点,并单击左上方“标签与污点管理”。
    3. 在弹出的窗口中,在“批量操作”下方单击“新增批量操作”,然后选择“添加/更新”,选择“K8S标签(Labels)”。

      填写需要增加标签的“键”为“ems”,“值”为“true”,单击“确定”。

    当只打算在CCE集群的部分节点部署EMS时,这些节点需要打上“ems=true”标签,EMS通过节点标签识别需要进行部署的节点。如果需要在CCE中所有节点部署EMS,跳过本步骤并设置EMS配置文件中的标签配置项“nodeSelector.enable”为“false”,详见3

  2. 从EMS提供的OBS桶下载链接获取EMS部署所需的Helm包。修改Helm包中的初始化参数配置,其余参数同表1

    表3 应用模板部署Helm包参数配置

    配置项

    参数说明

    参考值

    init.enable

    应用模板部署的初始化开关

    true

  3. 将修改后的helm包压缩为tgz 包,包名需满足命名规范。如:name-version.tgz,name字段不超过64个字符。
  4. 返回到CCE控制台页面,在左侧导航栏中单击“集群管理”。在右侧集群列表中,找到对应集群,单击名称进入集群。

  5. 进入集群后选择右侧“应用模板”,单击“上传模板”,在“添加文件”时选择3中的压缩包,添加后单击“上传”。

  6. 上传成功后在“我的模板”,单击“安装”,输入实例名称,单击右下角“安装”按钮进行安装。等待安装完成。

部署后检查

本章主要描述对EMS的安装后检查,确保EMS已正常运行。

  1. 登录CCE控制台,单击集群名称进入集群。
  2. 左侧导航栏选择“Kubernetes 资源 > 工作负载”,“命名空间”选择“ems”。
  3. 检查“无状态负载”页签下“ems-controller”的“状态”。
  4. 检查“守护进程集”页签下“ems-server”的“状态”。
  5. 检查“有状态负载”页签下“zookeeper”的“状态”。

    以上所有“状态”为“运行中”是正常状态,如果在5分钟后还显示非正常状态,请联系EMS技术支持。

相关文档