K8s服務裏的sessionAffinity未設置導致的問題

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