最近钻研了一段 Kubernetes,对它的直观感受就是上手成本昂贵,选择复杂多样。现成的 Kubernetes 集群价格十分昂贵,选择 Docker Desktop 和 MicroK8s 等本机部署方案难以感受到 Kubernetes 所能带来的集群健壮性,而部署 Kubernetes 集群对节点配置又有所要求。
即使是自称适用于 IoT 设备的 Lightweight Kubernetes 发行版 k3s,在 512 MB 内存的服务器上也处于完全不可用的状态。这意味着无法像运行 Web 服务器一样,用很低的配置就可以部署一个 Kubernetes 应用。对于个人开发者而言,拥有一个 Production Ready 的 Kubernetes 集群,托管方案实在成本过高。如果没有 SLA 要求,完全可以通过购置低价服务器,部署一个简易集群来压缩成本。
运行一个 Kubernetes 集群的成本主要包括:
部署私有项目还需要:
其中仅有机器成本是不可避免的开支,存储成本与负载均衡成本可以通过技术方案转嫁给 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 |
Google GKE、Azure AKS、Amazon EKS、Alibaba ACK、DigitalOcean 为代表的托管型 Kubernetes 服务提供商。
选择托管型 Kubernetes 服务商的优点是:
以及附加的优点:
缺点:
多数托管型 Kubernetes 服务商提供的节点价格与计算单元价格相同,有些还可以选择抢占式实例。
Google Cloud 上的负载均衡按照规则数量计价,$18 起。
Google 为所有的账户提供了一个免费的 f1-micro 实例,可以参考 Running a cheap GKE cluster with public ingress & zero load balancers 来将这个实例作为 Ingress 入口。
Google 的抢占式实例价格是浮动的,最长持有时间不能超过 24 小时,可以参考 Affordable Kubernetes Cluster 来了解在 GKE 使用抢占式实例来节约成本。
Azure AKS 最便宜的 B2S 实例每月需要 $37,不作考虑。
Amazon EKS 需要为每个集群每小时需要支付 $0.1,每月 $72,不作考虑。
DigitalOcean 相较而言是提供 Kubernetes 托管的服务商中价格最便宜的且定价简单,Worker 节点与 Droplet 价格相同,$10 起步:
DigitalOcean 提供的负载均衡 $10 每月。
自建 Kubernetes 集群对节点最低配置有着不低的要求,这意味着需要:
在低于这个配置的服务器上构建集群是毫无体验可言的,如果选择最低配置作为自建节点,Kubernetes 的基础组件就会把服务器配置全部占用完毕,如果需要启用监控(Prometheus)、服务网格(Istio)更是雪上加霜。而 Vultr、DigitalOcean 等国内常见厂商提供的服务器,仅有 $20 以上的套餐提供 2 vCPU,显然不太合适用来构建集群。
我翻腾了半天,找到了 Scaleway 这家服务器提供商,便宜大碗。
Scaleway 还提供基于 ARM 架构的 Cavium ThunderX 服务器,如果选择 ARM 架构的服务器还需要考虑到兼容性问题。
我以为 Scaleway 已经很便宜了,直到我看到了 Contabo 这家服务商惊天地泣鬼神的价格 ...
Contabo 还提供有更多配置选择,可以自行在官网查看。
除了提供完整 Kubernetes 集群的,还有一些提供 Kubernetes namespace 的托管服务商,无需自行维护负载均衡、存储,同时提供免费的配额。目前来讲 Namespace 提供商对于生产级要求都还不太成熟,仅适用于入门学习或部署小型应用。
DevSpace 是一款 Kubernetes 部署工具,同时提供用于演示的 DevSpace Cloud,有兴趣的还可以详细了解一下它的生态。
ZARVIS 额外限制 10 GB 流量,2 分支,每分支限制 6 pods。