使用kubectl命令行工具(基础监控)
kubectl是Kubernetes自带的命令行工具,可直接与集群交互,获取CentOS节点及集群资源的实时状态,适合快速排查问题。常用命令包括:
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的日志,辅助定位应用问题)。部署Prometheus+Grafana(核心监控与可视化)
Prometheus是开源时间序列数据库,专为动态云环境设计,可收集CentOS节点及K8s集群的指标数据(如CPU、内存、磁盘IO、网络流量);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 -n monitoring --create-namespace;http://prometheus-server.monitoring.svc.cluster.local:80):helm install grafana prometheus-community/grafana -n monitoring;http://<grafana-ip>:3000,账号admin/admin),添加Prometheus数据源后,导入现成K8s监控仪表盘(如ID为1860的“Kubernetes Cluster Monitoring”),即可查看节点与集群的实时状态。利用cAdvisor(内置容器监控)
cAdvisor(Container Advisor)是Kubernetes内置的容器资源监控工具,集成在kubelet中,无需额外安装。它可实时采集CentOS节点上容器的资源使用数据(CPU、内存、磁盘IO、网络流量),并通过Kubelet的API暴露给Prometheus等工具。验证方法:直接访问节点的/metrics接口(如http://<node-ip>:10250/metrics/cadvisor),即可看到容器的资源使用数据。
部署kube-state-metrics(补充集群状态指标)
kube-state-metrics通过监听Kubernetes API服务器,生成有关集群资源对象的状态指标(如Deployment的副本数、Pod的调度状态、节点的可用性等),补充Prometheus对集群状态的监控维度。部署方式:通过Helm Chart安装:
helm install kube-state-metrics prometheus-community/kube-state-metrics -n monitoring --create-namespace。部署后,Prometheus会自动抓取kube-state-metrics的指标,丰富监控数据的覆盖范围。
部署Node Exporter(收集节点级系统指标)
Node Exporter用于收集CentOS节点的系统级指标(如CPU利用率、内存使用、磁盘I/O、网络流量等),填补Prometheus对节点本身的监控空白。部署方式为通过DaemonSet确保每个节点运行一个实例:
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: node-exporter
namespace: monitoring
spec:
selector:
matchLabels:
app: node-exporter
template:
metadata:
labels:
app: node-exporter
spec:
containers:
- name: node-exporter
image: prom/node-exporter
ports:
- containerPort: 9100
name: metrics
部署后,Prometheus会自动抓取Node Exporter的指标,实现对节点系统状态的全面监控。
使用系统监控命令(快速排查节点问题)
在CentOS节点上,可使用系统自带命令快速查看系统状态,适合临时排查问题:
top(动态显示进程CPU、内存占用);htop(top的增强版,提供更友好的界面,需通过yum install epel-release && yum install htop安装);vmstat 1(每秒刷新一次,显示内存、CPU、磁盘IO等数据);free -h(以人类可读格式显示内存总量、已用、空闲等);iostat -x 1(显示磁盘分区的IO利用率、吞吐量等,需安装sysstat包);netstat -tulnp(显示当前活动的网络连接、端口及进程);ss -s(更简洁的网络统计信息);dstat(综合显示CPU、内存、网络、磁盘等数据,需安装dstat包)。可视化与告警配置(及时响应异常)
通过Grafana的告警功能与Alertmanager集成,可实现当指标超过阈值时触发通知(如邮件、Slack、PagerDuty)。常见告警示例:
alert: NodeCPUUsageHigh
expr: 100 - (avg by(instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80
for: 5m
labels:
severity: warning
annotations:
summary: "Node {{ $labels.instance }} CPU usage is high"
description: "CPU usage is above 80% for 5 minutes"
alert: PodRestartFrequently
expr: increase(kube_pod_container_status_restarts_total[1h]) > 3
for: 10m
labels:
severity: critical
annotations:
summary: "Pod {{ $labels.pod }} in namespace {{ $labels.namespace }} is restarting frequently"
description: "Pod has restarted more than 3 times in the last hour"
配置Alertmanager后,当指标触发告警规则时,会通过指定渠道发送通知,帮助运维人员及时响应问题。