在kubernetes中,我部署了3个Pod来负责套接字。
我希望在部署的Pod之间平衡流量。为此,我使用的是通过图表stable/nginx-ingress通过Helm安装的NGINX Ingress控制器。
问题在于客户端始终连接到同一吊舱。没有平衡。
为了测试负载平衡,我使用了使用数据的电话(2-6个电话)。他们每个人都打开一个套接字连接。
我有2条进入规则。对于我正在使用的套接字:
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
,但未成功...
我想知道我的测试方式是否良好。可能是负载平衡运作良好,但需要有更多客户端。
答案 0 :(得分:0)
我假设您正在使用以下架构来访问您的Pod:
入口控制器---> kubernetes服务---> kubernetes部署(POD)
如果是这种情况,那么您已经在使用带有统计轮询策略的负载平衡。我可以得出结论,您的部署只有一个副本。通过运行kubectl describe deployment $YOUR_DEPLOYMENT
检查副本的数量。通过运行kubectl scale deployment --replicas=5
增加副本的数量。
如果您使用的是其他体系结构,则需要对其进行检查,以验证负载平衡为什么不起作用。您很有可能没有使用Deployment Bud Pod来部署容器。