You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于VPS与AWS、GCP等公有云搭建并管理多集群/节点自动扩缩容架构

混合VPS+公有云K8s集群落地方案

基础集群选型

推荐用k3s作为K8s发行版,占用资源低,部署难度远低于原生K8s,完全适配你在用的Ubuntu 20.04系统,不需要复杂的运维配置即可跑通全流程。

  • 控制面直接部署在你自有低价VPS上,预算充足可以配3台VPS做高可用控制面,避免单点故障
  • 控制面安装命令:curl -sfL https://get.k3s.io | sh -,安装完成后会自动生成节点接入token,存放在/var/lib/rancher/k3s/server/node-token路径

多环境节点纳管方案

你可以同时纳管自有VPS和公有云实例到同一个集群,全程不需要复杂配置:

  • 自有VPS接入:在新采购的VPS上执行节点接入命令即可完成加入,全程1分钟内完成:curl -sfL https://get.k3s.io | K3S_URL=https://<控制面公网IP>:6443 K3S_TOKEN=<你的控制面token> sh -
  • 公有云实例接入:给AWS EC2、GCP GCE实例执行和上面完全相同的接入命令即可加入集群,不需要额外适配
  • 节点调度配置:给自有VPS打标签node.kubernetes.io/type: on-prem,给公有云节点打标签node.kubernetes.io/type: cloud,给你的常规业务Deployment配置节点亲和性,优先调度到自有VPS,公有云节点仅作为弹性资源池使用,避免日常资源浪费。同时给公有云节点配置污点,只有弹性扩容的Pod才会调度到公有云节点

自动扩缩容配置

完全匹配你“高峰自动扩公有云、长期流量高就用VPS替换降本”的需求:

  1. 先给你的node.js、express等业务应用配置HPA(水平Pod自动扩缩容),根据CPU使用率、内存使用率或者自定义的QPS阈值自动扩容Pod副本数
  2. 配置Cluster Autoscaler(集群自动扩缩容),仅开启公有云节点池的自动扩缩容权限,关闭自有VPS池的自动缩容权限:当Pod因为自有VPS资源不足无法调度时,Cluster Autoscaler会自动创建公有云实例加入集群承接流量
  3. 当流量持续高位时,你手动采购新VPS加入集群后,自有节点会有闲置资源,Cluster Autoscaler会自动把公有云节点上的Pod迁移到自有VPS,然后自动销毁闲置的公有云节点,不需要你手动操作即可完成降本替换

技术栈适配配置

你现有技术栈可以无缝对接,不需要做大量改造:

  • 镜像构建&部署:直接用Github Actions自动构建Docker镜像,推送到Github Container Registry,之后触发K8s集群滚动更新即可,全程自动化
  • 数据库部署:MongoDB直接部署在自有VPS节点上,配置持久化存储,不要调度到公有云节点,避免节点缩容丢失数据
  • 前端Angular应用:打包成镜像和后端一起部署即可,也可以根据需求放到公有云对象存储加CDN加速,不影响集群架构
  • Firebase相关的云服务直接正常调用即可,不需要额外适配

试错步骤(适合DevOps经验较少的情况)

建议按顺序验证,风险极低:

  • 先拿3台自有VPS搭建基础集群,把现有业务迁上去跑通,验证基础部署、访问逻辑正常
  • 手动创建1台公有云实例加入集群,验证跨节点Pod通信、服务调用正常
  • 配置HPA和Cluster Autoscaler,模拟高流量测试,验证公有云节点自动扩容、流量承接逻辑正常
  • 手动加入一台新的自有VPS到集群,验证公有云节点自动缩容释放逻辑正常
  • 全流程跑通后再切生产流量,同时给公有云节点配置最大扩容数上限,避免异常流量产生高额账单

关键注意事项

  • 所有节点之间的防火墙只开放集群必要端口,公网通信可以配置IPsec隧道加密,避免数据泄露
  • 核心业务数据全部存在自有VPS的持久化存储中,不要用公有云节点的本地存储存重要数据
  • 可以配置账单告警,及时收到公有云消费异常的通知

内容的提问来源于stack exchange,提问作者Tommy Lambert

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 10:27:01