【k8s】svc-sessionAffinity


環境

  1. kubernetes 1.20.4
  2. Spring Boot 2.5.0-M3

目標

sessionAffinity 表示 session 親和,目前可以有兩種取值,一種是 None,也是默認值,表示沒有,
會直接輪詢 Pod。一種是 ClientIP,表示根據客戶端 IP 親和,同一個客戶端 IP,會被發送到同一個 Pod 上。

示例

Deploy.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: spring-k8s
spec:
  replicas: 4
  selector:
    matchLabels:
      app: spring-k8s
  template:
    metadata:
      labels:
        app: spring-k8s
    spec:
      containers:
        - name: spring-k8s
          image: jiangbo920827/spring-k8s:liveness
          ports:
            - containerPort: 8080

Service.yaml

apiVersion: v1
kind: Service
metadata:
  name: spring-k8s
spec:
  selector:
    app: spring-k8s
  ports:
    - port: 80
      targetPort: 8080

訪問

[root@master ~]# curl 10.104.121.41/hostname;echo
spring-k8s-79f74b55d7-qrr5j
[root@master ~]# curl 10.104.121.41/hostname;echo
spring-k8s-79f74b55d7-bsknz
[root@master ~]# curl 10.104.121.41/hostname;echo
spring-k8s-79f74b55d7-6hfwq
[root@master ~]# curl 10.104.121.41/hostname;echo
spring-k8s-79f74b55d7-d527c
[root@master ~]# curl 10.104.121.41/hostname;echo
spring-k8s-79f74b55d7-qrr5j
[root@master ~]# curl 10.104.121.41/hostname;echo
spring-k8s-79f74b55d7-bsknz
[root@master ~]# curl 10.104.121.41/hostname;echo

增加親和性

apiVersion: v1
kind: Service
metadata:
  name: spring-k8s
spec:
  sessionAffinity: ClientIP
  selector:
    app: spring-k8s
  ports:
    - port: 80
      targetPort: 8080

驗證

[root@master ~]# curl 10.104.121.41/hostname;echo
spring-k8s-79f74b55d7-qrr5j
[root@master ~]# curl 10.104.121.41/hostname;echo
spring-k8s-79f74b55d7-qrr5j
[root@master ~]# curl 10.104.121.41/hostname;echo
spring-k8s-79f74b55d7-qrr5j
[root@master ~]# curl 10.104.121.41/hostname;echo
spring-k8s-79f74b55d7-qrr5j

總結

sessionAffinity 可以設置會話親和性,可以選擇輪詢或者會話固定。

附錄


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM