【发布时间】:2021-08-04 15:05:32
【问题描述】:
我们正在将老化的单体架构迁移到更强大的解决方案,并将 Kubernetes 作为最合适的平台来实现我们的目标。同时,我们希望拆分和隔离我们的客户数据,以确保安全并改善隐私。
我们正在考虑最终让每个客户拥有一个数据库,并将这些连接详细信息嵌入到每个客户的部署中。然后,我们将构建某种路由服务,将客户端的请求链接到它们各自的部署/服务。
由于我们的各个客户端的规模差异很大(我们有一些每分钟产生数千个请求,而另一些则每天产生数百个请求),我们喜欢能够扩展它们的选项通过部署上的 ReplicaSet 独立进行。
但是,我对集群中可以存在/成功管理的部署数量上限有些担忧,因为我们可能会关注数百个不同的客户端,这些客户端将继续增长。我还担心成本,以及为我们的小客户提供专用资源(基本上是整个虚拟机)可能会如何影响我们的预算。
所以我的问题是:
- 这是个好主意吗?为什么或为什么不,如果没有,我们是否可以考虑使用替代架构来实现相同的目标?
- 这个解决方案是否比它需要的更昂贵?
如果您能提供任何见解,我将不胜感激,谢谢!
【问题讨论】:
-
您有/预计有多少客户?如果您有 1,000 个客户端,其中 90% 处于“每天数百个请求”的长尾范围内,并且每个副本需要 4 GB 的 RAM,那么您将支付 4 TB 的 RAM 以大部分时间处于空闲状态.这么多 pod 也会给 Kubernetes 核心带来一些压力。
-
我们还没有深入研究,因为我们仍在探索中,但使用率非常高的客户端的数量可能不到十几个。其他几百个可能要小得多。中间没有太多。如果隔离较小的客户端通常资源效率非常低,那么是否有一个合理的中间地带可以很好地与较大的客户端的全面隔离一起发挥作用?
-
@Hackerman 只是为了让我正确理解这一点:这个拓扑是否表示每个租户都有自己的命名空间?这里是否也期望这些是相同的应用程序,为四个不同的客户端运行?我也不确定我是否完全理解为什么客户端会自己与控制平面进行交互。我希望它们与应用程序交互,并且应用程序将根据需要与控制平面交互。
-
简短回答,是的:)。有很多关于“K8s Multitenancy Namespaces”的文档
标签: kubernetes architecture containers google-kubernetes-engine