首页主机资讯如何在CentOS上配置Kubernetes监控

如何在CentOS上配置Kubernetes监控

时间2025-09-30 23:27:03发布访客分类主机资讯浏览704
导读:一、基础环境准备 在CentOS上配置Kubernetes监控前,需确保以下基础环境已就绪: CentOS系统已升级至最新稳定版(如CentOS Stream 8/9); Kubernetes集群已正常部署(可通过kubectl get...

一、基础环境准备

在CentOS上配置Kubernetes监控前,需确保以下基础环境已就绪:

  • CentOS系统已升级至最新稳定版(如CentOS Stream 8/9);
  • Kubernetes集群已正常部署(可通过kubectl get nodes验证节点状态为Ready);
  • 已配置kubectl命令行工具(版本与集群版本兼容);
  • 防火墙开放必要端口(如Prometheus的9090、Grafana的3000端口)。

二、核心监控组件部署(以Prometheus+Grafana为例)

1. 部署Prometheus Operator(简化管理)

Prometheus Operator是Kubernetes原生的监控解决方案,可自动化Prometheus、Alertmanager、Grafana等组件的部署与管理。

 添加Prometheus Community Helm仓库
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update

 安装Prometheus Operator(包含Prometheus、Alertmanager、Grafana)
helm install prometheus prometheus-community/kube-prometheus-stack -n monitoring --create-namespace

此命令会自动创建monitoring命名空间,并部署以下组件:

  • Prometheus:负责收集、存储集群指标;
  • Alertmanager:处理Prometheus生成的告警(如邮件、Slack通知);
  • Grafana:可视化监控数据的Web界面。

2. 配置Prometheus数据采集

Prometheus通过ServiceMonitor资源自动发现Kubernetes集群中的服务(如kube-state-metrics、Node Exporter)。若需自定义采集目标,可编辑Prometheus的ServiceMonitor配置:

 查看Prometheus的ServiceMonitor列表
kubectl get servicemonitors -n monitoring

 示例:自定义采集名为"my-app"的应用指标(需提前部署对应的Exporter)
cat <
    <
EOF | kubectl apply -f -
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: my-app-monitor
  namespace: monitoring
spec:
  selector:
    matchLabels:
      app: my-app   目标应用的标签
  endpoints:
  - port: metrics   应用暴露指标的端口名称
    interval: 15s   采集间隔
EOF

默认情况下,Prometheus Operator会自动配置以下核心组件的采集:

  • kube-state-metrics:暴露集群资源(Pod、Deployment、Node等)的状态指标;
  • Node Exporter:采集节点级别的CPU、内存、磁盘等硬件指标;
  • kubelet:采集容器运行时(如Docker、containerd)的性能指标。

3. 配置Grafana可视化

Grafana通过Prometheus作为数据源,展示集群监控数据的仪表盘。

 获取Grafana的管理员密码(首次登录需使用)
kubectl get secret -n monitoring grafana -o jsonpath="{
.data.admin-password}
    " | base64 --decode ;
     echo

 端口转发Grafana服务到本地(方便访问)
kubectl port-forward -n monitoring svc/grafana 3000:80

 访问Grafana(在浏览器中打开)
http://<
    CentOS节点IP>
    :3000

登录后(默认用户名/密码:admin + 上述获取的密码),完成以下配置:

  • 添加Prometheus数据源:进入Configuration > Data Sources,点击Add data source,选择Prometheus,填写URL为http://prometheus-operated.monitoring.svc.cluster.local:9090(Prometheus服务的集群内地址),点击Save & Test验证连接;
  • 导入仪表盘:进入Dashboards > Import,输入以下常用仪表盘ID(覆盖Kubernetes监控的核心场景):
    • 1860:Kubernetes集群状态(节点、Pod、Namespace);
    • 2027:Kubernetes节点资源使用率(CPU、内存、磁盘);
    • 2111:Kubernetes Pod资源使用率(CPU、内存);
    • 4086:Kubernetes网络流量监控。

4. 配置告警规则(可选但推荐)

通过PrometheusRule资源定义告警规则,当集群出现异常时触发Alertmanager通知。示例如下:

 创建告警规则文件(如k8s-alerts.yaml)
apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:
  name: k8s-alerts
  namespace: monitoring
spec:
  groups:
  - name: kubernetes-alerts
    rules:
     告警:Pod CPU使用率超过85%(持续2分钟)
    - alert: HighPodCPUUsage
      expr: sum(rate(container_cpu_usage_seconds_total{
namespace!="", pod!="", container!="POD"}
    [5m])) by (namespace, pod, container) >
 0.85
      for: 2m
      labels:
        severity: critical
      annotations:
        summary: "Pod CPU使用率过高({
{
 $labels.namespace }
}
/{
{
 $labels.pod }
}
/{
{
 $labels.container }
}
)"
        description: "Pod {
{
 $labels.pod }
}
     的CPU使用率已超过85%,持续2分钟。"

     告警:节点内存使用率超过90%(持续5分钟)
    - alert: HighNodeMemoryUsage
      expr: (1 - (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes)) * 100 >
 90
      for: 5m
      labels:
        severity: warning
      annotations:
        summary: "节点内存使用率过高({
{
 $labels.instance }
}
)"
        description: "节点 {
{
 $labels.instance }
}
     的内存使用率已超过90%,持续5分钟。"

应用告警规则:

kubectl apply -f k8s-alerts.yaml

Alertmanager会根据规则发送通知,需提前配置通知渠道(如邮件、Slack),编辑values.yaml文件(Helm安装时使用的配置文件)中的alertmanager.config部分即可。

三、补充监控组件(可选)

1. kube-state-metrics(集群状态指标)

若未通过Prometheus Operator自动部署,可手动安装:

kubectl apply -f https://github.com/kubernetes-sigs/kube-state-metrics/releases/latest/download/components.yaml

此组件会暴露集群资源的详细状态指标(如Pod的重启次数、Deployment的副本数),供Prometheus采集。

2. Node Exporter(节点硬件指标)

若未通过Prometheus Operator自动部署,可手动创建DaemonSet:

kubectl apply -f https://raw.githubusercontent.com/prometheus/node_exporter/master/examples/node-exporter-daemonset.yaml

此DaemonSet会在每个节点上运行Node Exporter,采集节点的CPU、内存、磁盘、网络等硬件指标。

四、验证监控功能

  1. 检查Prometheus是否正常运行

    kubectl get pods -n monitoring -l app.kubernetes.io/name=prometheus
    

    若所有Pod状态为Running,则表示Prometheus已启动。

  2. 访问Grafana仪表盘
    通过http://< CentOS节点IP> :3000登录Grafana,查看导入的仪表盘是否有数据(如节点CPU、内存使用率)。

  3. 触发告警测试
    手动创建一个高CPU使用的Pod(如stress容器),观察Prometheus是否生成告警,并通过Alertmanager发送通知。

五、常见问题排查

  • Prometheus无法采集指标:检查ServiceMonitorselector是否匹配目标服务的标签,或Prometheus的scrape_interval是否设置过短;
  • Grafana无法连接Prometheus:确认Prometheus服务的集群内地址是否正确,或防火墙是否阻止了访问;
  • 告警不触发:检查告警规则的expr表达式是否正确,或Prometheus的evaluation_interval是否设置过长。

通过以上步骤,可在CentOS上为Kubernetes集群搭建一套完整的监控体系,实现对集群状态、资源使用、应用性能的全面监控与告警。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: 如何在CentOS上配置Kubernetes监控
本文地址: https://pptw.com/jishu/714931.html
CentOS K8s安装后如何进行性能测试 centos dopra部署流程是怎样的

游客 回复需填写必要信息