安装

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

预安装注意事项

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

  • Cost Management ServerCost Management EssentialsCost Management Agent 协同工作,提供平台的整体计量和计费功能。服务端组件提供与计量和计费相关的数据存储能力,而客户端组件负责数据采集和计费能力。

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

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

  • Cost Management Agent 组件要求对应集群已安装监控组件,即 ACP Monitor with PrometheusACP Monitor with VictoriaMetrics。请确保其中之一已提前成功安装。对于运行 Alauda Container Platform 4.4.0 之前版本的 VictoriaMetrics 集群,请参见 在 4.4.0 之前版本为 VictoriaMetrics 启用所需指标

通过 Console 安装 Cost Management Server 插件

前提条件

  • 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 插件

前提条件

  • 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 插件

前提条件

  • Cost Management Essentials Plugin 需要与 Cost Management Server 组件集成。因此你需要先安装 Cost Management Server 插件。

操作步骤

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

  2. 选择 global 集群。

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

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

  5. 单击 Install

通过 YAML 安装 Cost Management Essentials 插件

前提条件

  • Cost Management Essentials Plugin 需要与 Cost Management Server 组件集成。因此你需要先安装 Cost Management Server 插件。
  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 插件

前提条件

  • Cost Management Agent Plugin 组件要求对应集群已安装监控组件,即 ACP Monitor with PrometheusACP Monitor with VictoriaMetrics。请确保其中之一已提前成功安装。对于运行 Alauda Container Platform 4.4.0 之前版本的 VictoriaMetrics 集群,请参见 在 4.4.0 之前版本为 VictoriaMetrics 启用所需指标

  • Cost Management Agent Plugin 需要与 Cost Management Server 组件集成。因此你需要先安装 Cost Management Server 插件。

操作步骤

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

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

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

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

  5. 单击 Install

通过 YAML 安装 Cost Management Agent 插件

前提条件

  • Cost Management Agent Plugin 组件要求对应集群已安装监控组件,即 ACP Monitor with PrometheusACP Monitor with VictoriaMetrics。请确保其中之一已提前成功安装。对于运行 Alauda Container Platform 4.4.0 之前版本的 VictoriaMetrics 集群,请参见 在 4.4.0 之前版本为 VictoriaMetrics 启用所需指标

  • Cost Management Agent Plugin 需要与 Cost Management Server 组件集成。因此你需要先安装 Cost Management Server 插件。

操作步骤

  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 启用所需指标

计量和计费支持 Prometheus 和 VictoriaMetrics 作为被计量集群的监控组件。

在 Alauda Container Platform 4.4.0 及更高版本中,VictoriaMetrics 会采集计量和计费所需的全部指标,因此无需额外配置。在更早版本中,随 VictoriaMetrics 提供的 kube-state-metrics allowlist 不包含所有这些指标,因此缺失的指标需要手动启用。

WARNING

如果这些指标缺失,Cost Management Agent 将无法构建 Pod 分配信息。费用明细和用量统计将完全不包含 Pod 级别数据,而项目配额计费仍可正常工作。请在安装 Cost Management Agent 之前完成此配置。

前提条件

  • 被计量集群的监控组件是 ACP Monitor with 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 会与内置 allowlist 合并,并同时应用于 kube-state-metrics 暴露的指标以及抓取时保留的指标。不要直接 patch 渲染后的 DeploymentVMServiceScrape 对象:这种更改会被记录为 ResourcePatch,并在后续每次 chart 部署时重新应用,而且只 patch 其中一个位置不会产生任何效果。

  3. 等待大约 2 分钟,让插件完成收敛,并确认所有 release 都已就绪:

    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

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