1

我想在 Kubernetes 中部署一个传统的单体应用程序。
成千上万的客户使用这个应用程序,每个客户都有自己的应用程序实例。如果我们有 5 个客户,我们应该运行这个应用程序的 5 个单独的实例。
该应用程序还调用 Kubernetes API 来运行一些作业。

我想确保一切都是隔离的,为每个客户创建一个单独的命名空间是个好主意吗?它会导致一些性能问题吗?有没有更好的解决方案?

4

1 回答 1

2

我认为您应该创建多租户集群。

此类集群由多个用户和/或称为“租户”的工作负载共享。多租户集群的运营商必须将租户彼此隔离,以避免受到损害的损害。您应该知道集群资源必须在租户之间公平分配。

当您规划多租户架构时,您应该考虑 Kubernetes 中的资源隔离层:集群、命名空间、节点、pod 和容器。您还应该考虑在特定租户之间共享不同类型资源的安全方面。

尽管 Kubernetes 不能保证租户之间的完全安全隔离,但它确实提供了可能足以满足特定解决方案的功能。例如,您可以将每个租户及其 Kubernetes 资源分离到各自独立的 命名空间中。然后使用 策略 强制执行租户隔离。策略通常由命名空间限定,可用于限制 API 访问、限制资源使用以及限制允许容器执行的操作。

阅读更多:多租户集群

然而,在使用 Kubernetes 实现多租户时,您需要决定是需要软多租户(专注于最大限度地减少事故和管理后果)还是硬多租户(假设租户是恶意的,因此提倡他们之间的零信任) . 无论如何,您必须回答以下问题:如何限制他们的资源使用,如何管理用户/租户以及如何将它们彼此隔离。有很多工具,例如: loft可以帮助您使用 Kubernetes 获得多租户。

请参阅:多租户阁楼

看看:best-practices-multitenant

于 2020-12-15T09:36:44.730 回答