如何在阿里云ACK安装Kubecost

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: 背景工作需要研究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搭建和管理企业级网站应用
相关文章
|
16天前
|
弹性计算 人工智能 Serverless
阿里云ACK One:注册集群云上节点池(CPU/GPU)自动弹性伸缩,助力企业业务高效扩展
在当今数字化时代,企业业务的快速增长对IT基础设施提出了更高要求。然而,传统IDC数据中心却在业务存在扩容慢、缩容难等问题。为此,阿里云推出ACK One注册集群架构,通过云上节点池(CPU/GPU)自动弹性伸缩等特性,为企业带来全新突破。
|
1月前
|
专有云 Serverless 持续交付
亚太唯一,阿里云再度入选Gartner®容器管理魔力象限领导者
Gartner正式发布 2024《容器管理魔力象限》报告,阿里云再度成为中国唯一一家入选「领导者象限」的科技公司。
|
29天前
|
人工智能 专有云 Serverless
亚太唯一!阿里云再度入选Gartner®容器管理魔力象限领导者
亚太唯一!阿里云再度入选Gartner®容器管理魔力象限领导者
104 2
|
9天前
|
Kubernetes Ubuntu Linux
我应该如何安装Kubernetes
我应该如何安装Kubernetes
|
1月前
|
Kubernetes Ubuntu Docker
从0开始搞K8S:使用Ubuntu进行安装(环境安装)
通过上述步骤,你已经在Ubuntu上成功搭建了一个基本的Kubernetes单节点集群。这只是开始,Kubernetes的世界广阔且深邃,接下来你可以尝试部署应用、了解Kubernetes的高级概念如Services、Deployments、Ingress等,以及探索如何利用Helm等工具进行应用管理,逐步提升你的Kubernetes技能树。记住,实践是最好的老师,不断实验与学习,你将逐渐掌握这一强大的容器编排技术。
120 1
|
1月前
|
Kubernetes Linux 开发工具
centos7通过kubeadm安装k8s 1.27.1版本
centos7通过kubeadm安装k8s 1.27.1版本
|
1月前
|
存储 Kubernetes 负载均衡
基于Ubuntu-22.04安装K8s-v1.28.2实验(四)使用域名访问网站应用
基于Ubuntu-22.04安装K8s-v1.28.2实验(四)使用域名访问网站应用
28 1
|
1月前
|
负载均衡 应用服务中间件 nginx
基于Ubuntu-22.04安装K8s-v1.28.2实验(二)使用kube-vip实现集群VIP访问
基于Ubuntu-22.04安装K8s-v1.28.2实验(二)使用kube-vip实现集群VIP访问
51 1
|
1月前
|
Kubernetes Docker 容器
rancher docker k8s安装(二)
rancher docker k8s安装(二)
43 0
|
1月前
|
Kubernetes 容器
基于Ubuntu-22.04安装K8s-v1.28.2实验(三)数据卷挂载NFS(网络文件系统)
基于Ubuntu-22.04安装K8s-v1.28.2实验(三)数据卷挂载NFS(网络文件系统)
131 0