十四、k8s集群安装kube-state-metrics 组件

kube-state-metrics 通过监听 API Server 生成有关资源对象的状态指标,比如Node、Pod,需 要注意的是kube-state-metrics 只是简单的提供一个metrics数据,并不会存储这些指标数据,所 以我们可以使用Prometheus来抓取这些数据然后存储,主要关注的是业务相关的一些元数据,比如 Pod 副本状态等;调度了多少个replicas?现在可用的有几个?多少个Pod是 running/stopped/terminated 状态?Pod 重启了多少次?我有多少job在运行中。

安装kube-state-metrics 组件

1)创建sa,并对sa授权

在master节点创建kube-state-metrics-rbac.yaml文件

vim kube-state-metrics-rbac.yaml

输入:

apiVersion: v1

kind: ServiceAccount

metadata:

name: kube-state-metrics

namespace: kube-system


apiVersion: rbac.authorization.k8s.io/v1

kind: ClusterRole

metadata:

name: kube-state-metrics

rules:

  • apiGroups: ""

resources:

  • configmaps

  • secrets

  • nodes

  • pods

  • services

  • resourcequotas

  • replicationcontrollers

  • limitranges

  • persistentvolumeclaims

  • persistentvolumes

  • namespaces

  • endpoints

verbs: "list", "watch"

  • apiGroups: "apps"

resources:

  • statefulsets

  • daemonsets

  • deployments

  • replicasets

verbs: "list", "watch"

  • apiGroups: "batch"

resources:

  • cronjobs

  • jobs

verbs: "list", "watch"

  • apiGroups: "autoscaling"

resources:

  • horizontalpodautoscalers

verbs: "list", "watch"

  • apiGroups: "policy"

resources:

  • poddisruptionbudgets

verbs: "list", "watch"

  • apiGroups: "certificates.k8s.io"

resources:

  • certificatesigningrequests

verbs: "list", "watch"

  • apiGroups: "storage.k8s.io"

resources:

  • storageclasses

  • volumeattachments

verbs: "list", "watch"

  • apiGroups: "admissionregistration.k8s.io"

resources:

  • mutatingwebhookconfigurations

  • validatingwebhookconfigurations

verbs: "list", "watch"

  • apiGroups: "networking.k8s.io"

resources:

  • networkpolicies

  • ingresses

verbs: "list", "watch"

  • apiGroups: "coordination.k8s.io"

resources:

  • leases

verbs: "list", "watch"


apiVersion: rbac.authorization.k8s.io/v1

kind: ClusterRoleBinding

metadata:

name: kube-state-metrics

roleRef:

apiGroup: rbac.authorization.k8s.io

kind: ClusterRole

name: kube-state-metrics

subjects:

  • kind: ServiceAccount

name: kube-state-metrics

namespace: kube-system

保存退出

kubectl apply -f kube-state-metrics-rbac.yaml

2)安装kube-state-metrics 组件

GitHub 官方仓库地址:

Releases · kubernetes/kube-state-metrics · GitHub

Docker Hub 官方镜像地址‌:直接拉取官方预构建镜像,无需本地编译

https://hub.docker.com/去这个地址里面搜索下载

ctr -n k8s.io images import kube-state-metrics_1_9_0.tar.gz

vim kube-state-metrics deploy.yaml

输入:

apiVersion: apps/v1

kind: Deployment

metadata:

name: kube-state-metrics

namespace: kube-system

spec:

replicas: 1

selector:

matchLabels:

app: kube-state-metrics

template:

metadata:

labels:

app: kube-state-metrics

spec:

serviceAccountName: kube-state-metrics

containers:

  • name: kube-state-metrics

image: quay.io/coreos/kube-state-metrics:v1.9.0

imagePullPolicy: IfNotPresent

ports:

  • containerPort: 8080

保存退出

kubectl apply -f kube-state-metrics-deploy.yaml

查看kube-state-metrics是否部署成功

kubectl get pods -n kube-system -l app=kube-state-metrics

3)创建service

vim kube-state-metrics-svc.yaml

输入:

apiVersion: v1

kind: Service

metadata:

annotations:

prometheus.io/scrape: 'true'

name: kube-state-metrics

namespace: kube-system

labels:

app: kube-state-metrics

spec:

ports:

  • name: kube-state-metrics

port: 8080

protocol: TCP

selector:

app: kube-state-metrics

保存退出

kubectl apply -f kube-state-metrics-svc.yaml

查看service是否创建成功

kubectl get svc -n kube-system | grep kube-state-metrics

去网站下载下面grafana可视化的json

Kubernetes Cluster (Prometheus)

Kubernetes cluster monitoring (via Prometheus) (k8s 1.16)

导入,就可以看数据了

相关推荐
猫吃了源码3 小时前
k9s简介和安装
linux·docker·kubernetes
云原生指北4 小时前
Docker Sandboxes 上手:从安装到第一次跑 Agent
运维·docker·容器
ziyun6668884 小时前
Docker 容器化 Web 服务架构搭建与自动化运维项目
运维·docker·架构
heimeiyingwang6 小时前
【架构实战】Kubernetes故障排查全景图:从Pod异常到集群雪崩的诊断手册
容器·架构·kubernetes
骇客野人7 小时前
Docker Compose 部署多个独立 Jar 服务完整实操步骤
docker·容器·jar
AAA@峥7 小时前
K8s 资源管控:ResourceQuota 与 LimitRange 机制详解与实战
云原生·容器·kubernetes
daoihfoaf7 小时前
太原助听器品质甄选
容器
秦渝兴8 小时前
Ansible 自动化部署 K8s 三节点集群(完整教程)
kubernetes·自动化·ansible
云川之下9 小时前
【k8s】Docker inspect 命令
docker·容器·kubernetes
猫吃了源码10 小时前
CentOS7使用Kubeadm安装部署K8s(Kubernetes)最新稳定版本1.26.x
云原生·容器·kubernetes