ack-slo-manager是ACK支持差异化SLO(Service Level Objectives)能力的核心应用,可以在保证应用服务质量的同时,充分提升资源使用效率。本文将为您介绍ack-slo-manager组件的信息、使用说明和变更记录。

前提条件

ack-slo-manager仅支持1.18.0以上版本的ACK集群。

组件介绍

ack-slo-manager是ACK支持差异化SLO能力的核心应用。差异化SLO是指将不同类型的工作负载混合运行在同一节点上,可以充分利用工作负载对资源SLO需求特征的不同,在保证应用服务质量的同时,充分提升资源使用效率。具体使用场景如下:
类型 相关文档
CPU调度
负载感知调度 负载感知调度
精细化调度

ack-slo-manager在原resource-controller组件的基础上进行了升级优化,并支持resource-controller的所有功能。resource-controller将于近期下线,若您正在使用resource-controller,请参考从resource-controller迁移至ack-slo-manager完成迁移。

组件管理

ack-slo-manager已在容器服务管理控制台组件管理页面上架,您可以在组件管理页面对ack-slo-manager进行安装、升级、卸载等操作。若您正在使用的版本是通过应用市场部署(即版本低于v0.7),请参考将ack-slo-manager从应用市场迁移至组件中心完成迁移。

安装ack-slo-manager

  1. 登录容器服务管理控制台,在左侧导航栏中选择集群
  2. 集群列表页面的目标集群右侧,单击操作列下更多 > 组件管理
  3. 组件管理页面,搜索并单击ack-slo-manager,然后在ack-slo-manager卡片中单击安装
  4. 安装组件ack-slo-manager对话框中,按需修改配置参数,然后单击确定
  5. 在集群管理页左侧导航栏中选择应用 > Helm,查看ack-slo-manager的部署状态。
    当ack-slo-manager的状态已部署,说明部署成功。

修改ack-slo-manager

  1. 组件管理页面的ack-slo-manager卡片中单击配置
  2. ack-slo-manager参数配置对话框中,按需修改配置参数,然后单击确定
    系统会按新配置自动重新部署ack-slo-manager。

升级ack-slo-manager

  1. 组件管理页面的ack-slo-manager卡片中单击升级
  2. ack-slo-manager参数配置对话框中,按需修改配置参数,然后单击确定
    注意
    • 当已安装的组件版本不是最新版本时,才会显示升级操作。
    • 通过其他方式对ack-slo-manager已部署模块(Deployment、DaemonSet)所做的修改,在组件升级后将被覆盖。

卸载ack-slo-manager

CPU拓扑感知调度功能为每个ACK节点在kube-system命名空间下创建拓扑信息ConfigMap。从0.5.1版本开始,ack-slo-manager会自动清理已下线节点的ConfigMap,但卸载ack-slo-manager后,未下线节点的ConfigMap仍会保留。这些未清理的ConfigMap不会影响您其他功能的正常使用,但会占用数据空间,建议您及时清理。

  1. 组件管理页面的ack-slo-manager卡片中,单击卸载,然后在卸载组件对话框中,单击确定
  2. 删除拓扑信息ConfigMap。
    1. 在左侧导航栏中,选择配置管理 > 配置项。然后在页面顶部,选择kube-system命名空间。
    2. 在名称文本框中搜索-numa-info,然后在下方列表中,选择符合${NODENAME}-numa-info命名格式的ConfigMap,单击目标ConfigMap右侧操作列下的删除
    3. 确认删除对话框中,单击确定

组件迁移

将ack-slo-manager从应用市场迁移至组件中心

若您修改过应用市场中ack-slo-manager的ConfigMap,请先进行备份再进行升级操作;若未修改,请直接进行升级操作。

  1. 可选:使用以下任一方式对ack-slo-manager的ConfigMap进行备份。
    • 方式一:通过命令行使用kubectl的方式备份
      1. 根据原ConfigMap配置的命名空间(例如kube-system)和名称(例如ack-slo-manager-config),执行kubectl get cm -n kube-system ack-slo-manager-config -o yaml > slo-config.yaml命令,将原配置保存在名称为slo-config.yaml的文件中。
      2. 执行vim slo-config.yaml命令编辑上述文件,将ConfigMap的namespace字段修改为kube-system,将name字段修改为ack-slo-config,并删除ConfigMap中所有annotationslabels,避免升级时被自动覆盖。
      3. 执行kubectl apply -f slo-config.yaml 命令,将修改后的配置提交到集群中。
    • 方式二:通过控制台界面操作备份
      1. 记录原ConfigMap中的键值对。
        1. 在左侧导航栏中,单击配置管理 > 配置项,然后在页面顶部,选择在应用市场安装ack-slo-manager时指定的命名空间,默认为kube-system
        2. 在名称文本框中搜索ack-slo-manager-config,依次单击目标ConfigMap名称,记录ConfigMap的键值对。
      2. 使用原ConfigMap中的键值对,创建新的ConfigMap。
        1. 在左侧导航栏中,选择配置管理 > 配置项,然后在页面顶部,选择所有命名空间
        2. 配置项页面右上角,点击创建,输入配置项名称ack-slo-config,选择新配置的命名空间kube-system,单击+添加,输入上一步记录的键值对,点击创建
  2. 升级ack-slo-manager为最新版本。具体操作,请参见升级ack-slo-manager
    注意 若您修改过应用市场中ack-slo-manager的ConfigMap,则需要在ack-slo-manager参数配置对话框中,将步骤1备份的ConfigMap的名称(例如ack-slo-config)填入到对应的配置项中。

从resource-controller迁移至ack-slo-manager

ack-slo-manager支持原resource-controller的所有功能,若您的集群已安装resource-controller,请参考以下步骤完成从resource-controller到ack-slo-manager的迁移。

  1. 将resource-controller升级至最新版本。
    1. 登录容器服务管理控制台,在左侧导航栏中选择集群
    2. 集群列表页面的目标集群右侧,单击操作列下更多 > 组件管理
    3. 组件管理页面,搜索并单击resource-controller,然后在resource-controller卡片中单击升级
    4. 在弹出的升级对话框中,单击确定
  2. 安装并配置ack-slo-manager。
    1. 组件管理页面,搜索并单击ack-slo-manager,然后在ack-slo-manager卡片中单击安装
    2. 安装组件ack-slo-manager对话框,按需修改agentFeatureGates(ack-slo-agent的feature-gates控制开关)。
      1. 检查集群目前是否使用了动态修改Pod资源参数中的CPU Limit调节功能(即通过创建CRD或Pod Annotation的形式修改指定容器Cgroup参数文件cpu.cfs_quota_us)。若使用,请继续执行步骤ii;若未使用,请执行步骤c
      2. 修改ack-slo-agent的feature-gate控制开关,增加CPUBurst=false配置(使用半角逗号(,)分隔),关闭CPU策略模块,关闭后集群内所有容器的CPU Burst机制将不会生效,以此避免两个模块同时修改容器的Cgroup参数文件cpu.cfs_quota_us
      3. 对于容器的CPU资源弹性能力,强烈建议您使用CPU Burst性能优化策略功能,可以自动调整Pod的CPU资源弹性。更多信息,请参见CPU Burst性能优化策略
    3. 按需配置其他参数,然后单击确定
    4. 在集群管理页左侧导航栏中选择应用 > Helm,查看ack-slo-manager的部署状态。
      当ack-slo-manager的状态已部署,说明部署成功。
  3. 卸载resource-controller。
    1. 组件管理页面,搜索并单击resource-controller,然后在resource-controller卡片中单击卸载
    2. 卸载组件对话框中,单击确定

FAQ

组件安装时报错:no matches for kind "ServiceMonitor" in version "monitoring.coreos.com/v1" ensure CRDs are installed first

集群中未安装Prometheus。请参照ARMS Prometheus监控安装Prometheus组件,或在安装ack-slo-manager时取消选中ack-slo-manager开启Prometheus监控指标

变更记录

2022年09月

版本号 镜像地址 变更时间 变更内容 变更影响
v0.7.2 registry.cn-hangzhou.aliyuncs.com/acs/ack-slo-manager:v0.7.2 2022年09月16日 修复0.7.1版本引入的问题:拓扑感知调度对Pod不生效。
v0.7.1 registry.cn-hangzhou.aliyuncs.com/acs/ack-slo-manager:v0.7.1 2022年09月02日
  • 解决在CentOS 3内核环境下,使用拓扑感知调度时出现的CPU限流问题。
  • 支持Prometheus监控开关。
  • 支持资源画像控制台相关功能。
  • 取消应用市场的安装方式。

2022年08月

版本号 镜像地址 变更时间 变更内容 变更影响
v0.7.0 registry.cn-hangzhou.aliyuncs.com/acs/ack-slo-manager:v0.7.0 2022年08月08日 ack-slo-manager安装方式从应用市场迁移至组件管理。

2022年07月

版本号 镜像地址 变更时间 变更内容 变更影响
v0.6.0 registry.cn-hangzhou.aliyuncs.com/acs/ack-slo-manager:v0.6.0 2022年07月26日 优化内部相关接口,简化组件配置。

2022年06月

版本号 镜像地址 变更时间 变更内容 变更影响
v0.5.2 registry.cn-hangzhou.aliyuncs.com/acs/ack-slo-manager:v0.5.2 2022年06月14日
  • 优化内部相关接口。
  • 优化容器CPU QoS
  • 支持关闭ack-slo-manager命名空间的自动创建。
v0.5.1 registry.cn-hangzhou.aliyuncs.com/acs/ack-slo-manager:v0.5.1 2022年06月02日
  • 支持容器CPU QoS
  • 优化内部相关接口,自动清理已下线节点对应的拓扑信息ConfigMap。

2022年04月

版本号 镜像地址 变更时间 变更内容 变更影响
v0.5.0 registry.cn-hangzhou.aliyuncs.com/acs/ack-slo-manager:v0.5.0 2022年04月29日
v0.4.1 registry.cn-hangzhou.aliyuncs.com/acs/ack-slo-manager:v0.4.1 2022年04月14日
v0.4.0 registry.cn-hangzhou.aliyuncs.com/acs/ack-slo-manager:v0.4.0 2022年04月11日 优化slo-agent内存开销。

2022年02月

版本号 镜像地址 变更时间 变更内容 变更影响
v0.3.0 registry.cn-hangzhou.aliyuncs.com/acs/ack-slo-manager:v0.3.0 2022年02月25日

2021年12月

版本号 镜像地址 变更时间 变更内容 变更影响
v0.2.0 registry.cn-hangzhou.aliyuncs.com/acs/ack-slo-manager:v0.2.0 2021年12月10日

2021年09月

版本号 镜像地址 变更时间 变更内容 变更影响
v0.1.1 registry.cn-hangzhou.aliyuncs.com/acs/ack-slo-manager:v0.1.1-c2ccefa 2021年09月02日 优化内部相关接口。

2021年07月

版本号 镜像地址 变更时间 变更内容 变更影响
v0.1.0 registry.cn-hangzhou.aliyuncs.com/acs/ack-slo-manager:v0.1.0-09766de 2021年07月08日 支持负载感知调度