Kubernetes 如何连接nats流集群

Kubernetes 如何连接nats流集群,kubernetes,nats.io,kustomize,nats-streaming-server,Kubernetes,Nats.io,Kustomize,Nats Streaming Server,我是kubernetes的新手,正在尝试设置nats流集群。我正在使用以下清单文件。但我对如何在我的应用程序中访问nats流媒体服务器感到困惑。我正在使用azure kubernetes服务 --- 版本:v1 种类:配置地图 元数据: 名称:stan配置 数据: stan.conf:| #听:nats流:4222 港口:4222 http:8222 流式{ 身份证号码:斯坦 存储:文件 目录:/data/stan/store 簇{ 节点\u id:$POD\u名称 日志路径:/data/st

我是kubernetes的新手,正在尝试设置nats流集群。我正在使用以下清单文件。但我对如何在我的应用程序中访问nats流媒体服务器感到困惑。我正在使用azure kubernetes服务


---
版本:v1
种类:配置地图
元数据:
名称:stan配置
数据:
stan.conf:|
#听:nats流:4222
港口:4222
http:8222
流式{
身份证号码:斯坦
存储:文件
目录:/data/stan/store
簇{
节点\u id:$POD\u名称
日志路径:/data/stan/log
#结果对等体的显式名称
对等方:[“nats-streaming-0”、“nats-streaming-1”、“nats-streaming-2”]
}
}
---
版本:v1
种类:服务
元数据:
名称:nats流媒体
标签:
应用程序:nats流媒体
规格:
类型:集群
选择器:
应用程序:nats流媒体
端口:
-港口:4222
目标港:4222
---
apiVersion:apps/v1
种类:StatefulSet
元数据:
名称:nats流媒体
标签:
应用程序:nats流媒体
规格:
选择器:
火柴标签:
应用程序:nats流媒体
serviceName:nats流媒体
副本:3份
VolumeClaim模板:
-元数据:
名称:stan sts vol
规格:
访问模式:
-读写
volumeMode:“文件系统”
资源:
请求:
存储:1Gi
模板:
元数据:
标签:
应用程序:nats流媒体
规格:
#防止NATS流式播客在同一主机上运行。
密切关系:
抗亲和力:
所需DuringSchedulingIgnoredDuringExecution:
-topologyKey:“kubernetes.io/hostname”
标签选择器:
匹配表达式:
-关键:应用程序
接线员:在
价值观:
-nats流
#斯坦服务器
容器:
-名称:nats流媒体
图片:nats流媒体
端口:
-集装箱港口:8222
姓名:monitor
-集装箱港口:7777
名称:metrics
args:
-“-sc”
-“/etc/stan-config/stan.conf”
#需要能够定义环境变量
#指的是其他环境变量。这个环境变量
#稍后用作配置文件的一部分。
环境:
-名称:POD_名称
价值来源:
fieldRef:
fieldPath:metadata.name
-名称:POD_名称空间
价值来源:
fieldRef:
fieldPath:metadata.namespace
体积数量:
-名称:配置卷
挂载路径:/etc/stan配置
-名称:stan sts vol
挂载路径:/data/stan
#禁用CPU限制。
资源:
请求:
中央处理器:0
livenessProbe:
httpGet:
路径:/
港口:8222
初始延迟秒数:10
timeoutSeconds:5
卷数:
-名称:配置卷
配置映射:
名称:stan配置
我尝试使用
nats://nats-streaming:4222
,但它给出了以下错误

stan:连接请求超时(可能是错误的群集ID?


我指的是您没有在
状态集
中指定NAT的客户端端口
4222
,您正在
服务中调用该端口

...
  ports:
    - port: 4222
      targetPort: 4222
...
从中可以看到,他们设置了以下端口:

...
containers:
      - name: nats
        image: nats:2.1.0-alpine3.10
        ports:
        - containerPort: 4222
          name: client
          hostPort: 4222
        - containerPort: 7422
          name: leafnodes
          hostPort: 7422
        - containerPort: 6222
          name: cluster
        - containerPort: 8222
          name: monitor
        - containerPort: 7777
          name: metrics
        command:
         - "nats-server"
         - "--config"
         - "/etc/nats-config/nats.conf"
...
至于在外面公开服务,我建议你阅读和阅读


还有一篇很好的文章,可能有点旧(2017年),您还可以查看Azure文档,了解您在
服务中调用的
状态集
中未指定NAT的客户端端口
4222

...
  ports:
    - port: 4222
      targetPort: 4222
...
从中可以看到,他们设置了以下端口:

...
containers:
      - name: nats
        image: nats:2.1.0-alpine3.10
        ports:
        - containerPort: 4222
          name: client
          hostPort: 4222
        - containerPort: 7422
          name: leafnodes
          hostPort: 7422
        - containerPort: 6222
          name: cluster
        - containerPort: 8222
          name: monitor
        - containerPort: 7777
          name: metrics
        command:
         - "nats-server"
         - "--config"
         - "/etc/nats-config/nats.conf"
...
至于在外面公开服务,我建议你阅读和阅读


还有一篇很好的文章,可能有点旧(2017年),即使在StatefulSet中指定了NAT的客户机端口4222,您也可以查看Azure docs about

。它会给出相同的错误,您使用哪个IP连接到NAT?你想从哪里联系?您是否测试过它是否在集群内本地工作?即使在StatefulSet中指定了NAT的客户机端口4222。它会给出相同的错误,您使用哪个IP连接到NAT?你想从哪里联系?您测试过它是否在集群内本地工作吗?@Theocoder,您的
服务
似乎缺少一些东西,例如
-name:
协议:TCP
。我不熟悉
ConfigMap
设置,因此我只能提供有限的帮助。@代码员,您能解决这个问题吗?您收到的错误消息“stan:connect request timeout(可能是错误的群集ID?)”
看起来像是来自NAT的响应,因此,我想说,问题不在于您无法连接到它,因为
服务
配置错误等。您正在成功连接NAT,因为您可以看到它的响应,但很可能是配置错误/您的群集未正确形成等。其日志如何?你检查过了吗?@Theocoder,你的
服务
似乎缺少一些东西,比如
-name:
协议:TCP
。我不熟悉
ConfigMap
设置,因此我只能提供有限的帮助。@代码员,您能解决这个问题吗?您收到的错误消息“stan:connect request timeout(可能是错误的群集ID?)”
看起来像是来自NAT的响应,因此,我想说,问题不在于您无法连接到它,因为
服务
配置错误等。您正在成功连接NAT,因为您可以看到它的响应,但很可能是配置错误/您的群集未正确形成等。其日志如何?你检查过了吗?