session保持
service内部实现session保持,是在service的yaml里进行设置。
在service的yaml的sepc里加入以下代码:
kind: Service
apiVersion: v1
metadata:
labels:
k8s-app: myblog # 标签和pod 保持一致
name: myblog # service 的name
namespace: myblog-demo # 所处的命名空间
spec:
sessionAffinity: ClientIP # 开启了 session
sessionAffinityConfig:
clientIP:
timeoutSeconds: 10800 # session保持的时间 默认3小时
selector:
k8s-app: myblog
ports:
- protocol: TCP
port: 80
name: myblog
type: ClusterIP
-
timeoutSeconds指的是session保持的时间,这个时间默认是10800秒,也就是三个小时。
-
没有session保持时,service向后台pod转发规则是轮询。
-
session保持之后,k8s会根据访问的ip来把请求转发给他以前访问过的pod。