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/namePrometheus数据采集配置
确保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错误。根据安装文档中的说明,有两种访问方式:
集群内服务访问(生产环境推荐):
PROM_URL: 'http://kube-prometheus-stack-prometheus.monitoring.svc.cluster.local:9090'端口转发访问(开发环境):
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系统提供以下关键监控指标:
- 资源利用率指标:CPU使用率、内存使用率
- 性能干扰指标:缓存未命中率、CPU时间片等待
- 调度效率指标:Pod放置质量、资源分配准确性
Grafana仪表板配置
您可以创建自定义Grafana仪表板来监控Paws系统性能:
- 导入Prometheus作为数据源
- 添加以下关键查询:
- 容器CPU使用率:
container_cpu_usage_total - 内存使用率:
container_memory_usage_bytes - Pod调度延迟:
kube_pod_scheduling_duration_seconds
- 容器CPU使用率:
🎉 总结与最佳实践
通过本文的10分钟快速指南,您已经成功搭建了基于Prometheus和cAdvisor的Paws资源监控环境。以下是几个关键的最佳实践建议:
生产环境部署建议
- 高可用配置:为Prometheus和Paws推荐器配置多个副本
- 数据保留策略:根据业务需求配置Prometheus数据保留时间
- 资源限制:为所有组件设置适当的资源限制
- 监控告警:配置关键指标的告警规则
性能优化技巧
- 调整查询间隔:根据集群规模调整Prometheus查询频率
- 优化标签存储:合理配置cAdvisor标签白名单
- 缓存策略:利用Prometheus的查询缓存提高性能
扩展与定制
Paws系统支持多种扩展方式:
- 自定义推荐算法:在algorithm目录中实现新的推荐算法
- 插件开发:基于Kubernetes调度框架开发新的调度插件
- 指标扩展:集成更多监控指标源
通过合理配置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),仅供参考
