【问题标题】:Kubernetes - Create a separate namespace for each customerKubernetes - 为每个客户创建一个单独的命名空间
【发布时间】:2020-12-14 15:48:09
【问题描述】:

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

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

【问题讨论】:

标签: kubernetes kubernetes-namespace


【解决方案1】:

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

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

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

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

阅读更多:multi-tenant-cluster

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

请参阅:multi-tenant-loft

看看:best-practices-multitenant.

【讨论】:

    猜你喜欢
    • 2011-04-23
    • 2021-12-06
    • 1970-01-01
    • 1970-01-01
    • 2019-08-19
    • 1970-01-01
    • 1970-01-01
    • 2013-07-14
    • 1970-01-01
    相关资源
    最近更新 更多