如何在阿里云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

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

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"
}

保存退出。

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

报错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

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

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

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

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

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

helm install kubecost/cost-analyzer -n kubecost -f values.yaml --generate-name 

报错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

成功执行:

     

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

根据提示,你以为依据指令输入 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     

  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安装终于完成。

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

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
22天前
|
存储 Kubernetes 网络安全
关于阿里云 Kubernetes 容器服务(ACK)添加镜像仓库的快速说明
本文介绍了在中国大陆地区因网络限制无法正常拉取 Docker 镜像的解决方案。作者所在的阿里云 Kubernetes 集群使用的是较旧版本的 containerd(1.2x),且无法直接通过 SSH 修改节点配置,因此采用了一种无需更改 Kubernetes 配置文件的方法。通过为 `docker.io` 添加 containerd 的镜像源,并使用脚本自动修改 containerd 配置文件中的路径错误(将错误的 `cert.d` 改为 `certs.d`),最终实现了通过多个镜像站点拉取镜像。作者还提供了一个可重复运行的脚本,用于动态配置镜像源。虽然该方案能缓解镜像拉取问题,
180 2
|
8月前
|
Cloud Native Serverless 数据中心
阿里云ACK One:注册集群支持ACS算力——云原生时代的计算新引擎
阿里云ACK One:注册集群支持ACS算力——云原生时代的计算新引擎
236 10
|
7月前
|
人工智能 运维 Kubernetes
2025 超详细!Lens Kubernetes IDE 多平台下载安装与集群管理教程
Lens 是一款企业级 Kubernetes 可视化操作平台,2025版实现了三大技术革新:AI智能运维(异常检测准确率98.7%)、多云联邦管理(支持50+集群)和实时3D拓扑展示。本文介绍其安装环境、配置流程、核心功能及高阶技巧,帮助用户快速上手并解决常见问题。适用于 Windows、macOS 和 Ubuntu 系统,需满足最低配置要求并前置依赖组件如 kubectl 和 Helm。通过 Global Cluster Hub 实现多集群管理,AI辅助故障诊断提升运维效率,自定义监控看板和插件生态扩展提供更多功能。
|
8月前
|
Kubernetes 监控 Serverless
基于阿里云Serverless Kubernetes(ASK)的无服务器架构设计与实践
无服务器架构(Serverless Architecture)在云原生技术中备受关注,开发者只需专注于业务逻辑,无需管理服务器。阿里云Serverless Kubernetes(ASK)是基于Kubernetes的托管服务,提供极致弹性和按需付费能力。本文深入探讨如何使用ASK设计和实现无服务器架构,涵盖事件驱动、自动扩展、无状态设计、监控与日志及成本优化等方面,并通过图片处理服务案例展示具体实践,帮助构建高效可靠的无服务器应用。
|
7月前
|
安全 持续交付 云计算
课时5:阿里云容器服务:最原生的集成Docker和云服务
阿里云容器服务以服务化形式构建容器基础设施,大幅提升开发效率,简化应用部署流程。通过Docker容器和DevOps工具(如Jenkins),实现自动化部署与迭代,优化企业内部复杂部署问题。该服务支持GPU调度、混合云架构无缝迁移,并与阿里云产品体系无缝集成,提供安全防护、网络负载均衡等多重功能支持。凭借微服务架构,帮助企业突破业务瓶颈,提高资源利用率,轻松应对海量流量。
239 0
课时5:阿里云容器服务:最原生的集成Docker和云服务
|
8月前
|
Kubernetes 持续交付 开发工具
阿里云协同万兴科技落地ACK One GitOps方案,全球多机房应用自动化发布,效率提升50%
阿里云协同万兴科技落地ACK One GitOps方案,全球多机房应用自动化发布,效率提升50%
231 2
|
8月前
|
监控 Kubernetes Cloud Native
基于阿里云容器服务Kubernetes版(ACK)的微服务架构设计与实践
本文介绍了如何基于阿里云容器服务Kubernetes版(ACK)设计和实现微服务架构。首先概述了微服务架构的优势与挑战,如模块化、可扩展性及技术多样性。接着详细描述了ACK的核心功能,包括集群管理、应用管理、网络与安全、监控与日志等。在设计基于ACK的微服务架构时,需考虑服务拆分、通信、发现与负载均衡、配置管理、监控与日志以及CI/CD等方面。通过一个电商应用案例,展示了用户服务、商品服务、订单服务和支付服务的具体部署步骤。最后总结了ACK为微服务架构提供的强大支持,帮助应对各种挑战,构建高效可靠的云原生应用。
|
8月前
|
弹性计算 监控 持续交付
面对热点事件,阿里云如何通过云上弹性与容器服务帮助客户应对流量洪峰
面对热点事件,阿里云如何通过云上弹性与容器服务帮助客户应对流量洪峰
176 0
|
8月前
|
边缘计算 调度 对象存储
部署DeepSeek但IDC GPU不足,阿里云ACK Edge虚拟节点来帮忙
部署DeepSeek但IDC GPU不足,阿里云ACK Edge虚拟节点来帮忙
134 0
|
8月前
|
监控 Cloud Native Java
基于阿里云容器服务(ACK)的微服务架构设计与实践
本文介绍如何利用阿里云容器服务Kubernetes版(ACK)构建高可用、可扩展的微服务架构。通过电商平台案例,展示基于Java(Spring Boot)、Docker、Nacos等技术的开发、容器化、部署流程,涵盖服务注册、API网关、监控日志及性能优化实践,帮助企业实现云原生转型。

推荐镜像

更多