首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Kubernetes中有多个命名空间和多个集群有什么区别?

在Kubernetes中有多个命名空间和多个集群有什么区别?
EN

Stack Overflow用户
提问于 2020-06-28 08:39:55
回答 2查看 2K关注 0票数 4

我是一个初学者,了解库伯内特斯。

根据我的理解,命名空间是一个由同一个物理集群支持的虚拟集群。

在哪种用法中,我们应该选择单独的物理Kubernetes集群?

选择命名空间而不是物理Kubernetes集群可以节省哪些主要资源?(存在于物理集群的一个名称空间中的Kubernetes对象可以由所有其他名称空间共享,比如kube-system中的命名空间?)物理Kubernetes集群中的节点是否为所有名称空间所共享,但不可能在多个物理Kubernetes集群之间共享节点?)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-06-28 11:31:13

名称空间不是任何有意义的“虚拟集群”;它只是将资源组合在一起的一种方式。例如,这些服务是不同的,因为它们位于不同的名称空间中:

代码语言:javascript
复制
kubectl describe service --namespace n1 foo
kubectl describe service --namespace n2 foo

但是,n1中的服务可以调用foo.n2.svc.cluster.local,而无需执行任何特殊设置。

名称空间是Kubernetes RBAC设置的自然边界。如果一个对象直接引用另一个对象(例如,一个pod挂载一个持久的卷声明或从一个配置映射获取环境变量),那么它们通常必须位于同一个名称空间中。

在实际的集群中,节点是共享的。给定的节点可以从任何名称空间运行任何pod (除非在pod级别上进行了具体配置);kubectl describe node将显示这一点。如果一个pod非常大量地使用某些资源(CPU、内存、磁盘I/O),这可能会影响在同一节点上运行的其他吊舱。完全忽略名称空间边界。

当您希望实际分离事物时,您需要不同的集群:当一个环境中的服务不能在不同的环境中调用一个服务时,当集群级别的资源(如NodePort服务)需要分离时,如果围绕诸如PersistentVolume分配之类的事情有不同的策略的话。

共享集群意味着您需要更少的集群全局进程( Kubernetes核心、服务网格(如Istio) )的副本,并且您可以共享节点。这可能导致更好地利用大型节点。

例如,您可以将您的测试环境和生产环境分离到不同的集群中。它们将具有不同的外部DNS设置、独立的入口控制器和单独的节点池。您不可能意外地从外部向测试环境发送请求,测试环境上的负载测试不会影响生产环境。

票数 8
EN

Stack Overflow用户

发布于 2020-06-28 08:55:58

通常,一个单独的物理集群是必要的。

  1. 符合PCI DSSHIPPA等安全标准。
  2. 为关键工作负载提供专门的物理资源。
  3. 分离不同的环境,如DEV、TEST、PROD

许多租户使用自己的命名空间共享多租户集群,这对于节省成本非常有用。名称空间分离是逻辑的,所有名称空间的资源仍然驻留在相同的ETCD存储中,但具有不同的键。在单独的专用物理集群中,这不是一个问题,因为在这种情况下,集群也会有单独的ETCD。

跨名称空间对资源的访问由RBAC通过kubernetes API Server控制。但是,如果您可以直接绕过API访问ETCD,则可以从所有名称空间访问所有内容。

您需要在多租户集群中添加大量的最佳实践和保护,这样不同名称空间的租户就不会踩到彼此的脚跟。在一个单独的专用物理集群中,这并不是很有必要。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62620183

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档