安装

本文将介绍如何安装计量和计费所需的组件。

INFO

从 ACP 4.5 开始,Cost Management 所依赖的监控插件已重命名:

  • ACP Monitoring for Prometheus 更名为 ACP Basic Monitoring。
  • ACP Monitoring for VictoriaMetrics 更名为 ACP Advanced Monitoring。

从 Customer Portal 下载插件时,请搜索新名称。重命名之前发布的插件包在上传后,平台中仍会显示原名称。

安装前注意事项

  • 从 Customer Portal 下载最新版本的 Cost Management Plugin,并通过 violet 将其上传到平台。

  • Cost Management Server、Cost Management Essentials 和 Cost Management Agent 协同工作,为平台提供完整的计量和计费功能。服务端组件支持与计量和计费相关的数据存储功能,而客户端组件负责数据收集和计费功能。

  • Cost Management Server 组件依赖 ClickHouse 作为其数据存储解决方案。您可以安装平台提供的 ACP Log Storage with Clickhouse 插件,也可以自行安装 ClickHouse 以进行集成。

  • Cost Management Essentials 需要与 Cost Management Server 组件集成。

  • Cost Management Agent 组件要求相应集群已安装监控组件,可以是 ACP Basic Monitoring(之前称为 ACP Monitoring for Prometheus)或 ACP Advanced Monitoring(之前称为 ACP Monitoring for VictoriaMetrics)。请确保提前成功安装其中一个组件。对于运行在 4.4.0 之前版本的 Alauda Container Platform 上的 VictoriaMetrics 集群,请参阅在 4.4.0 之前版本的 Alauda Container Platform 上为 VictoriaMetrics 启用所需指标。

通过 Console 安装 Cost Management Server Plugin

前提条件

  • Cost Management Server Plugin 组件依赖 ClickHouse 作为其数据存储解决方案。您可以安装平台提供的 ACP Log Storage with Clickhouse 插件,也可以自行安装 ClickHouse 以进行集成。

操作步骤

  1. 登录安装了 ACP Log Storage with Clickhouse 插件的集群,并获取 ClickHouse 集成信息:

    # Obtain Clickhouse connection address
    kubectl get feature log-center -o jsonpath='{.spec.accessInfo.clickhouse.address}'
    
    # Obtain Clickhouse username and password:
    kubectl get secret -n cpaas-system clickhouse-basic-auth -o jsonpath={.data.username}|base64 -d
    kubectl get secret -n cpaas-system clickhouse-basic-auth -o jsonpath={.data.password}|base64 -d
  2. 在左侧导航栏中,单击 Marketing Place > Plugin Management。

  3. 选择计划安装插件的集群。

  4. 找到 Cost Management Server 插件,并单击右侧操作栏中的 Install 按钮。

  5. 参考以下说明配置相关参数。

    参数描述
    Clickhouse Address配置 Clickhouse 连接地址
    Clickhouse Cluster NameClickhouse 的集群名称;平台创建的 Clickhouse 的默认名称为 replicated.
    Clickhouse Secret Name配置 Clickhouse 用户名和密码使用的 Secret
    Currency Unit选择用于显示费用的货币单位。
  6. 单击 Install。

通过 YAML 安装 Cost Management Server Plugin

前提条件

  • Cost Management Server Plugin 组件依赖 ClickHouse 作为其数据存储解决方案。您可以安装平台提供的 ACP Log Storage with Clickhouse 插件,也可以自行安装 ClickHouse 以进行集成。

操作步骤

  1. 检查可用版本

    通过在 global 集群中检查 ModulePlugin 和 ModuleConfig 资源,确保插件已发布:

    # kubectl get moduleplugin | grep cost-server
    cost-server                       30h
    # kubectl get moduleconfig | grep cost-server
    cost-server-v4.1.0                30h

    这表示集群中存在 ModulePlugin cost-server,并且已发布版本 v4.1.0。

  2. 创建 ModuleInfo

    创建 ModuleInfo 资源,无需配置任何参数即可安装插件:

    kind: ModuleInfo
    apiVersion: cluster.alauda.io/v1alpha1
    metadata:
      name: global-cost-server
      labels:
        cpaas.io/cluster-name: global
        cpaas.io/module-name: cost-server
        cpaas.io/module-type: plugin
    spec:
      version: v4.1.0
      config:
        global:
          clickhouse:
            address: https://xxx.xxx.xxx.xxx:xx/clickhouse
            authSecret: clickhouse-basic-auth
            cluster: replicated
          currency: CNY(¥)

    YAML 字段参考(cost-server):

    字段路径描述
    metadata.labels.cpaas.io/cluster-name安装插件的目标集群名称。
    metadata.labels.cpaas.io/module-name必须为 cost-server。
    metadata.labels.cpaas.io/module-type必须为 plugin。
    metadata.nameModuleInfo 名称(例如 <cluster>-cost-server)。
    spec.version要安装的插件版本。
    spec.config.global.clickhouse.address配置 Clickhouse 连接地址。
    spec.config.global.clickhouse.authSecret配置 Clickhouse 用户名和密码使用的 Secret。
    spec.config.global.clickhouse.clusterClickhouse 的集群名称;平台创建的 Clickhouse 的默认名称为 replicated.
    spec.config.global.currency选择用于显示费用的货币单位。支持:CNY(¥)/USD($)/THB(฿)/RUB(₽)/AUD(AU$)/CAD(CA$)/CHF(Fr.)/DKK(kr.)/EUR(€)/GBP(£)/IDR(Rp)/INR(₹)/JPY(JP¥)/HKD(HK)/SGD(SG$)
  3. 验证安装

    由于 ModuleInfo 名称会在创建后发生变化,请通过标签定位资源,以检查插件状态和版本:

    kubectl get moduleinfo -l cpaas.io/module-name=cost-server
    NAME                                             CLUSTER         MODULE            DISPLAY_NAME     STATUS    TARGET_VERSION   CURRENT_VERSION   NEW_VERSION
    global-e671599464a5b1717732c5ba36079795          global          cost-server       cost-server      Running   v4.1.0           v4.1.0            v4.1.0

    字段说明:

    • NAME:ModuleInfo 资源名称
    • CLUSTER:安装插件的集群
    • MODULE:插件名称
    • DISPLAY_NAME:插件的显示名称
    • STATUS:安装状态;Running 表示已成功安装并运行
    • TARGET_VERSION:计划安装的版本
    • CURRENT_VERSION:安装前的版本
    • NEW_VERSION:可安装的最新版本

通过 Console 安装 Cost Management Essentials Plugin

前提条件

  • Cost Management Essentials Plugin 需要与 Cost Management Server 组件集成。因此,您需要先安装 Cost Management Server plugin。

操作步骤

  1. 在左侧导航栏中,点击 营销中心 > 插件管理。

  2. 选择 global 集群。

  3. 找到 Cost Management Server plugin,然后点击右侧操作栏中的安装按钮。

  4. 选择已安装 Cost Management Server plugin 的集群名称。

  5. 点击 安装。

通过 YAML 安装 Cost Management Essentials Plugin

前提条件

  • Cost Management Essentials Plugin 需要与 Cost Management Server 组件集成。因此,您需要先安装 Cost Management Server plugin。
  1. 检查可用版本

    通过检查 global 集群中的 ModulePlugin 和 ModuleConfig 资源,确保插件已发布:

    # kubectl get moduleplugin | grep cost-api
    cost-api                       30h
    # kubectl get moduleconfig | grep cost-api
    cost-api-v4.1.0                30h

    这表示集群中存在 ModulePlugin cost-api,并且已发布版本 v4.1.0。

  2. 创建 ModuleInfo

    创建 ModuleInfo 资源,在不配置任何参数的情况下安装插件:

    kind: ModuleInfo
    apiVersion: cluster.alauda.io/v1alpha1
    metadata:
      name: global-cost-api
      labels:
        cpaas.io/cluster-name: global
        cpaas.io/module-name: cost-api
        cpaas.io/module-type: plugin
    spec:
      version: v4.1.0
      config:
        crossClusterDependency:
          costServer: business-1

    YAML 字段参考(cost-api):

    字段路径描述
    metadata.labels.cpaas.io/cluster-name必须为 global。
    metadata.labels.cpaas.io/module-name必须为 cost-api。
    metadata.labels.cpaas.io/module-type必须为 plugin。
    metadata.nameModuleInfo 名称(例如 <cluster>-cost-api)。
    spec.version要安装的插件版本。
    spec.config.crossClusterDependency.costServer配置已安装 Cost Management Server plugin 的集群名称。
  3. 验证安装

    由于 ModuleInfo 名称会在创建后发生变化,请通过标签定位资源,以检查插件状态和版本:

    kubectl get moduleinfo -l cpaas.io/module-name=cost-api
    NAME                                             CLUSTER         MODULE            DISPLAY_NAME     STATUS    TARGET_VERSION   CURRENT_VERSION   NEW_VERSION
    global-e671599464a5b1717732c5ba36079795          global          cost-api          cost-api         Running   v4.1.0           v4.1.0            v4.1.0

    字段说明:

    • NAME:ModuleInfo 资源名称
    • CLUSTER:安装插件的集群
    • MODULE:插件名称
    • DISPLAY_NAME:插件的显示名称
    • STATUS:安装状态;Running 表示已成功安装并运行
    • TARGET_VERSION:计划安装的版本
    • CURRENT_VERSION:安装前的版本
    • NEW_VERSION:可安装的最新版本

通过 Console 安装 Cost Management Agent Plugin

前提条件

  • Cost Management Agent Plugin 组件要求相应集群已安装监控组件,即 ACP Basic Monitoring(之前称为 ACP Monitoring for Prometheus)或 ACP Advanced Monitoring(之前称为 ACP Monitoring for VictoriaMetrics)。请确保提前成功安装其中一个组件。对于运行早于 4.4.0 版本 Alauda Container Platform 的 VictoriaMetrics 集群,请参阅启用早于 4.4.0 版本的 VictoriaMetrics 所需指标。

  • Cost Management Agent Plugin 需要与 Cost Management Server 组件集成。因此,您需要先安装 Cost Management Server plugin。

操作步骤

  1. 在左侧导航栏中,单击 Marketing Place > Plugin Management。

  2. 选择需要安装此插件的集群。

  3. 找到 Cost Management Agent plugin,然后单击右侧操作栏中的安装按钮。

  4. 选择已安装 Cost Management Server plugin 的集群名称。

  5. 单击安装。

通过 YAML 安装 Cost Management Agent Plugin

前提条件

  • Cost Management Agent Plugin 组件要求相应集群已安装监控组件,即 ACP Basic Monitoring(之前称为 ACP Monitoring for Prometheus)或 ACP Advanced Monitoring(之前称为 ACP Monitoring for VictoriaMetrics)。请确保提前成功安装其中一个组件。对于运行早于 4.4.0 版本 Alauda Container Platform 的 VictoriaMetrics 集群,请参阅启用早于 4.4.0 版本的 VictoriaMetrics 所需指标。

  • Cost Management Agent Plugin 需要与 Cost Management Server 组件集成。因此,您需要先安装 Cost Management Server plugin。

操作步骤

  1. 检查可用版本

    通过在 global 集群中检查 ModulePlugin 和 ModuleConfig 资源,确保插件已发布:

    # kubectl get moduleplugin | grep cost-agent
    cost-agent                       30h
    # kubectl get moduleconfig | grep cost-agent
    cost-agent-v4.1.0                30h

    这表示集群中存在 ModulePlugin cost-agent,并且已发布版本 v4.1.0。

  2. 创建 ModuleInfo

    创建 ModuleInfo 资源,以便在不配置任何参数的情况下安装插件:

    kind: ModuleInfo
    apiVersion: cluster.alauda.io/v1alpha1
    metadata:
      name: global-cost-agent
      labels:
        cpaas.io/cluster-name: global
        cpaas.io/module-name: cost-agent
        cpaas.io/module-type: plugin
    spec:
      version: v4.1.0
      config:
        crossClusterDependency:
          costServer: business-1

    YAML 字段参考(cost-agent):

    字段路径描述
    metadata.labels.cpaas.io/cluster-name安装插件的目标集群名称。
    metadata.labels.cpaas.io/module-name必须为 cost-agent。
    metadata.labels.cpaas.io/module-type必须为 plugin。
    metadata.nameModuleInfo 名称(例如 <cluster>-cost-agent)。
    spec.version要安装的插件版本。
    spec.config.crossClusterDependency.costServer配置已安装 Cost Management Server plugin 的集群名称。
  3. 验证安装

    由于 ModuleInfo 名称会在创建后发生变化,请通过标签定位资源,以检查插件状态和版本:

    kubectl get moduleinfo -l cpaas.io/module-name=cost-agent
    NAME                                             CLUSTER         MODULE            DISPLAY_NAME     STATUS    TARGET_VERSION   CURRENT_VERSION   NEW_VERSION
    global-e671599464a5b1717732c5ba36079795          global          cost-agent        cost-agent       Running   v4.1.0           v4.1.0            v4.1.0

在早于 4.4.0 的版本中为 VictoriaMetrics 启用所需指标

Metering and billing 支持将 Prometheus 和 VictoriaMetrics 用作计量集群的监控组件。

在 Alauda Container Platform 4.4.0 及更高版本中,VictoriaMetrics 会收集 metering and billing 所需的所有指标,因此无需额外配置。在更早版本中,VictoriaMetrics 随附的 kube-state-metrics 白名单未包含所有这些指标,因此必须手动启用缺失的指标。

WARNING

如果缺少这些指标,Cost Management Agent 将无法构建 Pod 分配数据。成本详情和使用情况统计中将完全没有 Pod 级数据,但项目配额计费仍可正常运行。请在安装 Cost Management Agent 之前完成此配置。

前提条件

  • 计量集群的监控组件为 ACP Advanced Monitoring(以前称为 ACP Monitoring for VictoriaMetrics),且 Alauda Container Platform 版本早于 4.4.0。
  • 你可以使用有权更新 ModuleInfo 资源的用户访问 global 集群。

操作步骤

在 global 集群上,对监控组件为 VictoriaMetrics 的每个计量集群分别执行以下步骤。

  1. 查找计量集群的 VictoriaMetrics ModuleInfo:

    kubectl get moduleinfo -l cpaas.io/module-name=victoriametrics,cpaas.io/cluster-name=<cluster-name>
  2. 将缺失的指标添加到 spec.valuesOverride:

    kubectl patch moduleinfo <moduleinfo-name> --type=merge -p '{
      "spec": {
        "valuesOverride": {
          "ait/chart-victoriametrics": {
            "exporter-kube-state": {
              "additionalKeepMetrics": [
                "kube_namespace_annotations",
                "kube_node_labels",
                "kube_persistentvolume_capacity_bytes",
                "kube_persistentvolumeclaim_info",
                "kube_persistentvolumeclaim_resource_requests_storage_bytes",
                "kube_pod_annotations",
                "kube_pod_container_status_running",
                "kube_pod_owner"
              ]
            }
          }
        }
      }
    }'

    additionalKeepMetrics 会与内置白名单合并,并同时应用于 kube-state-metrics 暴露的指标以及抓取时保留的指标。请勿直接修补渲染后的 Deployment 或 VMServiceScrape 对象:此类更改会被记录为 ResourcePatch,并在每次后续的 chart 部署时重放;只修补其中一个位置不会生效。

  3. 等待约 2 分钟,让插件完成调谐,并确认所有发行版本均已就绪:

    kubectl get moduleinfo <moduleinfo-name> -o jsonpath='{range .status.appReleases[*]}{.name}{"="}{.ready}{" "}{end}'

验证

  1. 在计量集群上,确认 kube-state-metrics 暴露了这些指标:

    kubectl -n cpaas-system get deploy kube-prometheus-exporter-kube-state \
      -o jsonpath='{.spec.template.spec.containers[0].command}' | tr ',' '\n' | grep metric-allowlist
  2. 在计量集群上,确认抓取时保留了这些指标:

    kubectl -n cpaas-system get vmservicescrape kube-prometheus-exporter-kube-state \
      -o jsonpath='{.spec.endpoints[0].metricRelabelConfigs[0].regex}' | tr '|' '\n' | grep kube_pod_owner

上面列出的八个指标必须出现在两个命令的输出中。收集到这些指标后,Cost Management Agent 将从下一个采集周期开始生成 Pod 级计量数据。