如果 Kubernetes 负责编排,那么它能否替代 docker-compose 呢?
简短回答:不行。
Kubernetes 不仅仅是一个编排工具,它本质上是一款生产级别的容器编排和调度引擎。它比 docker-compose 更为高级。我认为 docker swarm、kubernetes 和 amazon ecs 属于同一类别。
那么,docker-compose 和 Kubernetes 可以一起使用吗?
在下一个版本的 docker 引擎中,您将能够使用 docker-compose 创建 kubernetes 对象。但目前还不能这样做。
我有一个 docker-compose 文件,其中包含多个微服务,但它们作为独立应用程序在单台机器上运行。可以(或应该)使用 Kubernetes 替换它吗?
好的,在生产环境中,我可以毫不犹豫地说,你绝对应该把应用托管到 Kubernetes 集群中,因为它提供了:
- 可靠性(如果 Pod 挂了就重新调度)
- 扩展性(基于 CPU 或其他任何指标缩放 Pod)
- 负载均衡(提供 VIP 知道服务并将所有 Pod 附加到它)
- 密钥和配置管理
- 命名空间(逻辑分组 Kubernetes 对象)
- 网络策略(自定义策略以控制 Pod 之间的流量)
- 以及许多其他开箱即用的功能。当您声明了一个状态后,Kubernetes 将始终尝试实现和维护该状态。
我有一个 docker-compose 文件,其中包含在群集模式下配置的多个服务(在多台机器上运行)。哪一部分必须由 Kubernetes 替换?整个 compose 文件?或者是否可以仅使用 Kubernetes 来编排群集并定义基本配置(env_var、卷、命令等)?我会用一个
kubernetes
集群和对象定义的
yaml
来替换整个 swarm 集群和 compose 文件构建。尽管如此,根据我的经验,这些
yamls
可能会变得有些冗长,所以如果您感兴趣,请查看
Helm。它是一个针对
kubernetes
的软件包管理器,您不一定需要使用它,但我认为它是目前
kubernetes
生态系统中最好的工具之一,并且有大量的开源图表可以使用。
我强烈建议在本地系统上使用
minikube
玩转
kubernetes
,以便熟悉一般的概念。然后您就能够自己回答上述问题了。