最近钻研了一段 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 | 内存 | 单价 | 数量 | 总价 |
---|---|---|---|---|---|
DevSpace | 1 vCPU | 2 GB | 0 | ||
KubeSail | 1 vCPU | 512 MB | 0 | ||
ZARVIS | 0.5 vCPU | 512 MB | 0 | ||
KubeSail | 1 vCPU | 2 GB | $7 | ||
Scaleway | 4 ARMv8 vCPU | 2 GB | €3 | 3 | €9 |
Scaleway | 2 vCPU | 2 GB | €3 | 3 | €9 |
Contabo | 2 vCPU | 4 GB | €4 | 3 | €12 |
Google GKE | 0.2 vCPU | 0.6 GB | $4 | 3 | $12 |
Contabo | 4 vCPU | 8 GB | €5 | 3 | €15 |
Scaleway | 6 ARMv8 vCPU | 4 GB | €6 | 3 | €18 |
Scaleway | 3 vCPU | 4 GB | €8 | 3 | €24 |
KubeSail | 4 vCPU | 4 GB | $25 | ||
DigitalOcean | 1 vCPU | 2 GB | $10 | 3 | $30 |
Google GKE | 0.5 vCPU | 1.7 GB | $14 | 3 | $42 |
DigitalOcean | 2 vCPU | 2 GB | $15 | 3 | $45 |
Google GKE | 1 vCPU | 3.75 GB | $25 | 3 | $75 |
DigitalOcean | 2 vCPU | 4 GB | $20 | 3 | $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 / 免费