不使用會話保持
前提條件
創建一個nginx工作負載,并確保工作負載的實例個數大于1,工作負載不需要其他的額外特殊配置。
創建一個ClusterIP類型的服務(Service)并關聯到上述nginx工作負載,注意Session Affinity不需要設置,保持默認值即可。
測試驗證
發起服務調用,在集群節點上執行這個命令發起對服務的100次調用 > for i in {1..100};do curl 10.96.116.221:80;done;
上述curl命令中的IP和端口來自如下地方:

觀察工作負載日志,查看Pod實例的日志輸出。
結論:服務請求會隨機的轉發到任一個Pod實例。
集群內請求會話保持
1、前提條件
創建一個nginx工作負載,同上。
創建一個ClusterIP類型的服務(Service)并關聯到上述nginx工作負載,注意需要展開高級設置,并設置Session Affinity為客戶端IP。
2、測試驗證
發起服務調用,同上。觀察工作負載日志,查看Pod實例的日志輸出。
結論:服務請求會全部轉發到某一個Pod實例,進行會話保持。
集群外NodePort訪問請求會話保持
1、前提條件
創建一個nginx工作負載,同上。創建一個NodePort類型的服務(Service)并關聯到上述nginx工作負載,指定一個合法的主機端口,注意需要展開高級設置,并設置Session Affinity為客戶端IP。
2、測試驗證
發起服務調用;在集群外執行這個命令發起對服務的100次調用 > for i in {1..100};do curl
10.142.232.160:30080;done;
上述curl命令中的IP可以是集群的vip或者集群任意節點IP,端口是服務(Service)中指定的主機端口。
觀察工作負載日志,查看Pod實例的日志輸出。
結論:集群外的請求會全部轉發到某一個Pod實例,進行會話保持。
集群外Ingress訪問請求會話保持
1、前提條件
創建一個nginx工作負載,同上
創建一個ClusterIP類型的服務(Service)并關聯到上述nginx工作負載,注意Session Affinity不需要設置,保持默認值即可。
確保當前命名空間已經綁定到一個負載均衡器:

創建一個生產路由(Ingress)并關聯到上述服務(Service)。
添加本地hosts映射:# ip為Nginx-Ingress-Controller的訪問地址 # 域名為創建Ingress時填入的域名 10.142.232.160 nginx.ccse.io
2、發起服務調用
在瀏覽器中多次發起對服務的請求 > //nginx.ccse.io:10080/
這里沒法通過curl來測試驗證,因為curl請求時沒法保持Cookie。
3、觀察工作負載日志
結論:瀏覽器中的請求會全部轉發到某一個Pod實例,進行會話保持。
集群外TCP/UDP訪問
集群外通過TCP/UDP沒法進行會話保持。