生产环境中哪种隔离Kubernetes集群?



我想知道构建Kubernetes集群的最佳实践。对于一个环境(例如生产),我的集群中应该有什么组织?

示例:每个技术栈1个集群,每个暴露区域1个集群(internet, private…),1个集群包含所有…

?谢谢你的帮助

我不是Kubernetes专家,所以我会给你一些通用的指导,直到有更了解的人参与进来。

  • 按技术堆栈-编号。我想不出有什么价值。
  • 通过"暴露"-是的。如果一个集群被破坏,损害将仅限于该集群。
  • 按解决方案-是

解决方案vs技术堆栈

"Solution"在这里,您有许多系统来解决特定的业务问题或领域。这可以是功能性的,例如财务vs CRM vs HR。

字面意义上的技术栈不太可能是相关的。的确,不同的解决方案并不罕见& &;系统应该由不同的技术组成(你是这个意思吗?)——但这通常是副产品,而不是主要驱动因素。

假设你有两个主要的解决方案(例如财务和CRM)。你可能会遇到影响其中一个而不影响另一个的情况。

  • 计划的功能变更:例如推出一个主要版本。多年来,面向对象的程序员和架构师通过设计内聚但松散耦合的系统(参见:内聚和耦合的区别)以及稳定依赖原则等东西,已经确定了这一点。两个解决方案依赖于同一个集群使得它们在这方面是耦合的,这。

  • 计划的基础设施变更:如补丁、维护、资源重新分配等

  • 计划外变更:如计划外中断、安全漏洞。

结论

查看将在集群上运行的是什么,以及它们是哪些解决方案的一部分,并考虑按照这些线进行分离。

最终的答案可能是两者的结合,在安全关注和解决方案(即更改)边界之间的某种平衡。

最好的方法是使用1个kubernetes集群并将工作节点置于私有子网中。您可以选择将控制平面置于受限访问的公共子网中,如VPN cidr等。

如果您有多个团队或应用程序堆栈,我建议为每个堆栈使用不同的命名空间,因为这会创建资源的逻辑分离。

同时,检查可以在kubernetes上应用的资源限制和配额,以防止过度消耗资源。

并且,正如您提到的多个应用程序堆栈,我假设您将为每个应用程序或类似的东西公开多个服务。我强烈建议使用入口控制器(nginx或任何东西)作为每个应用程序的单点入口。您可以让多个应用程序监听一个负载均衡器。

另外,使用prometheus或ELK监视,因为它们非常适合监视k8s组件和指标。

并且,我强烈建议使用kubecost和kubebench工具来增强您的k8s集群。

Kubecost用于k8s组件的成本分析和报告,kubebench将根据CIS标准审核您的集群,并向您报告需要哪些改进以及在何处进行改进。

请注意,上述建议是基于最佳实践和成本效率。

相关内容

  • 没有找到相关文章

最新更新