k8s ingress配置websocket支援

2021-10-07 11:43:35 字數 1317 閱讀 9608

問題分析

表現形式

websocket鏈結 報錯 200

1
copy
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

123

4567

891011

1213

1415

1617

1819

2021

22

copy
apiversion: extensions/v1beta1     

kind: 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...