在kubernetes中,我部署了3个pods来负责套接字。
我希望在部署的pod之间实现流量负载均衡。为此,我使用了通过Helm安装的NGINX Ingress控制器,使用的是图表stable/nginx-ingress。
问题是客户端总是连接到同一个pod。没有平衡。
为了测试负载均衡,我使用了使用数据的sevaral电话(2-6个电话)。它们中的每一个都打开一个套接字连接。
我有两个入口规则。对于我正在使用的套接字:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress-socket-service
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/websocket-services: "node-socket-service"
nginx.ingress.kubernetes.io/proxy-send-timeout: "3600"
nginx.ingress.kubernetes.io/proxy-read-timeout: "3600"
nginx.ingress.kubernetes.io/upstream-hash-by: "$host"
spec:
tls:
- hosts:
- example.com
rules:
- host: example.com
http:
paths:
- path: /socket.io/
backend:
servicePort: 4000
serviceName: node-socket-service服务:
apiVersion: v1
kind: Service
metadata:
name: node-socket-service
spec:
type: ClusterIP
selector:
component: node-socket
ports:
- port: 4000
targetPort: 4000我尝试使用以下命令更改upstream-hash-by的值:$binary_remote_addr $remote_addr $host ewma $request_uri,不成功...
我想知道我做测试的方式是不是很好。负载平衡可能运行良好,但它需要更多的客户端。
发布于 2019-10-11 11:37:09
我假设您正在使用以下架构来访问您的pod:
入口控制器-> kubernetes服务-> kubernetes部署(POD)
如果是这种情况,那么您已经在使用具有统计轮询策略的负载平衡。因此,我可以得出结论,您的部署只有一个副本。通过运行kubectl describe deployment $YOUR_DEPLOYMENT检查复制副本的数量。通过运行kubectl scale deployment --replicas=5增加复制副本的数量。
如果您使用的是不同的架构,我需要对其进行检查,以验证为什么负载平衡不起作用。最有可能的情况是,您没有使用部署bud和Pod来部署容器。
https://stackoverflow.com/questions/58329994
复制相似问题