kubernetes 能否并发处理单任务pod?


在用K8S做平台时,做单任务的处理时,遇到到一些问题。

比如说,我起了一些pod,对外有service, 然后我想让Pod实现单任务,但是问题就是,service对pod选择机制是随机的,也就是说有可能会出现多个任务请求到一个POD上,这样达不到我的效果,我想要轮询的机制,当前service下有5个pod,当我下发5个请求时,我希望能达到5个请求分别在5个pod上执行,而不是下发5个请求后,出现有三个请求在1个pod上执行的情况。

最新版本的k8s kube-proxy使用的机制默认是:

iptables模式:当创建Service时,所有Node节点上的kube-proxy都会建立两级iptables规则,一级为Service创建,目的是将<服务虚拟IP,端口>的流量转给后端,另一级为EndPoints创建,目的是用于选择Pod. 当service.spec.sessionAffinity值为"ClientIP"时,iptables模式选择Pod的算法和userspace模式相同。当service.spec.sessionAffinity值为"None"时,随机选择Pod,所以如果被选择的Pod没有响应,不会尝试选择另一个Pod.
已邀请:

braveht

赞同来自:


我是这样想:轮询需要有单一入口,如果 ingress (load balancer) 不自己做 dispatch 的工作,那每个 service 都要有一个固定的入口,你可以观察 iptables 是否有这种规则

要回复问题请先登录注册