> ## Documentation Index
> Fetch the complete documentation index at: https://doc.lwops.cn/llms.txt
> Use this file to discover all available pages before exploring further.

# 9.2. 基于kube-state-metrics采集器监控K8S集群

若已有内置模板，可忽略9.2.2-9.2.3章节

### 9.2.1. 安装kube-state-metrics

#### 9.2.1.1. 查看K8S集群版本

进入k8s集群主节点 执行命令查询K8S部署版本

```plain theme={null}
kubectl get node
```

如图所示，版本在最后一列，这里K8S集群版本为：v1.21.5

![9.2. 基于kube-state-metrics采集器监控K8S集群 操作截图 1](https://lwweb.oss-cn-shenzhen.aliyuncs.com/docs/images/yuque/ksm-k8s-monitor/image-01.png)

#### 9.2.1.2. 查找集群对应的采集器版本

kube-state-metrics采集器跟K8S版本有适配兼容的限制，版本如果差异过大，可能会导致kube-state-metrics无法采集到K8S的相关指标数据。因此kube-state-metrics部署版本要适配K8S集群版本。 访问kube-state-metrics仓库：[GitHub - kubernetes/kube-state-metrics: Add-on agent to generate and expose cluster-level metrics.](https://github.com/kubernetes/kube-state-metrics) 打开后，在左上角可以查看对应的分支版本，默认是最新版主分支。

![9.2. 基于kube-state-metrics采集器监控K8S集群 操作截图 2](https://lwweb.oss-cn-shenzhen.aliyuncs.com/docs/images/yuque/ksm-k8s-monitor/image-02.png)

选择对应版本后，下拉，可以看到最近的适配版本信息。

![9.2. 基于kube-state-metrics采集器监控K8S集群 操作截图 3](https://lwweb.oss-cn-shenzhen.aliyuncs.com/docs/images/yuque/ksm-k8s-monitor/image-03.png)

这里分支选择了release-2.2.然后看到kube-state-metrics的v2.2.4版本可以支持K8S的v1.21版本，因此这里部署kube-state-metrics的v2.2.4版本。

#### 9.2.1.3. 拉取kube-state-metrics部署文件

首先使用国内的git源进行拉取 拉取地址：[猫科动物/kube-state-metrics](https://gitee.com/peichengchen/kube-state-metrics.git) 使用下面命令进行拉取（若没有git，直接yum安装一个）

```plain theme={null}
git clone https://gitee.com/peichengchen/kube-state-metrics.git
```

如图为拉取完后：

![9.2. 基于kube-state-metrics采集器监控K8S集群 操作截图 4](https://lwweb.oss-cn-shenzhen.aliyuncs.com/docs/images/yuque/ksm-k8s-monitor/image-04.png)

然后切换到可用的分支

```plain theme={null}
cd kube-state-metrics/examples/standard
```

进入后，可以看到kube-state-metrics的部署文件。

![9.2. 基于kube-state-metrics采集器监控K8S集群 操作截图 5](https://lwweb.oss-cn-shenzhen.aliyuncs.com/docs/images/yuque/ksm-k8s-monitor/image-05.png)

这个是最新版的文件，需要进行一个版本切换，这里的release根据自己的选择的版本调整即可。

```plain theme={null}
git checkout -b release-2.2 remotes/origin/release-2.2
```

如图所示：成功进行切换

![9.2. 基于kube-state-metrics采集器监控K8S集群 操作截图 6](https://lwweb.oss-cn-shenzhen.aliyuncs.com/docs/images/yuque/ksm-k8s-monitor/image-06.png)

然后查看目前版本是多少

```plain theme={null}
vim deployment.yaml
```

为2.2.4，刚好是需要的版本，则无需再进行修改

![9.2. 基于kube-state-metrics采集器监控K8S集群 操作截图 7](https://lwweb.oss-cn-shenzhen.aliyuncs.com/docs/images/yuque/ksm-k8s-monitor/image-07.png)

#### 9.2.1.4. 修改部署镜像源

部署文件内使用的镜像源默认是国外的，访问速度很慢，而且有可能无法访问。因此切换为国内的部署镜像源 直接进行批量替换

```plain theme={null}
grep "k8s.gcr.io" -rl . |xargs sed -i "s#k8s.gcr.io/kube-state-metrics/kube-state-metrics:v2.2.4#bitnami/kube-state-metrics:2.2.4#g"
```

这里前一个版本号为deployment.yaml文件中的版本号，后面的版本号为需要部署的版本号。 替换完后，再次查看deployment.yaml文件，发现镜像源已经替换成功。

![9.2. 基于kube-state-metrics采集器监控K8S集群 操作截图 8](https://lwweb.oss-cn-shenzhen.aliyuncs.com/docs/images/yuque/ksm-k8s-monitor/image-08.png)

#### 9.2.1.5. 直接部署

直接使用kubectl命令使用该目录下的所有部署文件进行部署

```plain theme={null}
kubectl apply -f .
```

“.”代表的是当前目录 如图，显示创建成功

![9.2. 基于kube-state-metrics采集器监控K8S集群 操作截图 9](https://lwweb.oss-cn-shenzhen.aliyuncs.com/docs/images/yuque/ksm-k8s-monitor/image-09.png)

 查看kube-state-metrics服务启动情况

```plain theme={null}
kubectl get pod -A
```

可以看到kube-state-metrics容器正在创建

![9.2. 基于kube-state-metrics采集器监控K8S集群 操作截图 10](https://lwweb.oss-cn-shenzhen.aliyuncs.com/docs/images/yuque/ksm-k8s-monitor/image-10.png)

 等待1-2分钟后，再次查看，可见kube-state-metrics服务已经正常运行了

![9.2. 基于kube-state-metrics采集器监控K8S集群 操作截图 11](https://lwweb.oss-cn-shenzhen.aliyuncs.com/docs/images/yuque/ksm-k8s-monitor/image-11.png)

#### 9.2.1.6. 创建对外访问services

部署好kube-state-metrics服务后，默认是没法对外访问的。 使用命令查看kube-state-metrics服务的service服务

```plain theme={null}
kubectl get services -A
```

可以看到，没有对外的访问端口，因此需要暴露对外访问。

![9.2. 基于kube-state-metrics采集器监控K8S集群 操作截图 12](https://lwweb.oss-cn-shenzhen.aliyuncs.com/docs/images/yuque/ksm-k8s-monitor/image-12.png)

复制原先的service.yaml部署文件

```plain theme={null}
cp -ra service.yaml service_nodeport.yaml
```

修改对外暴露配置文件

```plain theme={null}
vim service_nodeport.yaml
```

原配置文件内容：

![9.2. 基于kube-state-metrics采集器监控K8S集群 操作截图 13](https://lwweb.oss-cn-shenzhen.aliyuncs.com/docs/images/yuque/ksm-k8s-monitor/image-13.png)

 将配置文件中的内容修改为

```plain theme={null}
apiVersion: v1
kind: Service
metadata:
labels:
app.kubernetes.io/name: kube-state-metrics
app.kubernetes.io/version: 2.2.4
name: kube-state-metrics-node-port
namespace: kube-system
spec:
type: NodePort
ports:
- name: http-metrics-node-port
port: 8080
targetPort: 8080
nodePort: 30099
selector:
app.kubernetes.io/name: kube-state-metrics
```

这里需要注意的是，service的name不能跟原文件一致，要重新修改，同时将service的类型修改为NodePort。NodePort的默认暴露的端口范围为：30000-32767。只要在这个范围内基本都没问题。

![9.2. 基于kube-state-metrics采集器监控K8S集群 操作截图 14](https://lwweb.oss-cn-shenzhen.aliyuncs.com/docs/images/yuque/ksm-k8s-monitor/image-14.png)

然后直接指定配置文件进行部署

```plain theme={null}
kubectl apply -f service_nodeport.yaml
```

如图所示，成功部署，查看service服务后发现其将8080端口映射到集群的30099端口。

![9.2. 基于kube-state-metrics采集器监控K8S集群 操作截图 15](https://lwweb.oss-cn-shenzhen.aliyuncs.com/docs/images/yuque/ksm-k8s-monitor/image-15.png)

#### 9.2.1.7. 访问测试

直接使用K8S集群IP+对外端口/metrics，进行访问，若出现以下页面，并且有指标数据，说明部署成功。

![9.2. 基于kube-state-metrics采集器监控K8S集群 操作截图 16](https://lwweb.oss-cn-shenzhen.aliyuncs.com/docs/images/yuque/ksm-k8s-monitor/image-16.png)

### 9.2.2. 导入kube-state-metrics模板

kube-state-metrics监控模板，联系技术中心获取

prometheus\_kube\_state\_metrics\_20230313.xml

登录zabbix原生界面： 登录地址：部署IP/z 默认登录信息：Admin/ITIM\_p\@ssw0rd

![9.2. 基于kube-state-metrics采集器监控K8S集群 操作截图 17](https://lwweb.oss-cn-shenzhen.aliyuncs.com/docs/images/yuque/ksm-k8s-monitor/image-17.png)

登录后：配置>模板>导入

![9.2. 基于kube-state-metrics采集器监控K8S集群 操作截图 18](https://lwweb.oss-cn-shenzhen.aliyuncs.com/docs/images/yuque/ksm-k8s-monitor/image-18.png)

 选择kube-state-metrics模板

![9.2. 基于kube-state-metrics采集器监控K8S集群 操作截图 19](https://lwweb.oss-cn-shenzhen.aliyuncs.com/docs/images/yuque/ksm-k8s-monitor/image-19.png)

然后导入

![9.2. 基于kube-state-metrics采集器监控K8S集群 操作截图 20](https://lwweb.oss-cn-shenzhen.aliyuncs.com/docs/images/yuque/ksm-k8s-monitor/image-20.png)

### 9.2.3. 迁移kube-state-metrics模板

然后登录乐维监控系统 打开监控中心>资源配置>模板迁移>未迁移模板 找到刚导入的kube-state-metrics模板，点击右边的迁移

![9.2. 基于kube-state-metrics采集器监控K8S集群 操作截图 21](https://lwweb.oss-cn-shenzhen.aliyuncs.com/docs/images/yuque/ksm-k8s-monitor/image-21.png)

根据图，进行迁移配置，然后点击确定，即能完成模板迁移。

![9.2. 基于kube-state-metrics采集器监控K8S集群 操作截图 22](https://lwweb.oss-cn-shenzhen.aliyuncs.com/docs/images/yuque/ksm-k8s-monitor/image-22.png)

### 9.2.4. 添加监控

然后回到监控中心>综合监控>资源列表 然后点击右上角的新建，即可开始新建监控对象

![9.2. 基于kube-state-metrics采集器监控K8S集群 操作截图 23](https://lwweb.oss-cn-shenzhen.aliyuncs.com/docs/images/yuque/ksm-k8s-monitor/image-23.png)

找到容器类型中，刚迁移的模板，点击创建

![9.2. 基于kube-state-metrics采集器监控K8S集群 操作截图 24](https://lwweb.oss-cn-shenzhen.aliyuncs.com/docs/images/yuque/ksm-k8s-monitor/image-24.png)

然后根据图来添加基础信息，最后点击提交即可

![9.2. 基于kube-state-metrics采集器监控K8S集群 操作截图 25](https://lwweb.oss-cn-shenzhen.aliyuncs.com/docs/images/yuque/ksm-k8s-monitor/image-25.png)

指标地址可看9.2.1.7

### 9.2.5. 查看监控情况

添加完监控后，等待几分钟，然后查看监控情况： 添加完后，会在监控中心>综合监控>资源列表里面有刚添加的监控对象

![9.2. 基于kube-state-metrics采集器监控K8S集群 操作截图 26](https://lwweb.oss-cn-shenzhen.aliyuncs.com/docs/images/yuque/ksm-k8s-monitor/image-26.png)

 点击进入监控详情

![9.2. 基于kube-state-metrics采集器监控K8S集群 操作截图 27](https://lwweb.oss-cn-shenzhen.aliyuncs.com/docs/images/yuque/ksm-k8s-monitor/image-27.png)

在指标列表中即可查看指标数据。若出现指标数据，说明监控添加成功
