gpt4 book ai didi

kubernetes - Linkerd 以意想不到的方式对 gRPC 服务进行负载均衡

转载 作者:行者123 更新时间:2023-12-02 12:18:19 57 4
gpt4 key购买 nike

我正在尝试使用 linkerd 解决 gRPC 负载平衡问题,但只有当所有服务都部署在同一节点上时,请求才会均匀分布。如果我在不同的节点上部署服务器,所有请求都将被定向到其中一个。

https://imgur.com/a/F2GcbuY

gRPC 服务和客户端都是 .Net 应用程序。 Kubernetes 版本为 v1.12.3。 Linkerd 版本是 stable-2.1.0。

这是我的 gRPC 服务的配置:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
labels:
app: demogrpc-deploy
name: demogrpc
spec:
replicas: 3
selector:
matchLabels:
app: demogrpc
template:
metadata:
labels:
app: demogrpc
spec:
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- topologyKey: kubernetes.io/hostname
labelSelector:
matchLabels:
app: demogrpc
tolerations:
- key: node-role.kubernetes.io/master
operator: Exists
effect: NoSchedule
containers:
- image: 192.168.99.25:30000/demogrpchost:1.0.9
imagePullPolicy: Always
name: demogrpc
env:
- name: GRPC_HOST
value: "127.0.0.1"
- name: SERVICE_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: GRPC_PORT
value: "8000"
ports:
- containerPort: 8000
name: grpc
imagePullSecrets:
- name: kubernetes-registry
---
apiVersion: v1
kind: Service
metadata:
labels:
app: demogrpc
name: demogrpc
spec:
clusterIP: None
ports:
- port: 8000
targetPort: 8000
selector:
app: demogrpc

当服务部署在不同的节点上时,如何进行负载均衡?

更新:

我将 linkerd 注入(inject)到我的客户端,它现在开始分发请求,但是负载均衡器仍然以某种方式忽略了其中一项服务。

更新:

我将服务扩大到 5 个,客户扩大到 3 个,发生了一些有趣的事情。现在所有服务都接收请求,但对于每个客户端,它们的请求被分发到其中的 4 个服务。

https://imgur.com/dXdjTsR

最佳答案

配置链接 服务网格,每个节点都会有一个 Linkerd。不会有service-to-service跨节点直接通信,仅 链接 被允许与另一个 Linkerd 交谈。 Linkerd 将与在同一节点中创建的服务进行通信。

在您的情况下,您的 Kubernetes 服务将与 链接 ,然后 Linkerd 会将其请求分发给所有其他 Linkerd。这就是请求在节点之间分布的方式。然后上游 Linkerd 将在其节点上的服务之间分发请求。

enter image description here

要了解更多信息,请查看:linkerd-as-a-service-mesh

关于kubernetes - Linkerd 以意想不到的方式对 gRPC 服务进行负载均衡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53878758/

57 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com