首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Kubernetes中设置Deepstream服务并让客户端连接到它?

如何在Kubernetes中设置Deepstream服务并让客户端连接到它?
EN

Stack Overflow用户
提问于 2018-02-07 16:22:16
回答 1查看 504关注 0票数 1

我有一个可以工作的kubernetes集群,我想在它上设置一个深流服务。

我创建了以下部署yaml:

代码语言:javascript
复制
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: deepstream
  namespace: db     
spec:
  replicas: 1  
  template:
    metadata:
      name: deepstream
      labels:
        app: deepstream
    spec:
      containers:
      - name: deepstream
        image: deepstreamio/deepstream.io
        ports:
        - containerPort: 6020
          name: websocket-port
        - containerPort: 8080
          name: http-port

和以下服务yaml:

代码语言:javascript
复制
apiVersion: v1
kind: Service
metadata:
  name: deepstream
  namespace: db
  labels:
    service: deepstream
spec:
  ports:
  - name: websocket
    port: 6020
  - name: tcp
    port: 8080
  clusterIP: None
  selector:
    app: deepstream

这看起来像是正确地创建了深流服务。

为了测试它,我创建了一个最小的nodejs脚本:

代码语言:javascript
复制
const deepstream = require('deepstream.io-client-js');
const client = deepstream("<master_ip>:8080/api/v1/proxy/namespaces/db/services/deepstream").login();

当我运行脚本时,我得到了以下错误:

代码语言:javascript
复制
/mnt/d/workspace/clients_demo/updates-distributer/deepstream_client/node_modules/deepstream.io-client-js/dist/lib/client.js:204
    throw new Error(errorMsg);
    ^

Error: connectionError: Error: unexpected server response (503) (C)
    at Client._$onError (/mnt/d/workspace/clients_demo/updates-distributer/deepstream_client/node_modules/deepstream.io-client-js/dist/lib/client.js:204:11)
    at Timeout._onTimeout (/mnt/d/workspace/clients_demo/updates-distributer/deepstream_client/node_modules/deepstream.io-client-js/dist/lib/message/connection.js:319:19)
    at ontimeout (timers.js:475:11)
    at tryOnTimeout (timers.js:310:5)
    at Timer.listOnTimeout (timers.js:270:5)

我在deepstream的日志中看到以下几行:

代码语言:javascript
复制
2018-02-07T07:56:37.077476854Z INCOMING_CONNECTION | from undefined (10.1.40.0)
2018-02-07T07:59:37.083807147Z CONNECTION_AUTHENTICATION_TIMEOUT | connection has not authenticated successfully in the expected time
2018-02-07T07:59:37.083949098Z CLIENT_DISCONNECTED | null

我做错了什么?

编辑:我最终将服务配置为NodePort类型。

EN

回答 1

Stack Overflow用户

发布于 2019-06-29 19:14:45

我想您应该使用websocket端口6020进行套接字连接,而不是http端点。因为deepstream的http端点不提供连续连接。

代码语言:javascript
复制
const client = deepstream("master_ip>:**8080**/api/v1/proxy/namespaces/db/services/deepstream").login();

这应该可以解决问题。

代码语言:javascript
复制
const client = deepstream(**wss://**"master_ip>:**6020**/api/v1/proxy/namespaces/db/services/deepstream").login();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48658992

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档