【发布时间】:2022-01-20 08:32:15
【问题描述】:
这是我的用例:
我有一个微服务,它通过入口网关实时和批处理发送流量。我想做的是能够在概念上定义一个 deployment 并让它创建两组 pod:
- 一组实时请求
- 另一个用于批处理。
部署新版本的微服务时,更新 k8s 部署,实时和批量使用新版本。
这在 k8s 中是否可行,还是我需要创建两个部署并分别管理它们?
【问题讨论】:
-
您可以将多个容器添加到一个 pod。
-
如果 pod 都是相同的,部署如何知道哪些请求指向哪些 pod?大概这些 pod 需要不同的设置或连接字符串?
-
Pod 是相同的。我要防止的是过多的批处理请求妨碍了实时请求。
-
无论如何,它似乎不可能如你所愿 - 在一个部署下运行一些 Pod 集。部署是一种更高的抽象,它管理一个或多个副本集以提供新版本的受控推出。 “PodTemplate 是创建 Pod 的规范,包含在 Deployment、Jobs 和 DaemonSets 等工作负载资源中。工作负载资源的每个控制器都使用工作负载对象内部的 PodTemplate 来制作实际的 Pod。PodTemplate 是所需状态的一部分您用于运行应用程序的任何工作负载资源。”只需一个 PodTemplate 即可部署。
-
这听起来像是 Istio 可以提供的帮助。如果服务定义为 VirtualService,您可以根据标头值(或其他条件)路由到不同的 DestinationRule 对象。
标签: kubernetes kubernetes-deployment