十四、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)

导入,就可以看数据了

相关推荐
码上上班9 小时前
docker课程
java·docker·容器
取谖慕12.13 小时前
Docker容器从入门到精通
docker·容器·eureka
取谖慕12.13 小时前
Harbor仓库从讲解到部署实战
docker·harbor
逍遥德15 小时前
运维技术栈Linux+docker+Kubernetes+Jenkins/GitLab CI 知识点详细列表
linux·运维·docker
名字还没想好☜15 小时前
Kubernetes CrashLoopBackOff 排查全流程:从 describe 到日志到 exit code
运维·docker·云原生·容器·kubernetes
冰封之寂16 小时前
Docker 部署与基础命令详解:从安装到容器管理全流程指南
linux·运维·docker·容器
Baron X16 小时前
Gitea Docker 部署教程
docker·gitea
sulikey18 小时前
服务器安装Docker教程。如何在云服务器安装Docker容器?
运维·服务器·ubuntu·docker·安装教程·云服务器
spider_xcxc19 小时前
Helm 部署 K8s 集群完整笔记
java·开发语言·kubernetes
窝子面19 小时前
认识Docker与启动容器与镜像的关系
运维·docker·容器