小编Kar*_*hit的帖子

WebSocket 握手:意外响应代码:kubernetes-ingress 中的 400

如果我连接到 Web 套接字服务的入口失败,则面临此问题:WebSocket 握手期间出错:意外响应代码:400

入口 YAML

kind: Ingress
apiVersion: extensions/v1beta1
metadata:
  name: websocket-producer-cdph
spec:
  rules:
    host: some.domain.com
      http:
        paths:
          path: "/"
          backend:
            serviceName: websocket-producer-cdph
            servicePort: 8183
status:
loadBalancer:
ingress:
{}
Run Code Online (Sandbox Code Playgroud)

服务 YAML

kind: Service
apiVersion: v1
metadata:
  name: websocket-producer-cdph
spec:
  ports:    
    name: ws
    protocol: TCP
    port: 8183
    targetPort: 8183
selector:
  app: websocket-producer-cdph
clusterIP: 10.100.254.99
type: ClusterIP
sessionAffinity: None
status:
loadBalancer:
{}
Run Code Online (Sandbox Code Playgroud)

当我尝试收听 ws://some.domain.com/ws 时,它在 WebSocket 握手期间显示错误:意外响应代码:400

/ws 是路径

但是,如果将服务中的规范类型更新到 LoadBalancer,它将生成一个 IP 192.168.1.17:8183 并侦听 ws://192.168.1.17:8183/ws 它的工作,但我需要使用 ingress 公开 URL,所以它可以在网络外使用。

我将以下图像用于入口控制器:

quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.19.0 …

websocket kubernetes kubernetes-ingress

5
推荐指数
2
解决办法
4232
查看次数

标签 统计

kubernetes ×1

kubernetes-ingress ×1

websocket ×1