【发布时间】:2017-08-29 23:37:51
【问题描述】:
什么被认为是使用 K8S 管理多个环境(QA、Staging、Production、Dev 等)的良好实践?
例如,假设一个团队正在开发一个需要部署一些 API 以及前端应用程序的产品。通常,这将需要至少 2 个环境:
- 暂存:用于发布给客户端之前的迭代/测试和验证
- 生产环境:这是客户可以访问的环境。应包含稳定且经过充分测试的功能。
那么,假设团队使用 Kubernetes,托管这些环境的最佳做法是什么?到目前为止,我们已经考虑了两种选择:
- 为每个环境使用一个 K8s 集群
- 仅使用一个 K8s 集群并将它们保存在不同的命名空间中。
(1) 似乎是最安全的选择,因为它将潜在的人为错误和机器故障的风险降至最低,这可能会使生产环境处于危险之中。然而,这伴随着更多主机的成本以及更多基础设施管理的成本。
(2) 看起来它简化了基础架构和部署管理,因为只有一个集群,但它提出了一些问题,例如:
- 如何确保人为错误会影响生产环境?
- 如何确保暂存环境中的高负载不会导致生产环境中的性能损失?
可能还有其他一些问题,因此我正在与 StackOverflow 上的 K8s 社区联系,以更好地了解人们如何应对这些挑战。
【问题讨论】:
-
你是怎么做到的?请你让我们知道...我也在学习并尝试找出最好的方法。听起来像建立单独的集群可能是正确的方法......
-
我们最终拥有了两个集群,一个用于暂存,另一个用于生产。从基础架构的角度来看,需要额外的管理,但在我们的例子中,隔离级别是值得的。
-
@YoanisGil 这里有答案可以标记为已接受吗?
-
@tdensmore 大多数答案都以自己的方式很好。问题是,没有一个答案,这取决于所讨论的用例。我认为 K8s 和它的社区自从我第一次提出这个问题(现在差不多 3 年)以来已经成熟了很多,并且似乎至少有一些可以应用的最小最佳实践,无论使用了多少集群以及用于什么目的(我在考虑命名空间、网络策略、节点选择器、seccomp 等)。
标签: kubernetes