1. 使用kubectl命令行工具(基础监控)
kubectl是Kubernetes自带的命令行工具,可直接与集群交互,获取核心状态信息,适合快速排查问题。常用命令包括:
kubectl get nodes(显示节点是否处于“Ready”状态,确认节点是否正常加入集群);kubectl get pods --all-namespaces(查看所有命名空间的Pod运行状态,如“Running”“Pending”“Error”);kubectl get deployments --all-namespaces(确认应用部署的副本数、更新状态);kubectl get events --all-namespaces(获取集群内的异常事件,如Pod调度失败、节点资源不足);kubectl logs <pod-name> -n <namespace>(查看指定Pod的日志,辅助定位应用问题)。2. 部署Prometheus+Grafana(核心监控与可视化)
Prometheus是开源时间序列数据库,专为动态云环境设计,可收集K8s集群的指标数据(如节点CPU/内存使用率、Pod资源占用、服务响应时间);Grafana是可视化工具,可将Prometheus中的数据转化为直观的仪表盘。
kube-prometheus-stack,包含Prometheus、Alertmanager、Node Exporter等组件):helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm install prometheus prometheus-community/kube-prometheus-stack
helm install grafana grafana/grafana
登录Grafana(默认地址:http://<node-ip>:3000,账号admin/admin),添加Prometheus数据源后,导入K8s监控仪表盘(如ID:1860、4076)。3. 利用cAdvisor(内置容器监控)
cAdvisor(Container Advisor)是Kubernetes内置的容器资源监控工具,集成在kubelet中,无需额外安装。它可实时采集容器级别的指标(CPU、内存、磁盘IO、网络流量),并通过Kubelet的API暴露给Prometheus等工具。
/metrics接口(如http://<node-ip>:10250/metrics/cadvisor),可看到容器的资源使用数据。4. 部署kube-state-metrics(资源状态指标)
kube-state-metrics从Kubernetes API对象生成指标,而无需通过监控Kubernetes API服务器进行修改。它着重于内部各种对象(如Deployment、Node、Pod、StatefulSet)的运行状况,提供如“Deployment副本数是否达标”“Pod是否处于Pending状态”等指标,补充了Prometheus的基础指标,增强了监控的深度。
5. 使用Kubernetes Dashboard(Web可视化)
Kubernetes Dashboard是官方提供的Web-based UI,提供集群的实时监控和管理功能,适合需要图形化界面的用户。
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml
https://<node-ip>:30000,使用默认用户名admin和通过以下命令获取的Token登录:kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk '{print $1}')
登录后可查看节点、Pod、Deployment等资源的实时状态,以及集群事件。6. 第三方监控工具(企业级增强)
7. 终端工具(轻量级交互)