我正在研究现有的Kubernetes集群(非EKS)在AWS上设置的问题。我们正在尝试启用粘性会话支持,但我无法使其正常运行。我一直关注文档,但没有运气。这是我现在的位置:
我对头盔模板进行了这些更改(在批注的前面都带有和不带有nginx前缀)。我还没有弄清楚如何检查我们正在使用的Nginx-ingress-controller的版本,因此我已经尝试了两者,并且我知道注解已在12月17日更改。
annotations:
kubernetes.io/ingress.class: nginx
ingress.kubernetes.io/affinity: "cookie"
ingress.kubernetes.io/session-cookie-name: "route"
ingress.kubernetes.io/session-cookie-hash: "sha1"
部署了更改,当我描述入口时,我可以通过描述入口(同样,带有和不带有nginx前缀)看到它已部署。我真的不认为这部分是正确的,因为我所看到的示例是/注释之前的所有内容都不应该存在,而在这里。
Annotations:
ingress.kubernetes.io/affinity: cookie
ingress.kubernetes.io/session-cookie-hash: sha1
ingress.kubernetes.io/session-cookie-name: route
kubernetes.io/ingress.class: nginx
但是当我执行curl请求时,我可以看到将不设置cookie:
curl -I https://test.com/hello
HTTP/2 200
server: nginx/1.11.3
date: Mon, 27 Aug 2018 20:26:37 GMT
content-type: application/json; charset=utf-8
x-frame-options: SAMEORIGIN
x-xss-protection: 1; mode=block
x-content-type-options: nosniff
etag: W/"93a23971a914e5eacbf0a8d25154cda3"
cache-control: max-age=0, private, must-revalidate
x-request-id: fc91644f-a4b6-475b-9fb5-ccabe0551038
x-runtime: 0.006894
strict-transport-security: max-age=15724800; includeSubDomains; preload
vary: Origin
同样,我测试了有无nginx。粘性注释的前缀,并且没有任何变化,因此我必须缺少一些内容。
答案 0 :(得分:0)
找到了我的旧问题未解决。我的问题是我需要指定完整的注释。它需要nginx前缀
nginx.ingress.kubernetes.io/affinity: cookie
nginx.ingress.kubernetes.io/session-cookie-hash: sha1
nginx.ingress.kubernetes.io/session-cookie-name: route
答案 1 :(得分:0)
就我而言,我从这里安装了另一个入口控制器:-https://docs.nginx.com/nginx-ingress-controller/installation/installation-with-manifests/
从此链接https://kubernetes.github.io/ingress-nginx/deploy/安装入口控制器后,会话粘性对我来说很好。
我从这里使用过的YAML文件:-https://kubernetes.github.io/ingress-nginx/examples/affinity/cookie/ingress.yaml
要使用上述YAML文件中使用的域名,我在/ etc / hosts文件中添加了一个条目。