如何监控CentOS上K8s部署性能
监控CentOS上Kubernetes(K8s)部署的性能是保障集群稳定、高效运行的关键,需覆盖节点、容器、编排组件、应用及网络等多维度,结合指标收集、可视化、告警等环节实现闭环。以下是具体的方法与工具实践:
/metrics接口抓取指标(如节点资源、Pod状态、API服务器性能等),具备多维数据模型(支持标签过滤)、灵活查询语言(PromQL)及强大的告警功能(通过Alertmanager实现通知)。监控指标需覆盖集群基础资源、编排组件、应用性能及网络等方面,以下是核心指标清单:
cpu_usage)、内存使用率(memory_usage)、磁盘使用率(disk_usage)、磁盘I/O(disk_io)及网络流量(network_receive/network_transmit),用于判断节点是否过载。pod_status,如Running、Pending、Error)、容器重启次数(container_restart_count)、Pod就绪状态(pod_ready),及时发现Pod异常。etcd_server_has_leader,判断是否有主节点)、控制器管理器运行时间(controller_manager_uptime)、调度器运行时间(scheduler_uptime),确保核心组件稳定。apiserver_request_latencies,单位毫秒)、请求速率(apiserver_request_rate),避免API服务器成为性能瓶颈。container_cpu_usage/container_memory_usage)、请求延迟(如HTTP请求的http_request_duration_seconds)、错误率(http_requests_total{status=~"5.."}),定位应用层性能问题。network_transmit_bytes/network_receive_bytes)、网络错误率(network_error_rate),排查网络拥塞或连接问题。helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm install prometheus prometheus-community/kube-prometheus-stack -n monitoring --create-namespace
prometheus.yml),定义scrape_configs(抓取K8s集群指标的端点,如/metrics),并通过DaemonSet部署Prometheus Server。helm install grafana prometheus-community/kube-prometheus-stack -n monitoring或kubectl apply -f grafana-deployment.yaml部署。http://<grafana-ip>:3000,账号admin/admin),添加Prometheus数据源(URL为http://prometheus-server.monitoring.svc.cluster.local:80)。4194)。helm install kube-state-metrics prometheus-community/kube-state-metrics -n monitoring --create-namespace
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的指标。1860的“Kubernetes Cluster Monitoring”),或自定义Dashboard,通过PromQL查询指标并配置图表。通过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(container_restart_count[1h]) > 3
for: 10m
labels:
severity: critical
annotations:
summary: "Pod {{ $labels.pod }} in namespace {{ $labels.namespace }} restarted frequently"
description: "Pod has restarted more than 3 times in the last hour"
配置完成后,Prometheus会根据规则评估告警,Alertmanager负责发送通知。
性能问题往往需要结合日志排查,可使用EFK Stack(Elasticsearch+Fluentd+Kibana)或Loki+Promtail+Grafana收集、存储及可视化日志:
stdout/stderr),转发到Elasticsearch或Loki。通过以上方案,可实现CentOS上K8s部署的全面性能监控,及时发现并解决节点过载、Pod异常、API瓶颈等问题,保障集群稳定运行。