监控与日志体系
掌握 K8s 三层监控体系架构
熟练使用 Prometheus + Grafana 经典监控方案
掌握容器日志的标准采集与排查方法
核心讲解
(1)监控体系分层
K8s 监控分为三层:基础设施监控、容器资源监控、业务应用监控。
Prometheus:时序数据库,主动拉取指标,是 K8s 监控的事实标准
Grafana:可视化看板,图形化展示监控数据、配置告警
Node Exporter:节点指标采集,CPU、内存、磁盘、网络等系统指标
cAdvisor:容器资源指标采集,默认集成在 kubelet 中
kube-state-metrics:集群资源状态指标,Pod、Deployment、节点状态等
(2)日志体系
容器日志标准方案:ELK / EFK 技术栈。
Elasticsearch:日志存储与检索
Fluentd / Filebeat:日志采集代理,转发到 ES
Kibana:日志可视化、查询、分析
最佳实践:容器日志统一输出到标准输出(stdout/stderr),不写本地文件,由节点采集器统一收集
(3)核心监控指标
节点级:CPU 使用率、内存使用率、磁盘剩余、网络流量、节点状态
容器级:Pod CPU / 内存、重启次数、副本数、就绪状态
业务级:QPS、延迟、错误率、核心业务指标
操作步骤
# ===== Prometheus + Grafana 一键部署 =====
# 1. 添加 helm 仓库
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update
# 2. 安装 kube-prometheus-stack 全家桶
helm install kps prometheus-community/kube-prometheus-stack \
-n monitoring --create-namespace \
--set grafana.adminPassword=admin123
# 3. 查看组件运行状态
kubectl get pods -n monitoring
kubectl get svc -n monitoring
# 4. 访问 Grafana
# 通过 NodePort 或 Ingress 配置访问,默认账号 admin / admin123
# 自带 Node Exporter、kube-state-metrics、Alertmanager 告警组件
# ===== 常用日志排查命令 =====
# 实时跟踪日志
kubectl logs -f Pod名
# 查看尾部 100 行
kubectl logs --tail=100 Pod名
# 查看上一次崩溃的日志
kubectl logs --previous Pod名
# 多容器 Pod 指定容器
kubectl logs Pod名 -c 容器名
常见误区
监控就是看服务死活:生产级监控要包含指标采集、可视化、告警、链路追踪完整体系
日志写容器内文件:容器日志必须输出到标准输出,不要写本地文件,否则采集不到、重建就丢失
Prometheus 是推送模式:Prometheus 是拉模式,主动到目标拉取指标,不是客户端推送
监控指标越多越好:指标数量过多会导致存储压力陡增,只采集核心业务与系统指标
课后练习
用 helm 安装 kube-prometheus-stack 监控套件
导入 Kubernetes 官方大盘,查看节点、Pod 监控指标
练习常用日志排查命令,查看上一次崩溃日志
思考:为什么容器日志推荐输出到标准输出,而不是写文件?

