Kubernetes建筑/设计/?

时间:2019-09-01 04:59:37

标签: docker kubernetes architecture

我试图弄清楚并学习将应用程序拥有的大量Docker容器移至Kubernetes的模式和最佳实践。例如pod的设计,服务,部署等。例如,我可以在其中包含单个Web和应用程序容器的情况下创建Pod,但这并不是一个好的设计。

使用Kubernetes搜索诸如架构和设计之类的东西似乎只会产生有关产品架构或如何实现Kubernetes集群的主题,而不是设计Pod,服务等的叠加。

在Kubernetes的世界中,社区通常指的是此应用程序的后期设计,请问有人可以将我推荐给101这个主题吗?

谢谢。

3 个答案:

答案 0 :(得分:1)

嗯,没有 Kubernetes 方法,而是一种 Cloud Native 方法:我建议您Designing Distributed Systems: patterns and paradigms,作者Brendan Burns。

这非常好,因为它提供了几种方案以及所采用的模式和相关代码。

大多数示例显然都基于Kubernetes,但是我认为实现并不是那么重要,因为您必须了解为什么和何时使用 Ambassador 模式或 FaaS < / em>根据应用需求。

答案 1 :(得分:1)

答案很复杂,这就是为什么软件/平台架构师必须很好地理解K8的原因。

通常,您会找到一个答案,告诉您“将每个应用程序组件放在一个容器中”。基本上这是正确的,因为K8的主要原因是高可用性,基础架构的容错能力以及类似的东西。如果您将每个组件放到单个容器中,并使其副本数大于2,这将使我们获得连贯的可用性。

但是您还需要知道为什么要去K8s。目前,这是一个热门话题。但是,如果您不想使用集群并且实际上不需要HA左右,为什么不运行AWS ECS,Digital Ocean Droplet和Co等东西呢?

当前可以找到的最佳答案是如何设计和削减微服务,因为每个微服务都可以在pod中表示。另外,RedHat Principles of container-based Application Design是一个很好的起点 或InfoQ

答案 2 :(得分:1)

Kubernetes是一个复杂的系统,逐步学习是获得专业知识的最佳方法。我向您推荐的是documentation关于Kubernetes的信息,从那里您可以了解每个组件。

另一个不错的选择是查看70 best K8S tutorials,它有多种分类方式。

在设计和运行应用程序时要考虑可伸缩性,可移植性和健壮性。以下是有关它的大量资源: