在一个虚拟机上具有混合容器的Kubernetes?

时间:2019-03-07 05:43:40

标签: kubernetes

我在docker和kubernetes上玩了一些。这里需要一些建议-在虚拟机上拥有一个POD,并将所有这些POD部署在多个(混合)容器中是个好主意吗?

这是我们的POC计划:

  1. 客户使用公共API端点访问(nginx反向代理)。例如abc.xyz.com或def.xyz.com
  2. 我们需要的容器列表
    • 身份服务器已连接到SQL服务器
    • 我们的带有Hangfire的API服务器。已连接到SQL Server
    • 连接到Redis Server的API服务器
    • Redis具有3个具有Hangfire负载平衡(可扩展的未来功能)的代理程序

  1. 设置1个或2个VM?
  2. 建议将Windows和Linux容器结合使用?
  3. 每个VM有多少个Pod?每个吊舱有多少个容器?<​​/ li>
  4. 我们应该为数据库附加卷吗?

谢谢您的帮助

1 个答案:

答案 0 :(得分:0)

群集的大小可以根据您要使用的Kubernetes平台而有所不同。对于诸如GKE / EKS / AKS之类的managed解决方案,您无需创建主节点,但是您对我们的集群的控制较少,并且您不能使用最新的Kubernetes版本。

  1. 拥有至少2个工作节点是更安全的。 (越多越好)。如果节点发生故障,则将在另一个正常运行的节点上重新安排Pod的时间。
  2. 我想说linux容器更轻巧,开销也更少,但是由您决定使用什么。
  3. 每个VM的Pod数量是由kube-scheduler在调度过程中定义的,并且取决于Pod的请求资源和群集节点上可用的资源量。
  4. 重新启动/删除Pod后,Pod中正在运行的容器内的所有数据都将丢失。您可以在Pod启动期间使用Init容器(或数据库复制)导入/还原DB内容,或配置卷以在Pod重新启动之间保存数据。

如果从扩展,更新和可用性的角度查看应用程序集,则可以轻松决定需要将哪个容器放入相同的Pod中。

如果您可以从扩展,独立更新应用程序部分并拥有应用程序某些关键部分的多个副本中受益,则最好将它们放在单独的Deployments中。如果要求应用程序部分始终在同一节点上运行,并且可以一次重新启动它们,则可以将它们放在一个Pod中。