作者介绍:简历上没有一个精通的运维工程师。下面的思维导图也是预计更新的内容和当前进度(不定时更新)。
我们上一章介绍了Docker基本情况,目前在规模较大的容器集群基本都是Kubernetes,但是Kubernetes涉及的东西和概念确实是太多了,而且随着版本迭代功能在还增加,笔者有些功能也确实没用过,所以只能按照我自己的理解来讲解。
我们上一小节对Prometheus做了一个简单的介绍,本小节我们就来介绍下Prometheus的安装。Prometheus支持通过二进制包、Docker 容器、Kubernetes Operator(如 Prometheus Operator)来进行安装。下面是一个简单配置文件,基于这些规则完成对数据的监控和告警。
global:
scrape_interval: 15s # 拉取间隔
scrape_configs:
- job_name: "node"
static_configs:
- targets: ["node-exporter:9100"] # 监控目标
alerting:
alertmanagers:
- static_configs:
- targets: ["alertmanager:9093"]
rule_files:
- "alerts.rules" # 告警规则文件
我们这里就通过Operator安装,也算另外一个Operator的案例,只是核心是监控而非Opterator的逻辑。
1.添加helm仓库
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update
2.安装opterator
# 创建命名空间(可选)
kubectl create namespace monitoring
# 安装 kube-prometheus-stack(包含 Operator、Prometheus、Grafana 等)
helm install prometheus prometheus-community/kube-prometheus-stack \
--namespace monitoring
3.验证安装
kubectl get pods -n monitoring
# 应看到 prometheus-operator、prometheus、grafana 等 Pod
# 当然这里还会生成很多其他资源,我们这里以Pod正常就算部署成功
4.组件介绍
1.alertmanager容器
功能:接收 Prometheus 的告警信息,去重、分组后通过邮件、Slack 等渠道发送通知。
2.grafana容器
功能:提供可视化仪表盘,默认已集成 Prometheus 数据源和预置的监控面板。
3.operator容器
作用:Prometheus Operator 的核心控制器。
功能:自动管理 Prometheus、Alertmanager、ServiceMonitor 等资源的生命周期,监听 Kubernetes API 并动态生成监控配置。
4.prometheus容器
作用:Prometheus Server 实例。
功能:负责抓取、存储监控数据,并提供查询和告警规则评估。
持久化:默认使用临时存储(重启后数据丢失),生产环境需配置 PersistentVolumeClaim
。
5.metrics容器
功能:采集Kubernetes 资源对象状态(如 Deployment、Pod、Service 的状态),生成与资源生命周期相关的指标。
6.Nodeexporter容器
功能:采集节点级指标(CPU、内存、磁盘、网络等),暴露给 Prometheus 抓取。部署方式:通过 DaemonSet 确保每个节点运行一个副本。
5.web访问
由于默认Service都是ClusterIP,所以我这里是通过修改了svc的类型,通过NodePort来访问,需要注意这个web界面是没有密码的,需要注意安全。
http://192.168.31.100:32729
Prometheus的界面比较简单,所以这里一般都只简单查看。
通过选择监控项目,这些项目都是Pormetheus部署成功以后,就会自带部分监控。从这里可以看到有些监控是正常的,有些监控是异常的,我们需要根据实际情况进行调整。
这里只显示监控项目是否正常,但是很多详细的指标这里并不会显示,我们可以通过PromQL去查询,比如我这里列举coredns的总请求数。