Kubernetes Pod容器的websocket无法访问

时间:2018-03-08 21:11:36

标签: websocket kubernetes spring-websocket

我创建了一个示例spring boot应用程序,它在localhost:8080 / ws中公开websocket端点。 基本上我遵循这个guide,除了我没有使用.withSockJS选项。

当我在本地运行此应用程序时,我的示例角应用程序可以连接到websocket。

现在我想在一个Kubernetes pod中安装两个容器(spring boot app和angular app)。 当我跑它们时它们都会旋转。然后我暴露了角形前端的端口,以便能够查看应用程序。但是日志告诉我它无法通过ws:// localhost:8080 / ws连接到websocket后端

即使我连接到后端容器,我也可以看到它已启动并运行,但我的curl websocket测试也总是失败。

这是我的pod def:

---
 apiVersion: v1
 kind: Pod
 metadata:
   name: my-app.example.org
   labels:
     app: my-app-system
 spec:
   containers:
     - name: backend
       image: test/my-app-backend
       ports:
         - containerPort: 8080
       env:
       - name: SPRING_PROFILES_ACTIVE
         value: "dev-docker-postgres"
       - name: JAVA_OPTIONS
         value: "-agentlib:jdwp=transport=dt_socket,address=5005,server=y,suspend=n"
     - name: frontend
       image: test/my-app-frontend
       ports:
         - containerPort: 4200
       imagePullPolicy: Always
       command: ["/bin/sh"]
       args: ["-c", "npm run kubstart"]

   imagePullSecrets:
     - name: registrykey 

还有一件事:

当我通过NodePort类型另外暴露后端容器的端口,并使用服务的url在我的机器上本地启动角度应用程序时,websocket连接成功。

我似乎无法让我的pod中的两个容器通过ws://

相互通信

1 个答案:

答案 0 :(得分:0)

没关系...... 对于cource,这不能通过localhost工作。 我需要暴露后端的端口并从“外部”访问websocket