問題分析
表現形式
websocket鏈結 報錯 200
1copy
websocket connection to 'ws://*********' faile error during websocket handshake: unexpected response code: 200
猜測引起原因以及應對方式
解決方案
由於k8s集群入口是通過邊緣路由(ingress)來管理的 會存在如下的坑
那麼這個時候有兩種方案 來解決
1: ingress**tcp 內部增加乙個nginx 進行分發
略。。。 因為這個方案 為認為是迴避了k8s的原則 不使用此方案 理論上 這個方案是很好做的 就是有點違背k8s的玩法
2: 配置乙個新的單獨為所有websocket服務服務的ingress
參考文件:
新增乙個配置如下的ingress 檔名為 websocket-ingress.yaml
123copy4567
891011
1213
1415
1617
1819
2021
22
apiversion: extensions/v1beta1kind: ingress
metadata:
name: ingress名稱
namespace: ingress所屬命名空間
annotations:
#ingress使用那種軟體
kubernetes.io/ingress.class: nginx
#配置websocket 需要的配置
nginx.ingress.kubernetes.io/configuration-snippet: |
proxy_set_header upgrade "websocket";
proxy_set_header connection "upgrade";
spec:
rules:
- host: 識別的網域名稱
#**websocket服務
- path: /websocket位址
backend:
servicename: websocket服務名稱
serviceport: websocket服務埠
啟動該ingress
1
k8s ingress配置websocket支援
具體來說,使用的ingress controller不一樣,有關的設定也不太一樣 參考 在 nginx ingress controller 中預設已經支援websocket訪問,官方文件中說明websocket不需要特別的配置,但需要在註解中配置以下三項 網上看到的另一種寫法配置 沒實踐過,若是配...
k8s ingress獲取真實IP位址配置
業務架構 client waf lb ecs 容器 問題 在容器中獲取不到真實的客戶端公網ip 1.在ecs上的抓包分析,看到waf已經將 真實客戶端位址放到了 x forwarded for 的字段中傳給了ecs 2.在容器中抓包,看到乙個x forwarded for的字段是錯誤的 對應的ip為...
前後端分離架構 k8s ingress
接下來使用k8s進行發布應用 k8s集群 系統docker ip主機名 配置centos 7.6 19.03.5 192.168.31.150 k8s master 2核4g centos 7.6 19.03.5 192.168.31.178 k8s node01 2核4g centos 7.6 1...