Kubernetes 具有会话相关性的Google容器引擎负载平衡器问题
我在Google GKE Kubernetes集群上运行了3个Nginx吊舱。我使用Kubernetes服务和负载平衡器选项(TCP级别4)将这些POD公开给外部internet。使用SessionAffinity:ClientIP选项打开粘性会话 当我访问外部URL时,请求被转发到SessionAffinity配置中预期的同一个内部Nginx pod。但是,如果我让浏览器空闲大约3分钟,然后再次访问外部URL,则请求会转到另一个Nginx pod。为什么会这样?我是否可以在GKE负载平衡器中配置SessionAffinity到期或超时 我的Nginx YamlKubernetes 具有会话相关性的Google容器引擎负载平衡器问题,kubernetes,google-compute-engine,google-kubernetes-engine,Kubernetes,Google Compute Engine,Google Kubernetes Engine,我在Google GKE Kubernetes集群上运行了3个Nginx吊舱。我使用Kubernetes服务和负载平衡器选项(TCP级别4)将这些POD公开给外部internet。使用SessionAffinity:ClientIP选项打开粘性会话 当我访问外部URL时,请求被转发到SessionAffinity配置中预期的同一个内部Nginx pod。但是,如果我让浏览器空闲大约3分钟,然后再次访问外部URL,则请求会转到另一个Nginx pod。为什么会这样?我是否可以在GKE负载平衡器中配
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 80
我的外部负载平衡器服务yaml
apiVersion: v1
kind: Service
metadata:
name: live
spec:
ports:
- name: name2
port: 80
targetPort: 80
nodePort: 31080
selector:
app: nginx
type: LoadBalancer
sessionAffinity: ClientIP
我猜使用的IP不是客户端的IP,而是节点平衡器节点的IP。我不知道GKE的情况,但我在CoreOS节点上遇到过这个问题。检查头部以查看客户端IP是否有效地被正确转发。正如我所说的,sessionAffinity属性可以工作大约3分钟。这表明负载平衡器至少在前3分钟内能够转发到正确的粘性吊舱。我怀疑Google网络负载平衡器在基于IP的粘性方面已经有些过时了。不幸的是,我还没有找到任何文档来备份它。你找到了吗?