【问题标题】:How do I implement session affinity with a Ingress controller using GCE load balancer如何使用 GCE 负载均衡器与 Ingress 控制器实现会话亲和性
【发布时间】:2018-02-09 03:56:22
【问题描述】:

我有以下入口配置:

ingressProd.yaml

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: wordpress
  annotations:
    kubernetes.io/ingress.class: "gce"
spec:
  tls:
  - hosts:
    - ***.net
    secretName: production-tls
  rules:
    - host: ***.net
      http:
        paths:
        - path: /*
          backend:
            serviceName: wordpress
            servicePort: 80

我很难找到有关如何启用上述会话亲和性的资源。以前使用过 LoadBalancer 服务,该服务按预期工作。

我需要调查什么?

【问题讨论】:

  • 一种可能的解决方法是直接从 Google Cloud Console 设置 google 负载平衡器上的会话亲和性。
  • Chris 这需要您创建一个新的负载均衡器,但是会产生额外的成本,而使用 gce 的 Ingress 应该已经这样做了。还有其他解决方法吗?我的配置与您上面的配置几乎相同,但我使用kube-lego SSL 证书配置和acme 注释。
  • 我还没有找到解决方案。不幸的是,该解决方法实际上并不起作用。
  • 我也将LoadBalancer 用于开发,然后打包所有内容并使用 Ingress。到目前为止,我还没有看到会话中断,后端应用程序是 Deployment,每个公开的服务都是 NodePort 类型和 Ingress 前端。在没有任何方法找到错误日志的情况下,我得到的是不时出现 502“30 秒后检查”页面错误,并且不认为会话粘性是原因。如果对亲和力有任何顿悟,请在此处更新。

标签: kubernetes google-cloud-platform load-balancing session-affinity


【解决方案1】:

当前的 GCE 入口控制器不支持会话亲和性。这是因为它不能直接对 Pod 进行负载均衡(它使用 nodeport 服务)。

如果您确实需要会话亲和性,当前的解决方案是在 GKE 中部署一个 ngnix-controller。 This link contains the deployment steps.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-20
    • 2019-10-20
    • 1970-01-01
    • 1970-01-01
    • 2021-09-06
    • 2013-02-09
    • 1970-01-01
    • 2021-12-04
    相关资源
    最近更新 更多