作为K8s小白/运维新手,你是不是也遇到过这些头疼事?
- 给应用配CPU/内存全靠“拍脑袋”,配多了浪费资源、增加成本,配少了服务崩了背锅;
- 想优化资源,却看不懂复杂的监控数据,不知道从哪下手;
- 自定义脚本开发门槛高,调试半天还怕误操作影响业务。
今天给大家分享一个零开发、一键部署的K8s资源优化方案——VPA(垂直Pod自动扩缩器)+ Goldilocks,相当于给你的K8s集群配了“资源配置大脑+可视化眼睛”,小白也能10分钟上手,精准优化资源配置!

一、先搞懂:这俩工具到底能干嘛?
不用记复杂概念,用两个比喻帮你秒懂:
- VPA(Vertical Pod Autoscaler):K8s官方“资源优化大脑”
自动监控Pod的历史CPU/内存使用率,计算出“不多不少”的最优配置(requests/limits),还能根据策略自动更新配置,不用人工干预。 - Goldilocks:可视化“资源配置仪表盘”
本身不做优化,专门把VPA的分析结果做成直观的网页,用颜色标注“配置合理(绿)、浪费(黄)、不足(红)”,小白也能一眼看明白。
两者搭配:VPA负责“算”,Goldilocks负责“展示”,再加上简单的命令就能完成优化,完美解决小白的资源配置难题!
二、前提准备:3个基础条件(必看!)
在部署前,确保你的环境满足这3个条件,否则会失败:
- 有一个正常运行的K8s集群(v1.19+最佳,低版本可能兼容问题);
- 集群能正常访问外网(需要拉取镜像和部署文件);
- 提前部署
Metrics Server(VPA依赖它获取Pod资源使用率,小白直接复制命令部署即可)。
三、核心步骤:一键部署,全程复制粘贴
第一步:部署Metrics Server(前提依赖)
打开终端,直接复制以下命令,回车执行:
# 部署最新版Metrics Server
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
# 验证是否部署成功(看到Running状态就没问题)
kubectl get pods -n kube-system -l k8s-app=metrics-server
✅ 若出现“ImagePullBackOff”:是镜像拉取问题,替换镜像为国内源,执行以下命令:
# 替换Metrics Server镜像为阿里云源
kubectl set image deployment/metrics-server -n kube-system metrics-server=registry.aliyuncs.com/google_containers/metrics-server:v0.6.4
第二步:一键部署VPA(资源优化大脑)
VPA是K8s官方工具,直接用官方部署文件,复制命令执行:
# 部署VPA(v0.13.0版本,兼容大多数K8s集群,若集群版本<1.24,可换v0.12.0)
kubectl apply -f https://github.com/kubernetes/autoscaler/releases/download/vpa-0.13.0/vpa-v0.13.0.yaml
# 验证部署成功(3个组件都Running即可)
kubectl get pods -n kube-system -l app=vpa
第三步:一键部署Goldilocks(可视化仪表盘)
用Helm部署最简便,先安装Helm(若已安装可跳过),再部署Goldilocks:
# 1. 安装Helm(Linux/Mac通用,Windows直接下载exe:https://helm.sh/docs/intro/install/)
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
chmod 700 get_helm.sh
./get_helm.sh
# 2. 部署Goldilocks
helm repo add fairwinds-stable https://charts.fairwinds.com/stable
helm repo update
helm install goldilocks fairwinds-stable/goldilocks --namespace goldilocks --create-namespace
# 3. 验证部署成功
kubectl get pods -n goldilocks
四、实战操作:3步完成应用资源优化
部署完成后,我们以一个 default命名空间下的 my-app Deployment为例,教你完整的优化流程:
第一步:为应用开启VPA分析
创建一个VPA配置文件(直接复制以下内容,保存为 vpa-my-app.yaml):
apiVersion: autoscaling.k8s.io/v1
kind: VerticalPodAutoscaler
metadata:
name: my-app-vpa # 自定义VPA名称,和应用对应
namespace: default # 应用所在的命名空间
spec:
targetRef:
apiVersion: "apps/v1"
kind: Deployment # 若应用是StatefulSet,这里改StatefulSet
name: my-app # 你的应用名称
updatePolicy:
updateMode: "Auto" # 自动更新资源配置(小白推荐用Auto,安全)
resourcePolicy:
containerPolicies:
- containerName: '*' # 匹配应用的所有容器
minAllowed: # 最小资源限制(防止配置过小崩服务)
cpu: 50m
memory: 64Mi
maxAllowed: # 最大资源限制(防止配置过大浪费)
cpu: 1000m
memory: 1Gi
执行命令,应用配置:
kubectl apply -f vpa-my-app.yaml
✅ 说明:如果你的应用是StatefulSet,只需把 kind: Deployment改成 kind: StatefulSet,其他不变。
第二步:访问Goldilocks,查看优化推荐
执行以下命令,把Goldilocks的界面映射到本地(小白不用懂原理,直接复制):
kubectl port-forward -n goldilocks svc/goldilocks-dashboard 8080:80
打开浏览器,输入 http://localhost:8080,就能看到可视化界面:
- 左侧选择应用所在的命名空间(比如
default); - 找到你的应用(
my-app),界面会显示3类关键信息: * 当前配置:你现在给应用配的CPU/内存;- 推荐配置:VPA计算出的最优配置;
- 使用率:应用实际的资源使用情况(绿色=合理,黄色=浪费,红色=不足)。
第三步:一键应用推荐配置
在Goldilocks界面上,找到“Recommended Requests”(推荐配置),复制对应的CPU和内存值,然后执行以下命令(替换成你的应用信息):
# 示例:优化default命名空间下的my-app Deployment
kubectl patch deployment my-app -n default -p '{"spec":{"template":{"spec":{"containers":[{"name":"my-app-container","resources":{"requests":{"cpu":"150m","memory":"256Mi"}}}]}}}'
✅ 说明:
name: "my-app-container"要替换成你应用的容器名称(可通过kubectl describe pod 应用名称 -n 命名空间查看);- 执行后会触发应用滚动更新,新Pod会自动使用优化后的资源配置,不影响业务运行!
五、小白必看:常见问题故障排查
- Metrics Server部署后状态异常?
解决方案:用阿里云镜像重新部署(前面已给出命令),或检查集群网络是否能访问外网。 - Goldilocks界面看不到应用?
解决方案:确认VPA配置文件的namespace和name是否和应用一致,且应用处于Running状态。 - VPA不生成推荐?
解决方案:VPA需要收集一段时间(约5-10分钟)的资源数据才会生成推荐,耐心等待;或检查应用是否有正常的流量(无流量可能无法生成数据)。 - 执行patch命令报错?
解决方案:检查容器名称是否正确,或YAML格式是否有误(复制命令时注意引号是否完整)。
六、总结:
- 零开发:不用写一行代码,复制命令就能部署;
- 低门槛:可视化界面,不用懂复杂的监控指标;
- 高安全:VPA支持自动更新,也可手动确认,避免误操作;
- 官方背书:VPA是K8s官方工具,稳定性有保障,Goldilocks是开源明星项目,社区活跃。
用这个方案,小白也能快速搞定K8s资源优化,告别“凭感觉配置”的痛苦,既节省成本,又能避免服务因资源不足崩溃~
互动交流
如果操作过程中遇到问题,或有其他K8s小白疑问,欢迎在评论区留言!觉得有用的话,点赞+收藏吧~
评论区