Я пытаюсь решить проблему с балансировкой нагрузки gRPC с помощью linkerd, но запросы будут распределяться равномерно, только если все службы развернуты на одном узле.Если я разверну серверы на другом узле, все запросы будут направлены на один из них.
https://imgur.com/a/F2GcbuY
И служба gRPC, и клиент являются приложением .Net.Kubernetes версия v1.12.3.Версия Linkerd стабильная - 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 в мой клиент, и он начал распределять запросы сейчас, но одна из служб все еще игнорируется балансировщиком нагрузки.
Обновление:
Я увеличил количество сервисов до 5, а клиентов - 3, и произошло нечто интересное.Все сервисы получают запросы сейчас, но для каждого клиента их запросы распределяются по 4 сервисам.
https://imgur.com/dXdjTsR