如何在阿里云ACK安装Kubecost

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 背景工作需要研究kebecost,正好也看到阿里云ACK集成了kubecost的推送,想着装个研究研究。本文中依据Kubecost的文档:https://docs.kubecost.com/install-and-configure/install/provider-installations/alibaba-install 安装,文档寥寥几句看似容易,但是实际装起来坑还是蛮多的,这里记录一下以便

背景

工作需要研究kebecost,正好也看到阿里云ACK集成了kubecost的推送,想着装个研究研究。

本文中依据Kubecost的文档:https://docs.kubecost.com/install-and-configure/install/provider-installations/alibaba-install 安装,文档寥寥几句看似容易,但是实际装起来坑还是蛮多的,这里记录一下以便后人能快速安装。

安装步骤

本人使用的电脑是MacOs,本文主要以MacOs展开操作。

  1. 前提步骤:需要提前安装helm和kubectl,具体安装命令:
brew install kubectl
brew install helm
AI 代码解读

其他操作系统可参考文档:

Kubectl:https://kubernetes.io/zh-cn/docs/tasks/tools/

Helm:https://helm.sh/zh/docs/intro/install/

  1. 在安装Helm、Kubectl目录下(其他目录也行)新建文件 example_path,主要为执行步骤三命令。这里没有文件后缀,XXX为输入accessKeyID和Sercret,注意这里两行没有逗号:
{
	"alibaba_access_key_id": “XXX”
	"alibaba_secret_access_key": “XXX"
}
AI 代码解读

保存退出。

  1. 依据官网命令输入:
kubectl create secret generic alibaba-service-key -n kubecost –from-file=./example_path
AI 代码解读

报错error: exactly one NAME is required, got 2

解决办法需要将容器连接信息(下图公网访问下面这一大部分内容)作为文件config放置到~/.kube文件夹中,注意,如果没有.kube文件夹需要新建,否则内容将不会放到文件夹中;

继续执行官网命令

报错Error: unknown shorthand flag: 'f' in -from-file=./example_path

解决办法:命令修改为如下,其中from前面是-- ,官网给的是— 不对,修改后如下:

kubectl create secret generic alibaba-service-key -n kubecost --from-file=./example_path
AI 代码解读

报错error: failed to create secret namespaces "kubecost" not found

解决办法:未创建过命名空间,需要创建,执行:kubectl create ns kubecost 创建,再执行,成功了。

  1. 依据官网命令输入:
helm install kubecost/cost-analyzer -n kubecost -f values.yaml
AI 代码解读

报错Error: must either provide a name or specify --generate-name

解决办法:缺少创建名称,末尾加入 --generate-name,代表自动创建名称:

helm install kubecost/cost-analyzer -n kubecost -f values.yaml --generate-name 
AI 代码解读

报错Error: failed to download "kubecost/cost-analyzer" (hint: running `helm repo update` may help)

解决办法:缺少kubecost/cost-analyzer库,需要更新库,执行:

helm repo add kubecost https://kubecost.github.io/cost-analyzer/
helm repo update
AI 代码解读

成功执行:

     

之后再执行本步骤最开始的命令,成功:

根据提示,你以为依据指令输入 kubectl port-forward --namespace kubecost deployment/cost-analyzer-1679644373 9090,就可以了?

并不是!

提示容器状态为Pending,不是Running,有问题。

  1. 登陆ACK查看,发现两个Pod都没有启动:

实在不知道为什么了,点进去看Pod日志,只有一行:

{"code":"SERVER_ERROR_CODE","message":"Cannot invoke method getContent() on null object","requestId":"5f753e35-82b1-46ab-8bb7-b9d714e10570","successResponse":false}

无果,提工单:

工单说没有PVC,点开一看果然没有:

去存储卷中创建了一个:

依据工单人员提示,删除了旧的存储声明,然后又复制原有名称创建了一个,创建时候引用这个存储卷:

由于这里有两个存储声明,所以需要创建两个存储卷,分别在两个存储声明中引用,如下状态显示代表已完成:

  1. 重新部署,仍然报错,这次没说具体的问题,工单回复: ​

得,得把本地镜像push到ACR(容器镜像)上。

执行本操作需要有ACR的仓库,如果之前没接触过可能需要学习一下。

这个上传过程我和客服也是battle了好久,我就直接讲怎么成功的:

  1. 安装Docker: https://www.docker.com/products/docker-desktop/ ,我是安装了一个本地的客户端,安装后启动: ​

命令行中输入Docker --version,正常返回,表示Docker已经启动。

 

  1. 拉取镜像到本地,输入 docker pull XXX,XXX是镜像名称,从下方获取:

注意,上面截图中是我已经成功的,如果是第一次,在cost-analyzer-xxx得yaml中有2个Image,在cost-analyzer-xxx-kube-state-metrics 有1个Image,下面截图是cost-analyzer-xxx中的,咱们pull下来:

具体为:

docker pull k8s.gcr.io/kube-state-metrics/kube-state-metrics:v1.9.8
docker pull gcr.io/kubecost1/cost-model:prod-1.101.3
docker pull gcr.io/kubecost1/frontend:prod-1.101.3     
AI 代码解读

  1. 打开ACR权限相关内容:

  1. 上传镜像,具体参考下图位置,镜像ID通过 docker images 查看(需要docker pull之后查看),镜像版本自己写,最好和其名称一致,如kubecost-cost-model,方便之后选择。

注意,输入登录信息(docker login XXX)之前需要先设置密码:

  1. docker push之后,就可以在容器镜像里找到了,在选择镜像中选择,之后选择Tag,两个设置完之后点击更新。注意,cost-analyzer-xxx 和 cost-analyzer-xxx-kube-state-metrics 都需要改,我不知道有没有顺序问题,改完之后,就是正常了,如果还没有重新部署一下。 ​

  1. 至此,容器这里终于弄好了: ​

  1. 复制步骤四最后的开启命令,输入kubectl port……

  1. 访问  http://localhost:9090/ ,成功:

至此,折腾了我快一周的KubeCost安装终于完成。

上图可能还需要配置一些东西才会生效,我再研究研究,之后再继续更新文章。

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
打赏
0
0
1
0
3
分享
相关文章
2025 超详细!Lens Kubernetes IDE 多平台下载安装与集群管理教程
Lens 是一款企业级 Kubernetes 可视化操作平台,2025版实现了三大技术革新:AI智能运维(异常检测准确率98.7%)、多云联邦管理(支持50+集群)和实时3D拓扑展示。本文介绍其安装环境、配置流程、核心功能及高阶技巧,帮助用户快速上手并解决常见问题。适用于 Windows、macOS 和 Ubuntu 系统,需满足最低配置要求并前置依赖组件如 kubectl 和 Helm。通过 Global Cluster Hub 实现多集群管理,AI辅助故障诊断提升运维效率,自定义监控看板和插件生态扩展提供更多功能。
阿里云ACK One:注册集群支持ACS算力——云原生时代的计算新引擎
阿里云ACK One:注册集群支持ACS算力——云原生时代的计算新引擎
147 10
阿里云协同万兴科技落地ACK One GitOps方案,全球多机房应用自动化发布,效率提升50%
阿里云协同万兴科技落地ACK One GitOps方案,全球多机房应用自动化发布,效率提升50%
139 2
部署DeepSeek但IDC GPU不足,阿里云ACK Edge虚拟节点来帮忙
部署DeepSeek但IDC GPU不足,阿里云ACK Edge虚拟节点来帮忙
基于阿里云容器服务(ACK)的微服务架构设计与实践
本文介绍如何利用阿里云容器服务Kubernetes版(ACK)构建高可用、可扩展的微服务架构。通过电商平台案例,展示基于Java(Spring Boot)、Docker、Nacos等技术的开发、容器化、部署流程,涵盖服务注册、API网关、监控日志及性能优化实践,帮助企业实现云原生转型。
基于阿里云Serverless Kubernetes(ASK)的无服务器架构设计与实践
无服务器架构(Serverless Architecture)在云原生技术中备受关注,开发者只需专注于业务逻辑,无需管理服务器。阿里云Serverless Kubernetes(ASK)是基于Kubernetes的托管服务,提供极致弹性和按需付费能力。本文深入探讨如何使用ASK设计和实现无服务器架构,涵盖事件驱动、自动扩展、无状态设计、监控与日志及成本优化等方面,并通过图片处理服务案例展示具体实践,帮助构建高效可靠的无服务器应用。
基于阿里云容器服务Kubernetes版(ACK)的微服务架构设计与实践
本文介绍了如何基于阿里云容器服务Kubernetes版(ACK)设计和实现微服务架构。首先概述了微服务架构的优势与挑战,如模块化、可扩展性及技术多样性。接着详细描述了ACK的核心功能,包括集群管理、应用管理、网络与安全、监控与日志等。在设计基于ACK的微服务架构时,需考虑服务拆分、通信、发现与负载均衡、配置管理、监控与日志以及CI/CD等方面。通过一个电商应用案例,展示了用户服务、商品服务、订单服务和支付服务的具体部署步骤。最后总结了ACK为微服务架构提供的强大支持,帮助应对各种挑战,构建高效可靠的云原生应用。
部署DeepSeek但IDC GPU不足,阿里云ACK Edge虚拟节点来帮忙
介绍如何使用ACK Edge与虚拟节点满足DeepSeek部署的弹性需求。
DeepSeek大解读系列公开课上新!阿里云专家主讲云上智能算力、Kubernetes容器服务、DeepSeek私有化部署
智猩猩「DeepSeek大解读」系列公开课第三期即将开讲,聚焦阿里云弹性计算助力大模型训练与部署。三位专家将分别讲解智能算力支撑、Kubernetes容器服务在AI场景的应用实践、以及DeepSeek一键部署和多渠道应用集成,分享云计算如何赋能大模型发展。欲观看直播,可关注【智猩猩GenAI视频号】预约。 (239字符)
从单集群到多集群的快速无损转型:ACK One 多集群应用分发
本文介绍如何利用阿里云的分布式云容器平台ACK One的多集群应用分发功能,结合云效CD能力,快速将单集群CD系统升级为多集群CD系统。通过增加分发策略(PropagationPolicy)和差异化策略(OverridePolicy),并修改单集群kubeconfig为舰队kubeconfig,可实现无损改造。该方案具备多地域多集群智能资源调度、重调度及故障迁移等能力,帮助用户提升业务效率与可靠性。

热门文章

最新文章

推荐镜像

更多
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等