如果我连接到 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 …