Kubernetes如何监控CentOS系统状态
使用kubectl命令行工具(基础监控)
kubectl
是Kubernetes自带的命令行工具,可直接与集群交互,获取CentOS节点及集群资源的实时状态,适合快速排查问题。常用命令包括:
- 查看节点状态:
kubectl get nodes
(显示节点是否处于“Ready”状态,确认节点是否正常加入集群); - 查看Pod状态:
kubectl get pods --all-namespaces
(查看所有命名空间的Pod运行状态,如“Running”“Pending”“Error”); - 查看Deployment状态:
kubectl get deployments --all-namespaces
(确认应用部署的副本数、更新状态); - 查看集群事件:
kubectl get events --all-namespaces
(获取集群内的异常事件,如Pod调度失败、节点资源不足); - 查看Pod实时日志:
kubectl logs < pod-name> -n < namespace>
(查看指定Pod的日志,辅助定位应用问题)。
部署Prometheus+Grafana(核心监控与可视化)
Prometheus是开源时间序列数据库,专为动态云环境设计,可收集CentOS节点及K8s集群的指标数据(如CPU、内存、磁盘IO、网络流量);Grafana是可视化工具,可将Prometheus中的数据转化为直观的仪表盘,支持自定义查询与告警。
- 安装Prometheus:通过Helm Chart快速部署(推荐使用
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
; - 安装Grafana:同样通过Helm部署,并配置Prometheus为数据源(默认地址:
http://prometheus-server.monitoring.svc.cluster.local:80
):
helm install grafana prometheus-community/grafana -n monitoring
; - 使用步骤:登录Grafana Web界面(默认地址
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
(以人类可读格式显示内存总量、已用、空闲等); - 查看磁盘IO统计:
iostat -x 1
(显示磁盘分区的IO利用率、吞吐量等,需安装sysstat
包); - 查看网络连接与接口统计:
netstat -tulnp
(显示当前活动的网络连接、端口及进程);ss -s
(更简洁的网络统计信息); - 实时显示系统资源使用:
dstat
(综合显示CPU、内存、网络、磁盘等数据,需安装dstat
包)。
可视化与告警配置(及时响应异常)
通过Grafana的告警功能与Alertmanager集成,可实现当指标超过阈值时触发通知(如邮件、Slack、PagerDuty)。常见告警示例:
- 节点CPU使用率高:
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"
- Pod重启频繁:
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后,当指标触发告警规则时,会通过指定渠道发送通知,帮助运维人员及时响应问题。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Kubernetes如何监控CentOS系统状态
本文地址: https://pptw.com/jishu/725175.html