10分钟搭建Paws环境:基于Prometheus和cAdvisor的资源监控配置终极指南

10分钟搭建Paws环境:基于Prometheus和cAdvisor的资源监控配置终极指南

【免费下载链接】pawsPerformance Aware System is a system for precise resource recommendation and intelligent scheduling.项目地址: https://gitcode.com/openeuler/paws

前往项目官网免费下载:https://ar.openeuler.org/ar/

性能感知系统(Performance Aware System)是一个为大规模集群提供精确资源推荐和智能调度的系统。它通过Prometheus和cAdvisor实现精细化的资源监控,帮助您优化Kubernetes集群的资源利用率,同时确保应用服务质量。本文将为您提供一个快速搭建Paws环境的完整教程,让您在10分钟内完成基于Prometheus和cAdvisor的资源监控配置。

🚀 Paws核心功能与架构概述

Paws系统通过数据驱动的方法解决Kubernetes集群中的两个关键挑战:资源利用率优化性能干扰最小化。系统采用黑盒调度方法,即使在不了解工作负载内部细节的情况下,也能通过代理指标(如CPU利用率)实现智能调度。

系统主要组件包括:

  • DRIFT推荐器:提供运行中Pod的资源推荐算法
  • Prometheus:作为历史数据的中央存储库
  • PROM爬虫:从Prometheus抓取指标数据
  • VPA对象:支持自定义标签以实现各种优化

📋 环境准备与依赖安装

在开始之前,请确保您的环境满足以下要求:

系统要求

  • Kubernetes 1.22+ 集群或Kind集群
  • 可访问Kubernetes集群的Kubeconfig
  • Docker仓库访问权限
  • 已安装Kubernetes Vertical Pod Autoscaler

Prometheus和cAdvisor安装

Paws系统依赖Prometheus和cAdvisor来收集容器资源使用指标。以下是快速安装步骤:

# 安装Prometheus Stack helm repo add prometheus-community https://prometheus-community.github.io/helm-charts helm repo update helm install kube-prometheus-stack prometheus-community/kube-prometheus-stack # 配置cAdvisor容器标签存储 # 编辑cAdvisor配置以启用容器标签存储

关键配置点:cAdvisor需要正确配置容器标签存储。在vertical-pod-autoscaler/docs/install.md中提到的,您需要设置以下标志之一:

  • --store_container_labels=true
  • 或设置--whitelisted_container_labels标志包含Kubernetes推荐标签

⚡ 快速安装Paws系统

步骤1:安装Kubernetes VPA

首先安装Kubernetes Vertical Pod Autoscaler的基础组件:

git clone https://github.com/kubernetes/autoscaler.git cd vertical-pod-autoscaler ./hack/vpa-up.sh

步骤2:克隆并配置Paws项目

git clone https://gitcode.com/openeuler/paws.git cd paws/vertical-pod-autoscaler

步骤3:配置Prometheus连接

编辑配置文件config/recommender_config.yaml,设置Prometheus URL:

RECOMMENDER_NAME: 'paws-recommender' PROM_URL: 'http://kube-prometheus-stack-prometheus.monitoring.svc.cluster.local:9090' HISTORY_LENGTH: 86400 FORECASTING_DAYS: 7 SLEEP_WINDOW: 60

步骤4:部署Paws推荐器

# 构建并推送Docker镜像 docker build -t docker.io/your-repo/paws-recommender:v1.0.0 . docker push docker.io/your-repo/paws-recommender:v1.0.0 # 应用部署配置 kubectl apply -f manifests/core/recommender-deployment.yaml

🔧 Prometheus和cAdvisor详细配置

cAdvisor配置优化

为了确保Paws能够正确识别容器指标,cAdvisor需要配置正确的标签存储。在cAdvisor运行时选项中,建议使用以下配置:

apiVersion: apps/v1 kind: DaemonSet metadata: name: cadvisor spec: template: spec: containers: - name: cadvisor image: gcr.io/cadvisor/cadvisor:latest args: - --store_container_labels=false - --whitelisted_container_labels=io.kubernetes.container.name,io.kubernetes.pod.name,io.kubernetes.pod.namespace,app.kubernetes.io/instance,app.kubernetes.io/part-of,app.kubernetes.io/managed-by,app.kubernetes.io/name

Prometheus数据采集配置

确保Prometheus能够正确采集cAdvisor指标:

# prometheus配置示例 scrape_configs: - job_name: 'kubernetes-cadvisor' kubernetes_sd_configs: - role: node scheme: https tls_config: ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token relabel_configs: - action: labelmap regex: __meta_kubernetes_node_label_(.+) - target_label: __address__ replacement: kubernetes.default.svc:443 - source_labels: [__meta_kubernetes_node_name] regex: (.+) target_label: __metrics_path__ replacement: /api/v1/nodes/${1}/proxy/metrics/cadvisor

🎯 测试与验证配置

部署测试工作负载

使用提供的脚本快速部署测试环境:

cd vertical-pod-autoscaler/deploy_scripts # 部署PAWS VPA推荐器 ./start.sh # 部署VPA对象(Redis) ./deploy_test_vpa_object.sh # 部署测试工作负载(Redis) ./deploy_test_workload.sh

验证安装状态

检查所有组件是否正常运行:

# 检查VPA状态 kubectl get vpa # 检查Pods状态 kubectl get pods -n kube-system # 查看PAWS推荐器日志 kubectl logs [paws-recommender-pod-name] -n kube-system --follow

成功运行的日志应显示类似以下内容:

Successfully patched VPA object with the recommendation: [ { 'containerName': 'the-container-name', 'lowerBound': {'cpu': '100m', 'memory': '50Mi'}, 'target': {'cpu': '100m', 'memory': '50Mi'}, 'uncappedTarget': {'cpu': '10m', 'memory': '8Mi'}, 'upperBound': {'cpu': '100m', 'memory': '50Mi'} } ]

🛠️ 常见问题与故障排除

问题1:Prometheus连接失败(504错误)

当推荐器无法访问Prometheus时,可能出现504错误。根据安装文档中的说明,有两种访问方式:

  1. 集群内服务访问(生产环境推荐):

    PROM_URL: 'http://kube-prometheus-stack-prometheus.monitoring.svc.cluster.local:9090'
  2. 端口转发访问(开发环境):

    kubectl port-forward svc/kube-prometheus-stack-prometheus 9090:9090 -n monitoring

问题2:cAdvisor指标缺失

确保cAdvisor正确配置了容器标签。检查cAdvisor日志:

kubectl logs [cadvisor-pod-name] -n kube-system

确认日志中包含正确的标签存储配置。

问题3:VPA对象无推荐

检查Prometheus中是否有相关指标:

# 查询容器CPU使用率 curl -G 'http://localhost:9090/api/v1/query' \ --data-urlencode 'query=container_cpu_usage_total{container="redis"}'

🚀 高级配置与优化

优先级类别配置

Paws VPA使用优先级类别为不同工作负载选择最佳推荐算法。您可以在priority-classes目录中定义自己的Pod优先级类别。

cd vertical-pod-autoscaler/manifests/priority-classes kubectl apply -f .

调度器插件配置

Paws调度器包含时间利用率插件,可以通过以下配置启用:

# 调度器配置文件 plugins: multiPoint: enabled: disabled: - NodeResourcesFit - NodeResourcesBalancedAllocation pluginConfig: - name: TemporalUtilization args: hotSpotThreshold: 60 enableOvercommit: true

📊 监控与性能分析

关键监控指标

Paws系统提供以下关键监控指标:

  1. 资源利用率指标:CPU使用率、内存使用率
  2. 性能干扰指标:缓存未命中率、CPU时间片等待
  3. 调度效率指标:Pod放置质量、资源分配准确性

Grafana仪表板配置

您可以创建自定义Grafana仪表板来监控Paws系统性能:

  1. 导入Prometheus作为数据源
  2. 添加以下关键查询:
    • 容器CPU使用率:container_cpu_usage_total
    • 内存使用率:container_memory_usage_bytes
    • Pod调度延迟:kube_pod_scheduling_duration_seconds

🎉 总结与最佳实践

通过本文的10分钟快速指南,您已经成功搭建了基于Prometheus和cAdvisor的Paws资源监控环境。以下是几个关键的最佳实践建议:

生产环境部署建议

  1. 高可用配置:为Prometheus和Paws推荐器配置多个副本
  2. 数据保留策略:根据业务需求配置Prometheus数据保留时间
  3. 资源限制:为所有组件设置适当的资源限制
  4. 监控告警:配置关键指标的告警规则

性能优化技巧

  1. 调整查询间隔:根据集群规模调整Prometheus查询频率
  2. 优化标签存储:合理配置cAdvisor标签白名单
  3. 缓存策略:利用Prometheus的查询缓存提高性能

扩展与定制

Paws系统支持多种扩展方式:

  1. 自定义推荐算法:在algorithm目录中实现新的推荐算法
  2. 插件开发:基于Kubernetes调度框架开发新的调度插件
  3. 指标扩展:集成更多监控指标源

通过合理配置Prometheus和cAdvisor,Paws系统能够为您的Kubernetes集群提供智能的资源推荐和调度优化,显著提高资源利用率,同时确保应用性能不受影响。现在您已经掌握了快速搭建和配置Paws环境的核心技能,可以开始在实际环境中应用这些技术了!🎯

提示:记得定期检查官方文档和scheduler插件文档获取最新配置信息和最佳实践。

【免费下载链接】pawsPerformance Aware System is a system for precise resource recommendation and intelligent scheduling.项目地址: https://gitcode.com/openeuler/paws

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考