【发布时间】:2019-09-10 16:54:58
【问题描述】:
我正在尝试学习 Kubernetes,以便将我的微服务解决方案推送到云中的一些 Kubernetes(例如 Azure Kubernetes 服务等)
作为其中的一部分,我试图理解主要概念,特别是 Pods + Workers 和(在 yml 文件中)Pods + Services。为此,我尝试将我的 docker-compose 文件中的内容与新概念进行比较。
上下文
我目前有一个 docker-compose.yml 文件,其中包含大约 10 个图像。我将解决方案分为两个“网络”:frontend 和backend。 backend 网络包含 3 个微服务,根本无法通过浏览器访问。 frontend 网络包含一个反向代理(又名 Traefik,就像 nginx),用于将所有请求路由到适当的 backend 微服务和一个简单的 SPA Web 应用程序。所有作品都 100% 很棒。
每个后端微服务至少有以下之一:
- Web API 主机
- 后台任务主机
所以这意味着,如果需要的话,我可以横向扩展 WebApi 主机。但我永远不应该横向扩展后台任务主机。
这是解决方案的简单示意图:
因此,如果 SPA 应用尝试使用以下路由请求一些数据:
https://api.myapp.com/account/1 这将命中反向代理并匹配规则,然后转发到<microservice b>/account/1
所以从这里开始,我正在尝试学习如何根据这些 docker-compose 概念编写 Kubernetes 部署文件。
问题
- 每个“Pod”都有自己的 IP,所以我应该为每个容器创建一个 Pod。 (是的,一个 Pod 可以有多个容器,对我来说,这就像说“在同一台机器上安装这些软件产品”)
- “工作节点”是我们复制/扩展的,因此我们应该根据扩展场景将
Pods 放入Node。例如,后台任务主机应该进入一个Node,因为它们不应该被缩放。此外,该节点的硬件要求非常小。虽然Web Api应该进入另一个Node,以便它们可以被复制/横向扩展
如果我按照上面的理解走在正确的道路上,那么我会有很多节点和 pod ......这感觉......很奇怪?
【问题讨论】:
标签: docker kubernetes microservices