Kubernetes 中命名空间的使用

Usage of Namespaces in Kubernetes

我有一个关于名称空间的问题,想请教您的专业知识来消除我的疑虑。 我对名称空间的理解是它们用于在团队和项目之间引入逻辑边界。 当然,我在某处读到名称空间可用于 introduce/define 同一集群中的不同环境。 例如测试、UAT 和生产。

但是,如果一个组织正在开发一个解决方案并且该解决方案由 X 数量的微服务组成并且有专门的团队来管理这些服务, 我们是否仍需要使用名称空间来分隔它们,还是它们将部署在反映解决方案的单个名称空间中?

例如,如果我们正在开发电子商务应用程序: 库存、购物车、付款、订单等是我能想到的微服务。我们应该将它们部署在 sky-commerce 的命名空间下吗?或者他们应该需要专用的命名空间。?

我的另一个问题是。如果我们将服务部署在不同的命名空间中,我们是否可以通过 APIGateway/Ingress controller 访问它们?

例如,我有前端 SPA 应用程序,它有自己的 BFF(前端后端)。 BFF 可以通过 APIGateway/Ingress 控制器访问其他服务吗?

请帮我解开这些疑惑

在此先感谢您在这方面的及时回复。

RSF

命名空间很便宜,多用。如果两个东西 100% 是一个单元(两个始终同时更新并且在功能上是单个部署的守护进程),或者如果因为使用了相关对象(例如服务)而必须这样做,则只能将它们放在同一个命名空间与它引用的 Pods 在同一个 ns 中。

创建新的 Kubernetes 命名空间时,使用定义的系统调用使用命名空间 API 发送请求,并且由于 Kubernetes 具有管理员权限,因此将创建一个新的命名空间。新命名空间将包含在其域下分配的新进程的功能规范。

关于您上面的问题,是的,您可以将服务保留在不同的命名空间中,只要它们能够一起通信并将服务作为一个整体呈现给外界。

由于所有组织都是不同的,因此由您决定如何最好地实施和管理 Kubernetes 命名空间。一般来说,目标是:

  • 创建有效的 Kubernetes 命名空间结构

  • 保持名称空间简单且特定于应用程序

  • 标记一切

  • 必要时使用簇分离