如何在阿里云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安装终于完成。

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

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
4天前
|
供应链 安全 Cloud Native
阿里云飞天企业版获【可信云·容器平台安全能力】先进级认证
阿里云飞天企业版容器系列产品获中国信息通信研究院【可信云·容器平台安全能力】先进级认证,这是飞天企业版容器产品获得《等保四级PaaS平台》和《 云原生安全配置基线规范V2.0》之后,本年度再一次获得行业权威认可,证明飞天企业版的容器解决方案具备符合行业标准的最高等级容器安全能力。
阿里云飞天企业版获【可信云·容器平台安全能力】先进级认证
|
27天前
|
人工智能 运维 监控
阿里云ACK容器服务生产级可观测体系建设实践
本文整理自2024云栖大会冯诗淳(花名:行疾)的演讲,介绍了阿里云容器服务团队在生产级可观测体系建设方面的实践。冯诗淳详细阐述了容器化架构带来的挑战及解决方案,强调了可观测性对于构建稳健运维体系的重要性。文中提到,阿里云作为亚洲唯一蝉联全球领导者的容器管理平台,其可观测能力在多项关键评测中表现优异,支持AI、容器网络、存储等多个场景的高级容器可观测能力。此外,还介绍了阿里云容器服务在多云管理、成本优化等方面的最新进展,以及即将推出的ACK AI助手2.0,旨在通过智能引擎和专家诊断经验,简化异常数据查找,缩短故障响应时间。
阿里云ACK容器服务生产级可观测体系建设实践
|
13天前
|
Prometheus Kubernetes 监控
OpenAI故障复盘 - 阿里云容器服务与可观测产品如何保障大规模K8s集群稳定性
聚焦近日OpenAI的大规模K8s集群故障,介绍阿里云容器服务与可观测团队在大规模K8s场景下我们的建设与沉淀。以及分享对类似故障问题的应对方案:包括在K8s和Prometheus的高可用架构设计方面、事前事后的稳定性保障体系方面。
|
23天前
|
Kubernetes 应用服务中间件 nginx
二进制安装Kubernetes(k8s)v1.32.0
本指南提供了一个详细的步骤,用于在Linux系统上通过二进制文件安装Kubernetes(k8s)v1.32.0,支持IPv4+IPv6双栈。具体步骤包括环境准备、系统配置、组件安装和配置等。
223 10
|
27天前
|
运维 Kubernetes 调度
阿里云容器服务 ACK One 分布式云容器企业落地实践
阿里云容器服务ACK提供强大的产品能力,支持弹性、调度、可观测、成本治理和安全合规。针对拥有IDC或三方资源的企业,ACK One分布式云容器平台能够有效解决资源管理、多云多集群管理及边缘计算等挑战,实现云上云下统一管理,提升业务效率与稳定性。
|
27天前
|
Kubernetes 算法 调度
阿里云 ACK FinOps成本优化最佳实践
本文源自2024云栖大会梁成昊演讲,讨论了成本优化策略的选择与实施。文章首先介绍了成本优化的基本思路,包括优化购买方式、调整资源配置等基础策略,以及使用弹性、资源混部等高级策略。接着,文章详细探讨了集群优化和应用优化的具体方法,如使用抢占式实例降低成本、通过资源画像识别并优化资源配置,以及利用智能应用弹性策略提高资源利用效率。
|
27天前
|
弹性计算 调度 数据中心
阿里云 ACK One 注册集群云上弹性:扩展业务新利器
随着企业数字化转型深入,传统IDC数据中心因物理容量限制,难以实现动态扩容,缺乏弹性能力。阿里云ACK One注册集群凭借其高度灵活性和丰富资源选择,成为解决此问题的最佳方案。通过与阿里云资源的整合,ACK One不仅实现了计算资源的按需扩展,提高了资源利用率,还通过按需付费模式降低了成本,使企业能够更高效地应对业务增长和高峰需求。
|
27天前
|
运维 Kubernetes Serverless
阿里云Argo X K8s玩转工作流引擎,实现大规模并行计算
本文基于2024云栖大会田双坤的演讲,介绍了Kubernetes作为云原生操作系统的角色及其在各类任务中的应用,重点探讨了Argo Workflows在Kubernetes上编排并行任务的能力。面对自建Argo Workflows的挑战,如稳定性、成本和安全性等问题,阿里巴巴云推出了全托管的Serverless Argo工作流,提供全托管、免运维、可观测和易集成的特点,显著提升了任务编排的效率和稳定性。适用于数据处理、科学计算、自动驾驶仿真等多个领域。
|
27天前
|
Kubernetes 容灾 调度
阿里云 ACK 高可用稳定性最佳实践
本文整理自2024云栖大会刘佳旭的演讲,主题为《ACK高可用稳定性最佳实践》。文章探讨了云原生高可用架构的重要性,通过Kubernetes的高可用案例分析,介绍了ACK在单集群高可用架构设计、产品能力和最佳实践方面的方法,包括控制面和数据面的高可用策略、工作负载高可用配置、企业版容器镜像服务高可用配置等内容,旨在帮助企业构建更加可靠和高效的应用运行环境。
|
27天前
|
存储 Kubernetes 关系型数据库
阿里云ACK备份中心,K8s集群业务应用数据的一站式灾备方案
本文源自2024云栖大会苏雅诗的演讲,探讨了K8s集群业务为何需要灾备及其重要性。文中强调了集群与业务高可用配置对稳定性的重要性,并指出人为误操作等风险,建议实施周期性和特定情况下的灾备措施。针对容器化业务,提出了灾备的新特性与需求,包括工作负载为核心、云资源信息的备份,以及有状态应用的数据保护。介绍了ACK推出的备份中心解决方案,支持命名空间、标签、资源类型等维度的备份,并具备存储卷数据保护功能,能够满足GitOps流程企业的特定需求。此外,还详细描述了备份中心的使用流程、控制台展示、灾备难点及解决方案等内容,展示了备份中心如何有效应对K8s集群资源和存储卷数据的灾备挑战。

热门文章

最新文章