本文首发于本人的知乎专栏。

0 前置要求

请承认你的服务器上已正确安装Docker, Kubernetes, Ingress-Nginx。

关于Ingress-Nginx的运用,能够参阅这篇。

1 Kube-state-metrics

1.1 简介

项目地址:

github.com/kubernetes/…

Kube-state-metrics 是一个与Kubernetes API服务器交互的服务,以取得关于一切API目标的一切细节,如Deployments、Pods、Daemonsets、Statefulsets等。

它主要是以Prometheus格式发生目标,其稳定性与Kubernetes API相同。总的来说,它供给的Kubernetes目标和资源目标是你无法直接从本地Kubernetes监控组件中取得的。

Kube-state-metrics 服务在/metrics URI上公开了一切的目标。Prometheus 能够抓取Kube-state-metrics 露出的一切目标。

以下是咱们能够从Kube-state-metrics中取得的一些重要目标。

  • 节点状况,节点容量(CPU和内存)
  • 仿制集的合规性(每个布置的仿制所需的/可用的/不可用的/更新的状况)
  • Pod状况(等候、运转、准备等)
  • Ingress 目标
  • PV、PVC 目标
  • Daemonset 和 Statefulset目标
  • 资源请求和约束
  • Job 和 Cronjob 目标

1.2 布置

我的服务器上的kubernetes版别是v1.19,所以我选用了v2.3.0版别的Kube-state-metrics

在服务器上搭建Prometheus+Grafana资源监控系统

如果你的版别与我相同,你能够直接运用下面的布置文件,否则请自行修改为可用的版别。

# clone布置文件 
git clone https://github.com/devopscube/kube-state-metrics-configs.git
# 一键布置
kubectl apply -f kube-state-metrics-configs/
# 检查Deployment的状况
kubectl get deployments kube-state-metrics -n kube-system

如果你在pull k8s.gcr.io/kube-state-metrics/kube-state-metrics:v2.3.0镜像过程中遇到了问题,能够先pul我上传到Docker Hub的镜像,再重命名:

docker pull placebo0531/kube-state-metrics:v2.3.0
docker tag placebo0531/kube-state-metrics:v2.3.0 k8s.gcr.io/kube-state-metrics/kube-state-metrics:v2.3.0

然后你能够重新布置。

在服务器上搭建Prometheus+Grafana资源监控系统

承认状况没有问题今后,能够进入下一步。

2 Prometheus

2.1 简介

Prometheus是一个高扩展性的开源监控框架。它为Kubernetes容器编列平台供给开箱即用的监控功能。别的,在可调查性领域,它正变得越来越盛行,因为它有助于目标和警报。

Prometheus的架构如下:

在服务器上搭建Prometheus+Grafana资源监控系统

2.2 布置

git clone https://github.com/Placeboy/kubernetes-prometheus.git
# 创建命名空间
kubectl create namespace monitoring
# 一键布置
kubectl apply -f kubernetes-prometheus

然后拜访http:/prometheus.example.com/prometheus/graph,应该能够看到如下界面:

在服务器上搭建Prometheus+Grafana资源监控系统

点击 Status → Targets,能够看到相似下面的界面:

在服务器上搭建Prometheus+Grafana资源监控系统

回到主页,在查找框中输入container_cpu_usage_seconds_total,点击回车,挑选”Graph”,能够看到曩昔一小时各个容器的CPU运用情况:

在服务器上搭建Prometheus+Grafana资源监控系统

现在咱们能够进行最后一项工作——布置Grafana。

3 Grafana

3.1 简介

Grafana是一个开源的轻量级仪表盘工具。它能够与许多数据源集成,如Prometheus、AWS云调查、Stackdriver等。

3.2 布置

git clone https://github.com/Placeboy/kubernetes-grafana.git
# 一键布置
kubectl apply -f kubernetes-grafana

拜访 http://你的服务器IP:32000/,能够看到如下界面:

在服务器上搭建Prometheus+Grafana资源监控系统

用户名和密码都是admin。

登陆成功今后,点击加号,点击Import按钮

在服务器上搭建Prometheus+Grafana资源监控系统

咱们运用ID为8588的模板,点击右边的Load:

在服务器上搭建Prometheus+Grafana资源监控系统

在下拉框中挑选prometheus作为数据源,点击下方的Import:

在服务器上搭建Prometheus+Grafana资源监控系统

功德圆满!

在服务器上搭建Prometheus+Grafana资源监控系统

参阅文章

How To Setup Kube State Metrics On Kubernetes Cluster

How To Setup Prometheus Monitoring On Kubernetes [Tutorial]

How To Setup Grafana On Kubernetes – Beginners Guide