【发布时间】:2018-04-11 07:32:37
【问题描述】:
我正在尝试创建一个 Kubernetes 作业,该作业由两个必须安排在我们的混合集群中的不同节点上的 pod 组成。我们的要求是其中一个 pod 运行在 Windows Server 节点上,另一个 pod 运行在 Linux 节点上(因此我们不能只从同一个 pod 运行两个 Docker 容器,我知道这是可能的,但在我们的设想)。 Linux pod(您可以将其想象为客户端)将通过网络与 Windows pod(您可以将其想象为有状态的服务器)进行通信,并在作业运行时交换数据。当 Linux pod 终止时,我们还想终止 Windows pod。但是,如果其中一个 pod 失败,那么我们希望两个 pod 都失败(因为它们被设计为一个作业)
我们目前的设计是写一个 K8S 服务来处理 Pod 之间的通信,然后将该服务和两个 Pod 应用到集群中来“模拟”一个作业。然而,这并不理想,因为这两个 pod 没有紧密耦合为单个作业,并且增加了相当多的开销来手动管理此设置(例如,当失败或作业时,我们可能需要手动终止服务和部署Windows 吊舱)。另外,我们需要为每个“作业”部署一个新服务,因为由于底层状态,我们要求 Linux pod 在作业期间始终与同一个 Windows pod 通信(因此不能对所有 Windows pod 使用单个服务)。
任何关于如何在 Kubernetes 上最好地实现这一点的想法将不胜感激!希望本机支持这种情况,并且我不需要采用我上面描述的这种 pod-service-pod 设置。
非常感谢
【问题讨论】:
标签: kubernetes