Kubernetes 多租户简介

什么是多租户?

在不同租户之间共享应用程序或软件的单个实例的想法称为多租户。自云环境兴起以来,这种方法非常流行。现在,随着 Kubernetes 的引入,开发人员和管理员需要在 Kubernetes 集群上实施相同的方法。因为这将提供更好的资源利用率,更好地管理底层计算资源,并降低成本。

这篇博文将讨论在 Kubernetes 集群中引入多租户的各种可用方法,并将尝试在所有这些方法之间进行比较。

如何使用多租户更好?

在讨论多租户架构之前,我们应该知道是部署单个 支持多租户的Kubernetes集群更好, 还是应该部署多个集群,每个租户都不同。

首先,对此没有特定规则,大多数组织根据易用性、管理等来决定这一点。部署多个集群很简单,因为您不必担心遵循其他最佳实践,例如审计 RBAC,为用户建立标准做法。除此之外,成本在做出此决定时也起着重要作用。如果成本不是问题并且您想要简单的架构,请部署多个集群。然而,如果您的计算需求要少得多并且您想节省一些额外的成本,多租户可能是更好的选择。其他一些因素也起着至关重要的作用,例如集群的生命周期,如果您的需求只是暂时的,多集群可能是一个可行的选择,因为您不必在集群上安装任何其他东西。

拥有多个集群的一个主要缺点是增加了管理开销,特别是对于大型环境,需要付出很多努力来保持每个集群的更新,还 需要更多的 安全审计。值得注意的是,虽然您可能会使用多集群方法,但您不应该通过犯一些小错误(例如将所有应用程序部署在同一命名空间中)来阻止围绕多租户的未来扩展。

多租户架构的不同方法

Kubernetes 中的多租户可以分为两大类:

  • 软隔离:在这种情况下,我们有一个企业,不同的团队访问同一个集群,这需要较少的安全开销,因为用户可以相互信任。

  • 硬隔离:当 Kubernetes 暴露给具有独立且完全不受信任的用户的多个企业时,这是必需的。

KubeCon Europe 2019讨论了各种方法,其中每种方法都可以列入上述两个类别中的任何一个。

e0ffbf4d40e47c3441cb86bc580316c1.png

上图概述了在您的环境中使用 Kubernetes 集群的 4 种不同方法。

  • 方法 A 这并没有提供精确的多租户解决方案,因为它部署了不同的 Kubernetes 集群。然而,仍然可以认为在这个解决方案中每个租户都会收到一个不同的 Kubernetes 集群,该集群与任何其他计算资源完全隔离。这可以通过使用隔离的 VM 提供商(如 Amazon EC2、GCP 计算实例和 vSphere VM)来实现。

  • 方法 B 这是一种流行的架构,其中隔离基于名称空间。这提供了不同租户之间的软隔离。这样,租户只能在其命名空间内查看、修改和创建对象。此外,他们可以在其命名空间内为安全性和角色创建策略。这种方法有两个主要缺点,一个是像 API 服务器这样的共享主组件,另一个是集群范围资源的配置。为开发这种方法而进行的主要工作是由 Project HNC(分层命名空间)完成的。

  • 方法 C 这种方法提供了一种在 Kubernetes 租户之间实现硬隔离的方法,这些租户之间没有信任。这通过在超级 Kubernetes 集群上创建迷你虚拟集群为每个租户提供隔离的主平面组件。管理员还可以在这些虚拟集群中创建自定义资源。这是由VirtualCluster 和 vCluster等项目提供的能力 。

  • 方法 D 与上述所有方法不同,这表明 Kubernetes 应该提供开箱即用的创建租户的支持。它尚未开发,因为需要修改 Kubernetes 源代码。

各种解决方案的比较

65aba5c5d8bb3ee070795d1519094e2b.png

Kubernetes 中多租户的一些用例

  • SaaS 应用程序多租户的实施可以使组织能够集中管理其多个客户的基础设施。这使 SaaS 组织可以轻松管理在不同租户之间共享的基础架构。

  • 更好的资源利用率由于多个团队可以共享一个集群,因此将需要更少的集群,这将更有效地利用集群资源。

结论

总而言之,多租户是 Kubernetes 的一个重要方案,它不是开箱即用的,但可以通过各种策略实现。它可以扩展 Kubernetes 的可用性,有助于实现更好的资源利用率,可以节省计费成本,对于集群管理员以高效的方式管理各种微服务也很重要。

原文:https://www.cncf.io/blog/2021/12/20/introduction-to-multi-tenancy-in-kubernetes/

参考

  • https://static.sched.com/hosted_files/kccnceu19/74/kubecon-eu-multitenancy-wg-deepdive.pdf

  • https://www.youtube.com/watch?v=SUW54Wlx6Po

  • https://github.com/kubernetes-sigs/hierarchical-namespaces

  • https://github.com/kubernetes-sigs/cluster-api-provider-nested/tree/main/virtualcluster

  • https://github.com/kubernetes-sigs/cluster-api-provider-nested/blob/main/virtualcluster/doc/vc-icdcs.pdf

f0e462d17a0a062d142b12d323fedae9.png

推荐

A Big Picture of Kubernetes

Kubernetes入门培训(内含PPT)


随手关注或者”在看“,诚挚感谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值