选择适合个人开发者的 Kubernetes 廉价集群方案

最近钻研了一段 Kubernetes,对它的直观感受就是上手成本昂贵,选择复杂多样。现成的 Kubernetes 集群价格十分昂贵,选择 Docker Desktop 和 MicroK8s 等本机部署方案难以感受到 Kubernetes 所能带来的集群健壮性,而部署 Kubernetes 集群对节点配置又有所要求。

即使是自称适用于 IoT 设备的 Lightweight Kubernetes 发行版 k3s,在 512 MB 内存的服务器上也处于完全不可用的状态。这意味着无法像运行 Web 服务器一样,用很低的配置就可以部署一个 Kubernetes 应用。对于个人开发者而言,拥有一个 Production Ready 的 Kubernetes 集群,托管方案实在成本过高。如果没有 SLA 要求,完全可以通过购置低价服务器,部署一个简易集群来压缩成本。

运行一个 Kubernetes 集群的成本主要包括:

  • 机器成本(Master、Worker)
  • 存储成本(Volume)
  • 负载均衡成本(Load Balance)

部署私有项目还需要:

  • Git 仓库
  • 镜像仓库(Container Registery)

其中仅有机器成本是不可避免的开支,存储成本与负载均衡成本可以通过技术方案转嫁给 Kubernetes 的 Worker 节点,Git 仓库与镜像仓库都有免费方案可供选择(GitHub / GitLab,Docker Hub)。

最终价格对比

在这里计算一个不使用抢占式实例的三节点 Kubernetes 集群价格,同价格下配置更高的排序优先。

提供商CPU内存单价数量总价
DevSpace1 vCPU2 GB 0
KubeSail1 vCPU512 MB 0
ZARVIS0.5 vCPU512 MB 0
KubeSail1 vCPU2 GB $7
Scaleway4 ARMv8 vCPU2 GB€33€9
Scaleway2 vCPU2 GB€33€9
Contabo2 vCPU4 GB€43€12
Google GKE0.2 vCPU0.6 GB$43$12
Contabo4 vCPU8 GB€53€15
Scaleway6 ARMv8 vCPU4 GB€63€18
Scaleway3 vCPU4 GB€83€24
KubeSail4 vCPU4 GB $25
DigitalOcean1 vCPU2 GB$103$30
Google GKE0.5 vCPU1.7 GB$143$42
DigitalOcean2 vCPU2 GB$153$45
Google GKE1 vCPU3.75 GB$253$75
DigitalOcean2 vCPU4 GB$203$60

托管型 Kubernetes 服务商

Google GKE、Azure AKS、Amazon EKS、Alibaba ACK、DigitalOcean 为代表的托管型 Kubernetes 服务提供商。

选择托管型 Kubernetes 服务商的优点是:

  • 易集成存储
  • 易集成负载均衡
  • 无需为 Master 节点付费
  • 无需自行维护 Kubernetes 集群

以及附加的优点:

  • 云服务提供代码仓库(Git Hosting)
  • 云服务提供持续集成(CI / CD)
  • 云服务提供镜像仓库(Container Registry)

缺点:

多数托管型 Kubernetes 服务商提供的节点价格与计算单元价格相同,有些还可以选择抢占式实例。

Google GKE

Google Cloud 上的负载均衡按照规则数量计价,$18 起。

  • f1-micro / 0.2 vCPU / 0.6 GB / $4
  • g1-small / 0.5 vCPU / 1.7 GB / $14
  • n1-standard-1 / 1 vCPU / 3.75 GB / $25

Google 为所有的账户提供了一个免费的 f1-micro 实例,可以参考 Running a cheap GKE cluster with public ingress & zero load balancers 来将这个实例作为 Ingress 入口。

Google 的抢占式实例价格是浮动的,最长持有时间不能超过 24 小时,可以参考 Affordable Kubernetes Cluster 来了解在 GKE 使用抢占式实例来节约成本。

Azure AKS

Azure AKS 最便宜的 B2S 实例每月需要 $37,不作考虑。

Amazon EKS

Amazon EKS 需要为每个集群每小时需要支付 $0.1,每月 $72,不作考虑。

DigitalOcean

DigitalOcean 相较而言是提供 Kubernetes 托管的服务商中价格最便宜的且定价简单,Worker 节点与 Droplet 价格相同,$10 起步:

  • 1v CPU / 2 GB / $10
  • 2v CPU / 2 GB / $15
  • 2v CPU / 4 GB / $20

DigitalOcean 提供的负载均衡 $10 每月。

自建 Kubernetes 集群

自建 Kubernetes 集群对节点最低配置有着不低的要求,这意味着需要:

  • Master 节点:大于 2 GB 内存,最好配备两颗以上 CPU
  • Worker 节点:大于 1 GB 内存

在低于这个配置的服务器上构建集群是毫无体验可言的,如果选择最低配置作为自建节点,Kubernetes 的基础组件就会把服务器配置全部占用完毕,如果需要启用监控(Prometheus)、服务网格(Istio)更是雪上加霜。而 Vultr、DigitalOcean 等国内常见厂商提供的服务器,仅有 $20 以上的套餐提供 2 vCPU,显然不太合适用来构建集群。

Scaleway

我翻腾了半天,找到了 Scaleway 这家服务器提供商,便宜大碗。

  • DEV1-S / 2 vCPU / 2 GB / €2.99
  • DEV1-M / 3 vCPU / 4 GB / €7.99

Scaleway 还提供基于 ARM 架构的 Cavium ThunderX 服务器,如果选择 ARM 架构的服务器还需要考虑到兼容性问题。

  • ARM64-2GB / 4 ARMv8 vCPU / €2.99
  • ARM64-4GB / 6 ARMv8 vCPU / €5.99

Contabo

我以为 Scaleway 已经很便宜了,直到我看到了 Contabo 这家服务商惊天地泣鬼神的价格 ...

  • 2 vCPU / 4 GB / €3.99
  • 4 vCPU / 8 GB / €4.99

Contabo 还提供有更多配置选择,可以自行在官网查看。

NameSpace SaaS

除了提供完整 Kubernetes 集群的,还有一些提供 Kubernetes namespace 的托管服务商,无需自行维护负载均衡、存储,同时提供免费的配额。目前来讲 Namespace 提供商对于生产级要求都还不太成熟,仅适用于入门学习或部署小型应用。

KubeSail

  • 1 vCPU / 512 MB / 免费
  • 1 vCPU / 2 GB / $7
  • 4 vCPU / 4 GB / $25

DevSpace

DevSpace 是一款 Kubernetes 部署工具,同时提供用于演示的 DevSpace Cloud,有兴趣的还可以详细了解一下它的生态。

  • 1 vCPU / 2 GB / 免费

Z.A.R.V.I.S.

ZARVIS 额外限制 10 GB 流量,2 分支,每分支限制 6 pods。

  • 0.5 vCPU / 512 MB / 免费