阿里云ACK安装2.6.5rancher报错websocket handshake 400

Rancher Server 设置

  • Rancher 版本:Rancher 2.6.5
  • 安装选项 (Docker install/Helm Chart): Helm Chart
    • 如果是 Helm Chart 安装,需要提供 Local 集群的类型(RKE1, RKE2, k3s, EKS, 等)和版本:阿里云ACK
  • 在线或离线部署:在线

下游集群信息

  • Kubernetes 版本: 1.20.11-aliyun.1
  • Cluster Type (Local/Downstream): local
    • 如果 Downstream,是什么类型的集群?(自定义/导入或为托管 等):

用户信息

  • 登录用户的角色是什么? (管理员/集群所有者/集群成员/项目所有者/项目成员/自定义):admin
    • 如果自定义,自定义权限集:

**问题描述:**rancher ui界面可以正常访问,但是F12后台持续报错

重现步骤:

结果:

预期结果:

**截图:


**

其他上下文信息:WebSocket connection to ‘wss://rancher-test.ingka-system.cn/v3/subscribe?sockId=17’ failed: Error during WebSocket handshake: Unexpected response code: 400
value @ socket.js:88
(anonymous) @ socket.js:295
socket.js:313 Socket error (state=connecting, id=17)
socket.js:256 Socket 17 closed

pod内部日志:Error during subscribe websocket: the client is not using the websocket protocol: ‘upgrade’ token not found in ‘Connection’ header

日志


这得看你是如何暴露外部访问的,是L7 Ingress 还是L4 nodeport。
如果L7 ingress,应该是需要调整Ingress配置,ACK可能会给你创建一个SLB,一般来说该SLB需要调整配置才能完整支持websocket。

你可以尝试参考 rancher on eks 教程,其解决办法是:在eks部署一个nginx-ingress,它可以完整配置wss的支持,同时用elb做4层转发给ingres-nginx。
当然,如果你是阿里云SLB的专家,可以尝试配置SLB如何支持wss。

我用的是L4的阿里云的SLB,我查官网说ingress-nginx支持websocket的协议,我也额外配置了一些配置,但是都不好用,我看下你发的文档啊,感谢