MicroK8s vs docker-compose 对比

一句话结论:
你的保管箱H5项目,优先选 docker-compose;MicroK8s 太重,属于大炮打蚊子。

核心定位区别

  • docker-compose:单机容器编排。只是帮你在一台机器上启动、停止一组容器,管理网络、卷、环境变量。没有调度、自愈、Pod、控制器这些K8s概念。
  • MicroK8s:完整Kubernetes(单节点)。MicroK8s只是把K8s打包简化,底层依然是K8s整套机制(deployment/pod/service/replicaset),自带自愈、滚动更新、资源限制、RBAC。代价:常驻后台、内存开销大、学习成本更高。

对比表

对比项 docker-compose MicroK8s
适用场景 单服务器、小型应用、开发/内部服务(你的Box保管箱H5) 需要K8s原生能力、未来可能扩到多节点、灰度发布、自愈
资源开销 很低。不启动容器几乎不占内存。 高。空载也要几百MB内存(就是你看到的kubelite进程),常驻后台
学习门槛 低。写yaml,up/down/logs,命令简单 高。要懂K8s资源:Pod、Deployment、Service、ConfigMap、RBAC
自动自愈 ❌ 容器crash不会自动重启(除非设置restart policy),没有监控重启机制 ✅ 内置自愈,pod挂了自动重建
多节点扩容 ❌ 只能单机,不能跨机器扩展 ✅ 支持多节点集群,一键加节点
滚动更新/灰度 ❌ 原生不支持,只能停机重建 ✅ 原生支持滚动升级、回滚
配置管理 env、.env、volumes,简单 ConfigMap/Secret,功能强但更复杂
日志/监控 基础,需要自己额外搭 生态丰富(prometheus/grafana插件一键开启)
启停成本 docker-compose up -d,down直接销毁 microk8s start/stop;就算停止,snap服务还在系统里
部署文件 compose.yaml 简短易懂 需要多个yaml(deployment、service、ingress等),文件多

什么时候选 docker-compose(你的场景)

你的业务:H5前端 + 后端API + 数据库(PG/MySQL)+ 图片存储。
✅ 优点:

  1. 一台Ubuntu虚拟机/PVE VM足够,资源占用极小,不用长期跑kubelite占用内存。
  2. 配置文件简单,维护轻松,备份、迁移方便(直接拷贝yaml+数据卷)。
  3. 上手快,排障简单,不需要学K8s一堆概念。
  4. 适合内部自用、中小流量,单实例即可。

缺点:

  • 如果服务器宕机,容器不会自动迁移;只有简单的容器重启策略。
  • 无法横向扩容到多台机器。
  • 没有原生滚动发布。
    对你这个项目,这些几乎都不是问题。

什么时候才选 MicroK8s

只有满足下面任意一条,才值得上 MicroK8s:

  1. 你想练习K8s,学习K8s生态(练手目的);
  2. 未来要部署到标准K8s集群,需要提前对齐yaml;
  3. 业务未来要跑在多台服务器;
  4. 需要大量高级能力:自动扩缩容、灰度发布、Ingress、RBAC细粒度权限。

代价:更高内存占用、更复杂排错、更多组件需要维护。单纯跑保管箱H5属于过度工程。

迁移成本

  • compose → MicroK8s:不能直接复用compose.yaml,需要把服务翻译成Deployment+Service+Ingress,要改很多配置。
  • MicroK8s 本质是K8s,写出来的yaml可以直接拿到正式EKS/ACK/自建K8s上跑。

给你的推荐方案

✅ 生产/自用部署保管箱Box H5:docker-compose
✅ 如果想学习K8s,单独开一个测试VM跑MicroK8s,不要混在一起跑业务

简单示例感受二者差异

docker-compose.yml(极简示例)

version: "3.8"
services:
  api:
    image: box-api
    ports:
      - "8080:8080"
    restart: always
    environment:
      - DB_HOST=db
  db:
    image: postgres:15
    volumes:
      - pgdata:/var/lib/postgresql/data
volumes:
  pgdata:

启动:docker-compose up -d

MicroK8s 需要分开至少:deployment.yaml + service.yaml,还要处理持久卷、ingress,代码量多很多。

补充提醒

MicroK8s的kubelite进程,哪怕集群stop,snap相关服务还存在;如果只是跑业务服务,没必要长期挂这个后台进程吃掉内存。

作者:月影鹏鹏  创建时间:2026-10-16 08:43
最后编辑:月影鹏鹏  更新时间:2026-10-16 08:44