k8s的集群信息应该可以通过kubectl top pod -n 集群命名空间进行查询,每个集群肯定有单独的命名空间,这时候只需要把每个命名空间下的pod资源加起来应该就是每个集群实际使用的资源量,这里主要是cpu和内存
收起1、不大的项目可以通过群集的命名空间的方式统计资源并计算费用
2、大型的项目可以直接参照公有云k8s 群集计费的那套方式
● 按产品或者业务线来划分名字空间,不允许跨名字空间互相访问。
○ 如果存在多个产品或业务线共用的服务,可以在每个产品的名字空间分别部署一个副本,并把它们当成不同的服务来处理。
○ 这样名字空间就是成本划分的一个维度,还可以在名字空间上为每个产品设置资源上限与预警。
● 按产品或业务线来划分节点组,通过节点组的标签来进行成本划分
○ 这是第二个维度,但是节点组划分得太细,可能会导致资源利用不够充分。
○ 这个方案仅供参考,不一定好用
● 为 Kubernetes 服务设计与其他云资源一致的成本标签,添加到 Pod 的 label 中,通过 kubecost 等手段,基于 label 进行更细致的成本分析
○ 标签一致的好处是可以统一分析 Kubernetes 与其他云资源的成本
● 定期(比如每周一) check 云成本变化,定位并解决成本异常
● 建立自动化的成本异常检测与告警机制(部分云服务有提供类似的服务,也可自建),收到告警即触发成本异常分析任务
● 始终将资源标签准确率维持在较高数值,准确率低于一定数值即自动告警,触发标签修正任务
● 将成本上升的压力与成本下降的效益覆盖到开发人员,授权他们跟踪服务的 Kubernetes 利用率与成本,以激励开发人员与 SRE 合作管控服务成本。
针对多个k8s集群承载公司多个项目,每个项目的子服务运行在各个集群中,如何较好统计个项目的成本,可以考虑以下方案:
总之,针对多个k8s集群承载公司多个项目,每个项目的子服务运行在各个集群中,可以通过云服务商提供的成本计算工具、容器管理平台提供的监控工具、第三方成本管理工具等方式来进行成本分析和管理。