首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >入口规则不能在豆荚之间平均分配流量,

入口规则不能在豆荚之间平均分配流量,
EN

Stack Overflow用户
提问于 2021-05-18 12:49:22
回答 2查看 191关注 0票数 0

我们已经在GKE中启用了水平吊舱自动标度,我们的吊舱位于clusterIP类型服务的后面,我们使用NGINX控制器将公共流量路由到该服务。在监测使用情况时,我们注意到流量在豆荚之间的分布并不均匀。它把流量传送到一个吊舱。但是,每当我们手动删除这个特定的吊舱时,它就会将流量路由到另一个可用的吊舱。

有什么办法可以让入口规则平均分配流量吗?

攻入

代码语言:javascript
复制
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: /

服务清单

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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

如何在对Kubernetes服务的请求中使用会话亲和力?

票数 0
EN

Stack Overflow用户

发布于 2021-05-20 14:07:30

您的serviceName应该有一个metadata.name,在您的示例中是“网关-443”和“网关-80”,但是metadata.name中的服务中指定的实际名称是“网关-8243”。

(如果这是故意的,请发布其他资源的YAML,以便我可以查看整个设置。)

另外,请看一看此页,它有很多关于如何实现您想要做的事情的好例子。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67586537

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档