我想在 Kubernetes 中部署一个传统的单片应用程序。
成千上万的客户使用此应用程序,每个客户都有自己的应用程序实例。如果我们有 5 个客户,我们应该运行此应用程序的 5 个独立实例。
该应用程序还调用 Kubernetes API 来运行一些作业。
我想确保一切都是隔离的,为每个客户创建单独的命名空间是个好主意吗?这会导致一些性能问题吗?有没有更好的解决方案?
答案1
简短回答:是的,命名空间隔离是朝着正确方向迈出的一大步,但是在尝试隔离集群资源时,IAM 配置和明确的 RBAC 策略是必须的。
长答案:这里你应该担心的是集群成本,Kubernetes 在设计上具有弹性和灵活性,因此如果你遇到性能瓶颈,只需一个命令即可扩展。如果你的集群不是本地集群,并且你计划使用云服务,我强烈建议Google Kubernetes 引擎 (GKE)因为它已经针对支持多租户进行了优化。
GCP 团队详述 K8s 多租户的最佳实践这里,我认为它将为您的问题提供更清晰的答案。