我们已经在GKE中启用了水平吊舱自动标度,我们的吊舱位于clusterIP类型服务的后面,我们使用NGINX控制器将公共流量路由到该服务。在监测使用情况时,我们注意到流量在豆荚之间的分布并不均匀。它把流量传送到一个吊舱。但是,每当我们手动删除这个特定的吊舱时,它就会将流量路由到另一个可用的吊舱。
有什么办法可以让入口规则平均分配流量吗?
攻入
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: nginx
kubernetes.io/tls-acme: "true"
nginx.ingress.kubernetes.io/load-balance: round_robin
nginx.ingress.kubernetes.io/ssl-passthrough: "true"
nginx.ingress.kubernetes.io/ssl-redirect: "false"
nginx.org/proxy-connect-timeout: 30s
nginx.org/proxy-read-timeout: 20s
generation: 11
name: test-ingress
namespace: default
spec:
rules:
- host: gateway.example.com
http:
paths:
- backend:
serviceName: gateway-443
servicePort: 443
path: /
- backend:
serviceName: gateway-80
servicePort: 80
path: /服务清单
apiVersion: v1
kind: Service
metadata:
annotations:
cloud.google.com/neg: '{"ingress":true}'
serviceloadbalancer/lb.cookie-sticky-session: "false"
serviceloadbalancer/lb.host: gateway.example.com
serviceloadbalancer/lb.sslTerm: "true"
labels:
name: gateway-default
port: gateway-default-8243
name: gateway-8243
namespace: default
spec:
clusterIP: 10.20.215.122
ports:
- name: pass-through-https
port: 443
protocol: TCP
targetPort: 8243
selector:
name: gatway-default
sessionAffinity: ClientIP
type: ClusterIP发布于 2021-06-01 12:09:28
最后,我找出了问题所在,原因是设置sessionAffinity: ClientIP,
只有当您希望确保来自特定客户端的连接每次都传递到相同的Pod时,您才应该将会话关联设置为ClientsIP,它将根据客户端的IP地址路由通信量。要在豆荚之间平均分配通信量,可以使用值" none“或删除此sessionAffinity参数,因为默认值为none。
参考文献,
https://kubernetes.io/docs/concepts/services-networking/service/#proxy-mode-userspace
发布于 2021-05-20 14:07:30
您的serviceName应该有一个metadata.name,在您的示例中是“网关-443”和“网关-80”,但是metadata.name中的服务中指定的实际名称是“网关-8243”。
(如果这是故意的,请发布其他资源的YAML,以便我可以查看整个设置。)
另外,请看一看此页,它有很多关于如何实现您想要做的事情的好例子。
https://stackoverflow.com/questions/67586537
复制相似问题