本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。
本文介绍如何查看集群成本洞察及集群成本洞察的能力。
前提条件
确保Kubernetes集群的版本为1.18.8及以上,否则请升级集群。具体操作,请参见手动升级集群。
已开启阿里云Prometheus监控。具体操作,请参见开启阿里云Prometheus监控。
开启成本洞察功能
开启成本洞察
步骤一:为成本洞察组件配置RAM权限
通过onectl配置
在本地安装配置onectl。具体操作,请参见通过onectl管理注册集群。
执行以下命令,为成本洞察组件配置RAM权限。
onectl ram-user grant --addon ack-cost-exporter
预期输出:
Ram policy ack-one-registered-cluster-policy-ack-cost-exporter granted to ram user ack-one-user-ce313528c3 successfully.
通过控制台配置
创建自定义权限策略。ack-cost-exporter组件所需的权限策略内容如下。
为RAM用户创建AccessKey。
警告建议您参见AccessKey网络访问限制策略配置网络策略,将AccessKey调用来源控制在可信的网络环境内,提升AccessKey的安全性。
使用AccessKey在注册集群中创建名为alibaba-addon-secret的Secret资源。执行以下命令,创建ack-cost-exporter组件使用的Secret。
kubectl -n kube-system create secret generic alibaba-addon-secret --from-literal='access-key-id=<your AccessKey ID>' --from-literal='access-key-secret=<your AccessKey Secret>'
步骤二:安装ack-cost-exporter组件
通过onectl安装
执行以下命令,安装ack-cost-exporter组件。
onectl addon install ack-cost-exporter
预期输出:
Addon ack-cost-exporter, version **** installed.
通过控制台安装
登录容器服务管理控制台,在左侧导航栏选择集群列表。
在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择 。
若Helm页面存在ack-cost-exporter安装记录,请删除对应的安装记录后,再按照后续操作重新接入。
在集群管理页左侧导航栏,选择 。
在组件管理页面,单击日志与监控页签,找到ack-cost-exporter组件,单击右下角的安装。然后单击确认。
跨账号开启成本洞察
在使用账号A的ACK注册集群纳管账号B下的ACK集群时,需要在账号B的ACK集群中授权成本洞察功能,以便该功能可以访问账号B的账单数据。
步骤一:为账号B配置RAM权限并安装组件
登录容器服务管理控制台,在左侧导航栏选择集群列表。
在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择 。
授予访问ACK集群账单数据的权限。
ACK托管集群:系统会自动授予相关权限。完成授权后,系统会创建AliyunCSManagedCostRole角色,阿里云Prometheus使用该角色访问您在费用与成本的账单数据并进行成本洞察。
您也可以单击访问控制快速授权链接,在访问控制快速授权页面,单击确认授权。
ACK专有集群:
说明账号B中ack集群无需安装Prometheus,若您已安装,请先卸载ack-arms-prometheus组件。具体操作,请参见管理组件。
步骤二:为账号A安装组件
在注册集群所在账号A中安装Prometheus。具体操作,请参见将阿里云Prometheus接入注册集群。
在注册集群所在的账号A中,配置ack-cost-exporter组件参数
AckRegisteredClusterId
为账号B中ACK集群的clusterId
。登录容器服务管理控制台,在左侧导航栏选择集群列表。
在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择 。
若Helm页面存在ack-cost-exporter安装记录,请删除对应的安装记录后,再按照后续操作重新接入。
在集群管理页左侧导航栏,选择 。
在组件管理页面,单击日志与监控页签,找到ack-cost-exporter组件,单击右下角的安装。
在安装组件 ack-cost-exporter页面中,配置registeredAckClusterId为账号B中集群的clusterId,然后单击确定。
注意事项
开启成本洞察功能后,账单数据将在次日08:00自动显示。选择右上角下拉菜单,可查看不同时间范围的集群成本数据。
集群维度成本分析
筛选维度
功能 | 序号 | 描述 |
集群成本统计选项 | ① | 集群成本统计指标选项。
更多信息,请参见账单详情。 说明 集群中应用部分成本统计只会按原价账单成本进行统计,包括Namespace、Pod等应用维度成本统计。 |
成本分摊模型选项 | ② | 成本分摊模型选项,包含单资源模型和权重混合资源模型,详情请参见成本估算策略介绍。
|
时间范围 | ③ | 大盘时间范围,默认为最近7天。您可以设置该项查看不同时间范围的成本、资源趋势。 |
集群成本概览
功能 | 序号 | 描述 |
查看成本分摊模型 | ① | 此数据结果与选择的成本分摊模型选项有关。大盘默认CPU模型选项,使用CPU资源请求量估算Pod成本。 |
通过昨日、本周、本月花费统计对集群成本概要分析 | ② | 成本费用统计,其中昨日集群花费、花费日环比、本周累计花费和本月累计花费为本集群的云资源的账单成本统计。 本周累计、本月累计花费分别为自然周、自然月的账单花费统计。由于账单出账周期存在T+1延迟,周一将不显示本周累计花费数据,每月第一日也将不显示本月累计花费的统计值。 花费日环比为昨日集群成本与前一天之间的环比。绿色表示降低,红色表示增长。 |
通过成本趋势判断集群成本、资源浪费概要情况 | ③ | 集群花费和集群容量趋势图,黄色曲线表示成本消费,蓝色曲线表示实际的集群容量。通常情况下,两条曲线会存在一定的相关性。 对比两者相关性,如果发现两者呈现趋势不一致,表明集群的单位核成本异常。请检查是否有资源花费过高。 |
以命名空间维度查看实时成本估算和费用分摊 | ④⑤ | ④为集群内各命名空间的实时估算成本,命名空间成本是其中所有Pod估算成本之和,⑤为各命名空间的费用分摊值,是命名空间按估算比例对集群实际费用的分摊。 说明
一个集群中的节点规格和付费类型可能不同。通过命名空间分账时,不能仅通过每个命名空间的资源申请值进行判断,还需要考虑命名空间下Pod所在节点的情况。 成本洞察将每个节点的实时费用进行了转换。在统计命名空间维度的费用时,转换为 用户折扣、代金券抵扣、包年包月等各种延迟计费策略可能会导致命名空间的成本费用和集群的实际账单费用不一致。您可通过命名空间的成本占比乘以集群总费用的方式进行分账。 |
稳定性&效率分析
功能 | 序号 | 描述 |
查看集群总资源用量 | ① | 集群中各种QoS的Pod数量以及总资源用量。 |
查看集群Pod资源使用率 | ② | 集群所有Pod的基础信息和资源使用率(Usage/Request),支持过滤和排序。可通过该功能批量查看集群中资源水位最高或最低的工作负载。 |
查看集群Burstable Pod的资源配置情况 | ③ | QoS类为Burstable Pod的资源配置情况,支持过滤和排序。可通过该功能查看每个Burstable Pod的CPU、内存等资源的请求(Request)和限制(Limit)情况,便于了解Pod所消耗的集群资源并识别潜在的资源瓶颈。 |
查看集群中BestEffort Pod的资源使用量 | ④ | QoS类为BestEffort Pod的资源配置情况,这类Pod一般具有较高稳定性风险。可通过过滤和排序列表检查是否有预期外的BestEffort Pod,以规避风险。 |
关于稳定性&效率分析功能的更多信息,请参见使用成本洞察识别集群资源风险。
集群费用分析
功能 | 序号 | 描述 |
通过云产品费用趋势与比例分析云产品成本 | ①② | ③为集群中各云产品的成本花费占比统计,④为集群中各云产品的成本花费趋势统计。 一个集群中会包含多种云产品,不同云产品的使用方式、计费模型不同,会导致云产品产生的费用存在差异。可通过成本趋势和组合查看不同的云产品消费情况,以进行成本决策。 |
通过集群总成本趋势分析集群成本 | ③ | 每日集群的总费用成本趋势统计。 |
通过节点池成本费用趋势分析集群成本 | ④ | 集群中各节点池或虚拟节点的节点账单成本分析。 |
以命名空间维度查看实时成本估算趋势 | ⑤ | 集群中节点的规格和付费类型可能不同。通过命名空间进行分账时,不能仅通过每个命名空间的资源申请值进行判断,还需要考虑命名空间下Pod所在节点的情况。 成本洞察将每个节点的实时费用进行了转换。在统计命名空间维度的费用时,转换为 用户折扣、代金券抵扣、包年包月等各种延迟计费策略可能会导致命名空间的成本费用和集群的实际账单费用不一致。您可通过命名空间的成本占比乘以集群总费用的方式进行分账。 |
集群的计算资源请求、使用率趋势 | ⑥ | 使用场景:
趋势图含义:
分析流程:
|
集群计费详细信息 | ⑦⑧ | 云产品维度、云产品实例维度的集群每日账单列表。 |
使用成本洞察分析云下IDC节点及应用的成本
成本洞察支持注册集群中IDC节点以及节点上应用的成本洞察分析能力。成本洞察默认以0.2元/Core*Hour的单价计算注册集群中IDC节点以及节点上应用的成本。您可以通过以下方式配置自定义IDC节点的单价。
为所有IDC节点配置统一的价格
在kube-system命名空间下,通过为ack-cost-exporter的Deployment中配置env环境变量参数
DefaultIDCPricePerCPUCoreHour
,配置所有IDC节点的统一价格。说明此处价格为每单位CPU核时(元/Core*Hour)的价格。
env: # 配置每台IDC节点每单位CPU核时价格为0.3元。 - name: DefaultIDCPricePerCPUCoreHour value: "0.3"
为某个节点配置单独的价格
在对应节点Node中增加label
"node.kubernetes.io/price-per-day”
,为该节点单独配置节点价格。说明此处价格为此节点一天的总价。
执行以下命令,为某个节点配置定义每天该节点总价为100元。
kubectl label nodes <node-name> node.kubernetes.io/price-per-day="100"
常见问题
为什么开启成本可视化后没有数据显示?
检查RAM角色授权操作是否完成,请参见开启成本分析功能的步骤3。 成本分析需要集群的监控数据和费用数据,监控数据在开启后3分钟内开始采集,费用数据将在集群开启成本分析后的第二天08: 00显示。
检查集群是否配置NAT网关。由于部分地域不支持通过内网endpoint查询账单,请确认您的集群具备访问公网能力。
花费日环比和明日预测花费需要连续采集两天的费用数据后才显示。
为什么命名空间的费用相加与实际的费用账单不相等?
命名空间的费用通过成本估算得出,并非直接通过账单分析。费用估算通过目录价进行计算。因此,当集群的花费包含代金券、折扣、节约计划等抵扣策略时,可能出现一些数据偏差。您可通过命名空间的比例乘以集群总费用进行分账。
为什么有些节点上的Pod数据无法获取成本数据?
检查RAM角色授权操作已完成,并确认授权策略中包含"ecs:DescribeDisks"权限。具体操作,请参见开启成本分析功能的步骤3。
为什么账单中展示的云产品没有包括集群使用的所有云产品?
成本分析只统计本集群独享的云产品。多集群共享的云产品不在成本分析的账单统计范围内。
成本洞察功能依赖费用与成本控制台的费用标签功能,即依赖于云产品标签中的特定标识(key:value=ack.aliyun.com:{{集群ClusterId}}
)来实现集群成本的追踪与统计。如果您在费用标签页面关闭了此标签,那么集群级别的成本统计将会失效。为了解决成本统计失效问题,请重新在费用标签管理页面启用ack.aliyun.com
和ack.alibabacloud.com/nodepool-id
标签。
为什么本月/本周累计花费比实际低
集群从成本洞察组件成功开通后才开始统计产生的费用,不会统计组件开通前的数据。