Docker Swarm,Kubernetes和Compose

我刚刚在未来的Docker版本中听说过本地Kubernetes支持。 我之前从未使用Kubernetes,所以我开始阅读。 但是我有点困惑:Kubernetes被描述为编排工具,也是Dockers 群模式的替代品。

所以如果Kubernetes做配器,这也是docker合成的另一种select吗? 或者可以 Kubernetes一起使用?

一些具体问题:假设我想(或有)使用Kubernetes:

  • 我有一个包含多个微服务的docker-compose文件,但它们在一台机器上作为独立的应用程序运行。 是否可以(或应该)由Kubernetes取代?
  • 我有一个docker-compose文件,在群集模式下configuration多个服务(运行在多台机器上)。 哪一部分必须由Kubernetes取代? 整个撰写文件? 或者是在某种程度上可以在撰写文件中定义基本configuration(env_var,卷,命令,…),并使用Kubernetes来编排群集?

所以如果Kubernetes做配器,这也是docker合成的另一种select吗?

简答:不

这不仅仅是协调,基本上Kubernetes是一个生产级容器编排和调度引擎。 它比docker-compose更先进docker-compose自己。 我会说docker swarmkubernetesamazon ecs属于同一类别。

或者可以和Kubernetes一起使用?

在下一个版本的docker引擎中,您将能够使用kubernetes -compose创buildkubernetes对象。 但是现在你不能。

我有一个包含多个微服务的docker-compose文件,但它们在一台机器上作为独立的应用程序运行。 是否可以(或应该)由Kubernetes取代?

好的,在生产环境中运行的时候,我会绝对地说,你应该看看在kubernetes集群上托pipe你的应用程序,因为它提供了

  • 韧性(如果他们死亡,重新安排豆荚)
  • 缩放(基于CPU或任何其他指标的缩放窗格)
  • 负载平衡(提供VIP知道服务,并附加所有豆荚)
  • 秘密和configurationpipe理
  • 命名空间(kubernetes对象的逻辑分组)
  • networking策略(控制Pod之间stream量的自定义策略)

以及更多的function。 而当你宣布一个国家kubernetes总是试图达到并保持这种状态。

我有一个docker-compose文件,在群集模式下configuration多个服务(运行在多台机器上)。 哪一部分必须由Kubernetes取代? 整个撰写文件? 或者是在某种程度上可以在撰写文件中定义基本configuration(env_var,卷,命令,…),并使用Kubernetes来编排群集?

我将replace整个swarm集群,并使用kubernetes集群和对象定义yaml构build文件构造。 说到从我的经验来说,这些yamls可以得到一点详细,所以,如果你热衷于看看头盔 。 这是一个kubernetes软件包pipe理器,你不必使用它,但我认为它是目前kubernetes生态系统中最好的工具之一,并且有大量的开源图表可供使用。

我会强烈build议在本地系统上使用kubernetesminikube ,以便熟悉一般概念。 然后你就可以自己回答上述问题了。

首先,Kubernetes和Docker的Swarm“模式”都是容器编排工具。 Docker compose (工具和YAML文件格式)历来就是描述随后部署到Docker的Swarm模式编排器中的多容器应用程序的方式。

Kubernetes有自己的YAML服务定义(和其他定义文件格式),它们不使用组合文件格式。

然而,随着Docker的Kubernetes支持宣布,他们将提供Docker compose工具的function,以便还可以将构成YAML文件并将该构成文件(networking,服务+ env / secrets)的“内容”部署到Kubernetes集群,Kubernetes编排引擎将这些组件放在K8s吊舱上。

基于上述说法,您的问题实际上是您是否希望切换到在Kubernetes YAML中定义您的服务,环境,networking等,还是依靠Docker的支持来使用组合格式,并 Swarm模式或K8S。 这是Docker对Kubernetes或开源或其他商业Kubernetes选项的支持之间的一个商业决策,所以不一定要直接(和/或完全正确)回答你的问题。

您可以使用kompose现在使用现有的docker-compose文件与Kubernetes: https : //github.com/kubernetes/kompose 。 kompose会将您的docker组合服务转换为Kubernetes对象。

这个转换可能并不完美,因为docker-compose的“模式”和Kubernetes对象的模式之间没有1对1的匹配,但是它应该让你自由。

如果您的目标是在一台机器上运行,则不需要Kubernetes。 但是,如果您使用了kompose -compose文件的swarm模式,那么您应该尝试使用kompose