两个Pod亲和性相关的问题

应用场景:
有两类应用Pod(PodA、PodB),PodA通过DaemonSet部署到K8s集群中,PodB通过Deployment方式部署并且与PodA亲和(即PodB必须在有PodA的节点中启动)。
问题阐述:
当PodA在某个节点被驱逐或异常停止时,需要PodB也从该节点驱逐。Pod亲和性只在PodB启动时有效,无法做到PodA消失后驱逐PodB的目的;使用污点方式只能设置节点和PodB的关系,而不能使PodA和PodB有关联关系。所以有没有好的办法实现上面的应用场景?

PS:
虽然PodA的镜像和PodB的镜像是关联的,但是因为要控制PodA的数量(PodB的副本数量比较庞大)所以没办法将两个镜像放在同一个Pod内。

听说社区提供的descheduler支持多种高级调度策略,专门用来做重调度的,这个可能刚好和亲和性主攻调度这块相反,你可以尝试看看

首先,DeamonSet方式是要求每个节点都需要部署,和Deployment无状态应用捆绑在一起,你很难实现动态的联动调度。在默认的K8S调度过程中,你驱逐一个应用并不会对其它应用Pod产生关联影响。所以你需要借助外力才可以。
应用的编排并不是交给调度器来做的,从K8S的控制器模式你就该猜到,应用的复杂编排应该交给控制器。所以你如果想实现动态的编排,需要自己写一个Operator来实现最为妥当。