如何将请求分发到Kubernetes服务上的POD

如何将请求分发到Kubernetes服务上的POD,kubernetes,Kubernetes,我有一个服务和4个豆荚,每个豆荚上都安装了wordpress。这是我的服务配置: apiVersion: v1 kind: Service metadata: name: my-service spec: ports: - port: 31001 nodePort: 31001 targetPort: apache protocol: TCP selector: app: wordpress type: NodePort 现在所有流量都是由服

我有一个服务和4个豆荚,每个豆荚上都安装了wordpress。这是我的服务配置:

apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  ports:
  - port: 31001
    nodePort: 31001
    targetPort: apache
    protocol: TCP
  selector:
    app: wordpress
  type: NodePort
现在所有流量都是由服务随机分配的。我想把它改成非随机的(我想它的名字是
round-robin
)。 我读过,但不明白

有没有办法分别管理流量?
有人能给我举个例子吗?

正如@Meysam提到的,Kubernetes服务默认使用“循环”技术将请求分发给POD

我建议您(以及将来阅读本主题的所有人)阅读更多关于和的信息。它将揭示大量的问题

Kubernetes使用一种称为kube代理的功能来处理服务的虚拟IP。Kubernetes通过循环方法将任务分配给服务中的POD

通过循环分配,系统维护目的地列表。当一个请求进入时,它将请求分配给列表上的下一个目的地,然后排列列表(通过简单的旋转或更复杂的方法),这样下一个请求将转到列表上的下一个目的地


嗨,你想要什么替代方法?有一个名为
sessionaffinity
的字段,可以根据会话选择固定pod。下面是进一步阅读的命令
kubectl explain svc.spec.sessionAffinity
有很多方法可以定义“相等”。这可能意味着请求分发器跟踪这4个服务,并将请求分发给服务1、2、3、4、1、2、3、4等。这是循环。另一种同等定义的方法是服务4位于慢速节点上,因此它只能处理服务1、2、3的一半请求。因此,分发服务器将执行1,2,3,4,1,2,3,1,2,3,4,1,2,3等操作。另一种方法是识别来自用户的请求并具有会话状态,因此来自用户1的请求始终必须转到服务3上的会话。您能澄清一下吗?但是,一般来说,k8s服务不提供智能流量分配,只支持循环。要使用其他技术(加权、关联、重试),您需要使用入口资源。您所说的“相似”是什么意思?您如何看待问题中“随机”和“循环”之间的区别?默认情况下,Kubernetes服务会执行听起来像您想要的操作,但是有人担心它吗?很抱歉,在我的评论中,我使用的“服务”是“微服务”的缩写,而不是“k8s服务”,可以理解为“pod”。好的,是的,在高层,k8s服务通过循环向支持pod分发请求。这背后有更多的细节,每个pod的请求数量永远不会完全相等的原因有很多,但在高级/常见情况下,这是循环。