- 問題描述:
一個接口突然不可用,這個接口是個圖形驗證碼接口,分成2步:
- 請求http://ip:port/captcha接口,返回:
{ captcha_id:xxxxx, cpatcha_png:a.png }
- 根據上一步的
cpatcha_png
再去請求http://ip:port/captcha/a.png
, 第一次可能失敗,再次請求就會成功
- 請求http://ip:port/captcha接口,返回:
- 解決步驟:
- 後端沒有修改過相關接口的代碼
- 前端很長時間都沒有修改過代碼了
- 發現k8s後端相關服務對應的pod由
1
個變成2
個了- 應該是第一次請求
http://ip:port/captcha
路由到了pod1
- 第二次請求
http://ip:port/captcha/a.png
路由到了pod2
- 由於用的captcha框架是把圖片放在了內存裏的, 本來圖片是在
pod1
裏的,請求圖片的時候路由到了pod2
裏,再請求一次,又請求到了pod1
裏了,所以出現第一次失敗,第二次成功
的情況
- 應該是第一次請求
- 解決辦法
把服務的sessionAffinity
由none
改爲ClientIP
,某個ip的所有請求都由同一個pod處理
K8s服務裏的sessionAffinity未設置導致的問題
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.