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 服务。

相关推荐
xywww16815 分钟前
大模型 API 选型实战:GPT、Gemini、Claude 接入时该看哪些指标?
运维·服务器·人工智能·python·gpt·langchain
梦想的颜色3 小时前
【Docker原理】Docker 容器一文打尽:生命周期、环境管控、迁移备份、日志进程排查、垃圾清理
运维·docker·容器·容器生命周期·容器日志排查·容器迁移备份·容器进程管理
donoot6 小时前
Linux系统下图书馆级电子书全自动标准化分类整理完整实施方案
大数据·linux·运维·电子书管理
ITKEY_6 小时前
macOS brew 安装的nginx 文件在哪里?
运维·nginx·macos
Elastic 中国社区官方博客7 小时前
如何比较两个 Elasticsearch 索引并找出缺失的文档
大数据·运维·数据库·elasticsearch·搜索引擎
万里侯7 小时前
GitOps 漂移检测:集群里改了配置,Git 还以为一切正常
微服务·容器·k8s
Tim_Van8 小时前
在 CentOS 7 中安装 Chromium 的完整步骤
linux·运维·chrome·centos
孫治AllenSun8 小时前
【Nginx】配置参数和使用案例
运维·nginx
啵啵鱼爱吃小猫咪9 小时前
Ubuntu 20.04 + ROS Noetic 源码安装 libfranka 0.8.0 和 franka_ros 0.8.0 完整教程
linux·运维·ubuntu
Piko61410 小时前
锐捷 VSU 虚拟化堆叠配置
运维·网络·笔记