AKS 集群离线部署 kube-state-metrics 文档

1. 场景说明

由于 AKS 节点无法直接访问外网镜像仓库或 GitHub,在线执行 Helm 安装时容易出现以下问题:

  • Helm 下载 chart 包失败

  • GitHub 下载中断,提示 unexpected EOF

  • 容器镜像拉取失败

  • Pod 状态为 ImagePullBackOff

  • Pod 状态为 ErrImagePull

  • Pod 状态为 InvalidImageName

因此建议采用:

  1. 手动下载 Helm chart 包

  2. 使用国内可访问镜像

  3. 本地 Helm 安装


2. 创建 monitoring 命名空间

复制代码
kubectl create namespace monitoring --kubeconfig ./kubeconfig.yaml

如果已经存在,可忽略报错。


3. 创建 kube-state-metrics 配置文件

创建 kube-state-metrics-values.yaml

复制代码
image:
  repository: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/kube-state-metrics
  tag: v2.12.0
  pullPolicy: IfNotPresent

说明:

  • repository 使用华为云公共镜像仓库

  • 避免默认访问 registry.k8s.io

  • tag 使用 v2.12.0

  • pullPolicy 设置为 IfNotPresent


4. 下载 Helm Chart 包

复制代码
mkdir -p /root/yy/charts
cd /root/yy/charts

下载 kube-state-metrics chart:

复制代码
wget https://github.com/prometheus-community/helm-charts/releases/download/kube-state-metrics-7.2.2/kube-state-metrics-7.2.2.tgz

如果下载慢或中断,可以使用断点续传:

复制代码
wget -c https://github.com/prometheus-community/helm-charts/releases/download/kube-state-metrics-7.2.2/kube-state-metrics-7.2.2.tgz

5. 安装 kube-state-metrics

复制代码
helm install kube-state-metrics ./kube-state-metrics-7.2.2.tgz \
  -n monitoring \
  --kubeconfig ./kubeconfig.yaml \
  -f kube-state-metrics-values.yaml

如果之前安装失败,需要先卸载:

复制代码
helm uninstall kube-state-metrics -n monitoring --kubeconfig ./kubeconfig.yaml

然后重新执行安装命令。


6. 查看部署状态

查看 Pod 状态:

复制代码
kubectl get pods -n monitoring --kubeconfig ./kubeconfig.yaml

正常状态示例:

复制代码
NAME                                  READY   STATUS    RESTARTS   AGE
kube-state-metrics-77688b8c87-98z7s   1/1     Running   0          24s

7. 查看 Service

复制代码
kubectl get svc -n monitoring --kubeconfig ./kubeconfig.yaml

通常会看到:

复制代码
NAME                   TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)
kube-state-metrics     ClusterIP   10.xx.xx.xx     <none>        8080/TCP

8. 验证 metrics 接口

查看 Service 名称:

复制代码
kubectl get svc -n monitoring --kubeconfig ./kubeconfig.yaml

进入任意 Pod 验证:

复制代码
kubectl run curl-test --rm -it \
  --image=curlimages/curl \
  --restart=Never \
  -n monitoring \
  --kubeconfig ./kubeconfig.yaml -- sh

在容器内执行:

复制代码
curl http://kube-state-metrics:8080/metrics

如果能看到大量 Prometheus 指标内容,说明部署成功。


9. 常见问题

9.1 Helm 下载 chart 报错

报错:

复制代码
unexpected EOF

处理方式:

复制代码
wget -c <chart下载地址>

先下载到本地,再使用本地 tgz 包安装。

9.2 Pod 出现 InvalidImageName

报错示例:

复制代码
invalid reference format

原因:

镜像地址写错,例如错误写成:

复制代码
repository: registry.k8s.io/swr.cn-north-4.myhuaweicloud.com/ddn-k8s/kube-state-metrics

正确写法:

复制代码
repository: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/kube-state-metrics

9.3 Pod 出现 ImagePullBackOff

报错示例:

复制代码
failed to resolve reference

原因:

  • 节点无法访问外网镜像仓库

  • 镜像地址错误

  • Secret 不存在

  • 镜像仓库超时

建议优先使用国内公共镜像地址。


10. Prometheus 集成建议

后续部署 Prometheus 时,需要关闭其内置 kube-state-metrics,否则会重复部署。

Prometheus values 文件中增加:

复制代码
kube-state-metrics:
  enabled: false

这样 Prometheus 会直接使用已经部署好的 kube-state-metrics 服务。

相关推荐
炸炸鱼.13 小时前
Kubernetes高级调度02:Taint/Toleration、Cordon/Drain、亲和性与反亲和性完全指南
云原生·容器·kubernetes
wanhengidc13 小时前
服务器租用有何优点
运维·服务器·安全·web安全
ZGi.ai13 小时前
人工审查节点:让自动化工作流多一步人工把关
运维·人工智能·自动化·人机协同·智能体工作流·人工审查
艾莉丝努力练剑13 小时前
【Linux:文件】Ext系列文件系统进阶
linux·运维·服务器·c++·文件系统·文件io·ext
海市公约13 小时前
Linux核心基础命令与权限管理实战指南
linux·运维·服务器·vim·权限管理·系统监控·命令行
wkd_00713 小时前
Ubuntu 22.04 Samba 连接故障排查记:从“用户名或密码错误”到 NTLM 版本不兼容
linux·运维·ubuntu
企服AI产品测评局14 小时前
Agent适配信创环境实测:企业级自动化如何实现国产操作系统与数据库全兼容?
运维·数据库·人工智能·ai·chatgpt·自动化
mixboot15 小时前
Linux 进程工作目录查看利器:pwdx 命令详解
linux·运维·服务器
盖小雅15 小时前
自动化排班如何破解劳动法合规难题:从规则冲突到可追溯的排班表
大数据·运维·机器学习·自动化
NiceCloud喜云16 小时前
Claude Code Routines 实战:三种触发器跑通云端自动化编码
android·运维·数据库·人工智能·自动化·json·飞书