集群外Ingress訪問請求會話保持
更新時間 2025-03-31 19:08:19
最近更新時間: 2025-03-31 19:08:19
分享文章
本文為您介紹如何集群外Ingress訪問請求會話保持。
背景信息
7層的模式下可以開啟基于http cookie和app cookie的會話保持 ,在ingress上開啟基于cookie的會話保持需要滿足以下條件:
- 確保您已經創建Serverless集群,具體操作請參閱創建Serverless集群。
- 確保kubectl工具已經連接目標集群。
操作步驟
步驟一:創建工作負載
創建一個nginx工作負載,并確保工作負載的實例個數大于1,部署2個副本,工作負載不需要其他的額外特殊配置。
- 登錄容器服務控制臺,在左側菜單欄選擇“集群”。
- 在集群列表頁面,選擇目標集群名稱,然后在左側菜單欄選擇“工作負載”下的“無狀態”,點擊“創建deployment”。
也可以使用yaml創建工作負載,創建nginx工作負載參考如下:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
namespace: default
spec:
replicas: 2
selector:
? matchLabels:
? ? app: nginx
template:
? metadata:
? ? labels:
? ? ? app: nginx
? spec:
? ? containers:
? ? - image: registry-huadong1.crs-internal.daliqc.cn/open-source/nginx:1.25-alpine
? ? ? imagePullPolicy: Always
? ? ? name: nginx
? ? ? ports:
? ? ? - containerPort: 80
? ? ? ? protocol: TCP
步驟二:創建service服務
為nginx工作負載創建service,注意Session Affinity不需要設置,保持默認值即可。參考如下:
apiVersion: v1
kind: Service
metadata:
name: nginx-service
namespace: default
spec:
ports:
- port: 30003
? protocol: TCP
? targetPort: 80
selector:
? app: nginx
type: ClusterIP
步驟三:確保當前命名空間已經綁定到一個負載均衡器
步驟四:創建一個生產路由(Ingress)并關聯到上述服務(Service)
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
? name: nginx-ingress
? namespace: default
? annotations:
? ? kubernetes.io/ingress.class: "nginx-ingress-controller"
spec:
? rules:
? - host: myingress.com
? ? http:
? ? ? paths:
? ? ? - backend:
? ? ? ? ? service:
? ? ? ? ? ? name: nginx-service
? ? ? ? ? ? port:
? ? ? ? ? ? ? number: 30003
? ? ? ? path: /nginx
? ? ? ? pathType: Prefix
步驟五:發起服務調用
添加本地hosts映射:ip為Nginx-Ingress-Controller的訪問地址; 域名為創建Ingress時填入的域名,如:10.142.232.160 myingress.com。
在瀏覽器中多次發起對服務的請求,這里沒法通過curl來測試驗證,因為curl請求時沒法保持Cookie。
觀察工作負載日志。
結論:瀏覽器中的請求會全部轉發到某一個Pod實例,進行會話保持。