侧边栏壁纸
博主头像
青菜-halo2 博主等级

行动起来,活在当下

  • 累计撰写 74 篇文章
  • 累计创建 6 个标签
  • 累计收到 7 条评论

目 录CONTENT

文章目录

K8s资源优化小白指南:VPA+Goldilocks一键落地,告别凭感觉配置!

Administrator
2025-12-29 / 0 评论 / 1 点赞 / 16 阅读 / 0 字

作为K8s小白/运维新手,你是不是也遇到过这些头疼事?

  • 给应用配CPU/内存全靠“拍脑袋”,配多了浪费资源、增加成本,配少了服务崩了背锅;
  • 想优化资源,却看不懂复杂的监控数据,不知道从哪下手;
  • 自定义脚本开发门槛高,调试半天还怕误操作影响业务。

今天给大家分享一个零开发、一键部署的K8s资源优化方案——VPA(垂直Pod自动扩缩器)+ Goldilocks,相当于给你的K8s集群配了“资源配置大脑+可视化眼睛”,小白也能10分钟上手,精准优化资源配置!

vpa-2.png

一、先搞懂:这俩工具到底能干嘛?

不用记复杂概念,用两个比喻帮你秒懂:

  • VPA(Vertical Pod Autoscaler):K8s官方“资源优化大脑”
    自动监控Pod的历史CPU/内存使用率,计算出“不多不少”的最优配置(requests/limits),还能根据策略自动更新配置,不用人工干预。
  • Goldilocks:可视化“资源配置仪表盘”
    本身不做优化,专门把VPA的分析结果做成直观的网页,用颜色标注“配置合理(绿)、浪费(黄)、不足(红)”,小白也能一眼看明白。

两者搭配:VPA负责“算”,Goldilocks负责“展示”,再加上简单的命令就能完成优化,完美解决小白的资源配置难题!

二、前提准备:3个基础条件(必看!)

在部署前,确保你的环境满足这3个条件,否则会失败:

  1. 有一个正常运行的K8s集群(v1.19+最佳,低版本可能兼容问题);
  2. 集群能正常访问外网(需要拉取镜像和部署文件);
  3. 提前部署 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,就能看到可视化界面:

  1. 左侧选择应用所在的命名空间(比如 default);
  2. 找到你的应用(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会自动使用优化后的资源配置,不影响业务运行!

五、小白必看:常见问题故障排查

  1. Metrics Server部署后状态异常?
    解决方案:用阿里云镜像重新部署(前面已给出命令),或检查集群网络是否能访问外网。
  2. Goldilocks界面看不到应用?
    解决方案:确认VPA配置文件的 namespacename是否和应用一致,且应用处于Running状态。
  3. VPA不生成推荐?
    解决方案:VPA需要收集一段时间(约5-10分钟)的资源数据才会生成推荐,耐心等待;或检查应用是否有正常的流量(无流量可能无法生成数据)。
  4. 执行patch命令报错?
    解决方案:检查容器名称是否正确,或YAML格式是否有误(复制命令时注意引号是否完整)。

六、总结:

  1. 零开发:不用写一行代码,复制命令就能部署;
  2. 低门槛:可视化界面,不用懂复杂的监控指标;
  3. 高安全:VPA支持自动更新,也可手动确认,避免误操作;
  4. 官方背书:VPA是K8s官方工具,稳定性有保障,Goldilocks是开源明星项目,社区活跃。

用这个方案,小白也能快速搞定K8s资源优化,告别“凭感觉配置”的痛苦,既节省成本,又能避免服务因资源不足崩溃~

互动交流

如果操作过程中遇到问题,或有其他K8s小白疑问,欢迎在评论区留言!觉得有用的话,点赞+收藏吧~

1

评论区