Kubernetes吊舱间通信

Kubernetes吊舱间通信,kubernetes,kubernetes-pod,kubernetes-service,Kubernetes,Kubernetes Pod,Kubernetes Service,我有2个部署—A(1个副本)和B(4个副本) 我在POD A中安排了作业,成功完成后,它通过部署B的服务到达部署B中一个POD中存在的端点 是否有一种方法可以在作业成功完成时命中部署B中4个POD的所有端点 理想情况下,通知一个pod!!但是这是可能的,因为我不想为此使用pub-sub。Kubernetes服务是提供服务发现和负载平衡的抽象。所以,如果您正在使用服务,您的请求将被发送到一个后端pod 为了实现您想要的,我建议您创建4个不同的服务,每个服务只有一个后端pod,或者在服务a和服务B之

我有2个部署—A(1个副本)和B(4个副本)

我在POD A中安排了作业,成功完成后,它通过部署B的服务到达部署B中一个POD中存在的端点

是否有一种方法可以在作业成功完成时命中部署B中4个POD的所有端点


理想情况下,通知一个pod!!但是这是可能的,因为我不想为此使用pub-sub。

Kubernetes服务是提供服务发现和负载平衡的抽象。所以,如果您正在使用服务,您的请求将被发送到一个后端pod

为了实现您想要的,我建议您创建4个不同的服务,每个服务只有一个后端pod,或者在服务a和服务B之间使用消息队列,如rabbitmq。

您可以使用。这样Kubernetes就不会分配单独的IP地址,而是用所有POD的IP地址设置DNS记录。然后在应用程序中,只需解析记录并向所有端点发送通知。但实际上,这是pub-sub或服务发现系统的理想用例。DNS对此太不可靠了

是否有一种方法可以在作业成功完成时命中部署B中4个POD的所有端点

但这是可能的,因为我不想用酒吧酒吧酒吧来做这件事

正如你所说的,酒吧间的解决方案最适合解决这个问题。但你不想用它

为服务B使用稳定的网络标识

若要在没有发布订阅的情况下解决此问题,您需要为部署B中的POD提供稳定的网络标识。若要获得此标识,您需要为服务B更改为a

statefulset对于需要以下一项或多项的应用程序很有价值

  • 稳定、唯一的网络标识符
当使用状态集部署B时,您的作业或其他应用程序可以访问B的POD,并且具有稳定的网络标识,该标识对于您部署的每个版本的服务B都是相同的。请记住,您还需要为您的吊舱部署一个

分散模式:您可以有一个应用程序感知(例如,感知服务B的吊舱数量)代理,可能作为一个侧车。您的作业将请求发送到此代理。然后,代理向您的所有副本发送请求。如中所述

发布订阅或请求回复

如果使用发布订阅,则作业仅发布事件。B中的每个pod负责订阅

在请求-应答解决方案中,作业或代理负责监视服务B中存在哪些pod(除非是固定数量的pod),此外,它需要向所有人发送请求,如果任何pod的请求失败(有时会在部署时发生),它负责重试对这些pod的请求


因此,是的,在请求-应答方式中,这是一个更为复杂的问题。

PUB-SUB是这里的最佳选择。我有类似的用例,我正在使用pub-sub,它已经在过去6个月的生产中。

问题是部署B可以有不同的pod..2,4,6。。因此,没有酒吧/酒吧,就没有其他方式了!!!!打字错误:ranbbitmq->rabbitmq@ArghyaSadhu这正是为什么我说“DNS对此来说太不可靠了”。如果没有酒吧酒吧或一些外部发现系统,这几乎是唯一的方法。@ArpanSharma你是对的。这是可能的,但酒吧间酒吧是解决这个问题的一个更好的办法。我认为这可以归结为关注点的分离,在这里发布活动更容易。B中的每个pod负责订阅。在请求-应答解决方案中,作业或代理负责监视服务B中存在哪些POD(除非是固定数量的POD),此外,它需要向所有人发送请求,如果任何请求失败(在部署时会发生),它负责重试对这些POD的请求。因此,是的,在请求-应答方式中,这是一个更复杂的问题。Pub-Sub是松散耦合的。您能详细描述一下用例吗?由于所有4个实例都是相同的,如果其中任何一个为调用服务,会有什么问题,为什么所有4个实例都应该同时进入图片?他们中只有一个应该为这个电话服务!!