在Kubernetes中实现WebSocket时出错
我们正试图按照GCP文档“&”中给出的步骤在Kubernetes中实现WebSocket。但我们得到了“WebSocket握手时出错:意外响应代码:502”在Kubernetes中实现WebSocket时出错,kubernetes,websocket,socket.io,google-kubernetes-engine,Kubernetes,Websocket,Socket.io,Google Kubernetes Engine,我们正试图按照GCP文档“&”中给出的步骤在Kubernetes中实现WebSocket。但我们得到了“WebSocket握手时出错:意外响应代码:502” Error Message : “WebSocket connection to 'wss://..../backend-channeladaptor-web/socket.io/?EIO=3&transport=websocket' failed: Error during WebSocket handshake: Unexpec
Error Message : “WebSocket connection to 'wss://..../backend-channeladaptor-web/socket.io/?EIO=3&transport=websocket' failed: Error during WebSocket handshake: Unexpected response code: 502”.
我还附上了为gke实施创建的文件:
apiVersion: cloud.google.com/v1beta1
kind: BackendConfig
metadata:
name: backend-channeladaptor-web-backendconfig
spec:
timeoutSec: 3600
connectionDraining:
drainingTimeoutSec: 3600
---
apiVersion: v1
kind: Service
metadata:
name: backend-channeladaptor-web
annotations:
beta.cloud.google.com/backend-config: '{"ports": {"8081":"backend-channeladaptor-web-backendconfig"}}'
spec:
type: NodePort
ports:
- port: 8081
targetPort: 11006
protocol: TCP
nodePort: 30078
name: http
selector:
app: backend-channeladaptor-web
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: backend-channeladaptor-web
spec:
selector:
matchLabels:
app: backend-channeladaptor-web
replicas: 1
template:
metadata:
labels:
app: backend-channeladaptor-web
spec:
containers:
- image: gcr.io/acn-careful-granite-240620/backend-channeladaptor-web:0.2
name: backend-channeladaptor-web
ports:
- name: http
containerPort: 11006
hostPort: 11006
env:
- name: NODE_ENV
value: dev
- 部署内容
- 服务内容
- 后端配置内容
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: converse-ingress
annotations:
kubernetes.io/ingress.global-static-ip-name: $Static-Ip-Name
kubernetes.io/ingress.allow-http: "false"
spec:
tls:
- secretName: $SSL-certificate
rules:
- host: $HostName
http:
paths:
- path: /*
backend:
serviceName: frontend-chat-client
servicePort: 3040
- path: /socket-io/*
backend:
serviceName: backend-channeladaptor-engineerportal
servicePort: 11009
- path: /login/*
backend:
serviceName: frontend-engineeringportal
servicePort: 3021
- path: /frontend-engineeringportal/*
backend:
serviceName: frontend-engineeringportal
servicePort: 3021
- path: /backend-channeladaptor-web/*
backend:
serviceName: backend-channeladaptor-web
servicePort: 11006
Backend-channeladapter-web.yaml
apiVersion: cloud.google.com/v1beta1
kind: BackendConfig
metadata:
name: backend-channeladaptor-web-backendconfig
spec:
timeoutSec: 3600
connectionDraining:
drainingTimeoutSec: 3600
---
apiVersion: v1
kind: Service
metadata:
name: backend-channeladaptor-web
annotations:
beta.cloud.google.com/backend-config: '{"ports": {"8081":"backend-channeladaptor-web-backendconfig"}}'
spec:
type: NodePort
ports:
- port: 8081
targetPort: 11006
protocol: TCP
nodePort: 30078
name: http
selector:
app: backend-channeladaptor-web
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: backend-channeladaptor-web
spec:
selector:
matchLabels:
app: backend-channeladaptor-web
replicas: 1
template:
metadata:
labels:
app: backend-channeladaptor-web
spec:
containers:
- image: gcr.io/acn-careful-granite-240620/backend-channeladaptor-web:0.2
name: backend-channeladaptor-web
ports:
- name: http
containerPort: 11006
hostPort: 11006
env:
- name: NODE_ENV
value: dev
我期望响应状态代码101,但得到502坏网关看起来您的入口的URI
/backend channeladapter web/*
指向服务backend channeladapter web
,并且期望服务在11006
中侦听。但是,节点端口配置正在808中侦听1
混淆可能来自targetPort
指令,该指令指向实际后端(部署)中的11006
这会导致502,这意味着尽管您正在到达中间层(在您的情况下是负载平衡器),但它无法到达后端(部署,由NodePort服务提供)
您可以将入口定义改为指向
8081
,与当前节点端口配置相匹配。https负载平衡器启动后,您是否获得502?@yyyyahir我们在该服务中添加了healthcheck,运行正常,即我们获得状态代码200,但当我们点击webSocket时,称其为502坏网关.Yes https负载平衡器已启动并运行fine1。我试图将“节点端口配置”更改为侦听11006“但同样的问题。2.我能够访问所有服务的运行状况检查,包括上述一项,只有websocket调用失败。运行状况检查独立于服务
,允许向部署
发出请求<代码>运行在集群内安装吊舱并到达WS?或者将ing直接连接到pod中的网络空间,看看那里的一切是否运行良好?