如何连接nats流媒体集群

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


---
apiVersion: v1
kind: ConfigMap
metadata:
  name: stan-config
data:
  stan.conf: |
    # listen: nats-streaming:4222
    port: 4222
    http: 8222

    streaming {
      id: stan
      store: file
      dir: /data/stan/store
      cluster {
        node_id: $POD_NAME
        log_path: /data/stan/log
        # Explicit names of resulting peers
        peers: ["nats-streaming-0", "nats-streaming-1", "nats-streaming-2"]
      }
    }
---

apiVersion: v1
kind: Service
metadata:
  name: nats-streaming
  labels:
    app: nats-streaming
spec:
  type: ClusterIP
  selector:
    app: nats-streaming
  ports:
    - port: 4222
      targetPort: 4222

---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: nats-streaming
  labels:
    app: nats-streaming
spec:
  selector:
    matchLabels:
      app: nats-streaming
  serviceName: nats-streaming
  replicas: 3
  volumeClaimTemplates:
  - metadata:
      name: stan-sts-vol
    spec:
      accessModes:
      - ReadWriteOnce
      volumeMode: "Filesystem"
      resources:
        requests:
          storage: 1Gi
  template:
    metadata:
      labels:
        app: nats-streaming
    spec:
      # Prevent NATS Streaming pods running in same host.
      affinity:
        podAntiAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
          - topologyKey: "kubernetes.io/hostname"
            labelSelector:
              matchExpressions:
              - key: app
                operator: In
                values:
                - nats-streaming
      # STAN Server
      containers:
      - name: nats-streaming
        image: nats-streaming
        ports:
        - containerPort: 8222
          name: monitor
        - containerPort: 7777
          name: metrics
        args:
          - "-sc"
          - "/etc/stan-config/stan.conf"

        # Required to be able to define an environment variable
        # that refers to other environment variables.  This env var
        # is later used as part of the configuration file.
        env:
        - name: POD_NAME
          valueFrom:
            fieldRef:
              fieldPath: metadata.name
        - name: POD_NAMESPACE
          valueFrom:
            fieldRef:
              fieldPath: metadata.namespace
        volumeMounts:
          - name: config-volume
            mountPath: /etc/stan-config
          - name: stan-sts-vol
            mountPath: /data/stan

        # Disable CPU limits.
        resources:
          requests:
            cpu: 0

        livenessProbe:
          httpGet:
            path: /
            port: 8222
          initialDelaySeconds: 10
          timeoutSeconds: 5
      volumes:
      - name: config-volume
        configMap:
          name: stan-config

我尝试使用 nats://nats-streaming:4222但它给出了以下错误。

stan: connect request timeout (possibly wrong cluster ID?)

我指的是 https:/docs.nats.ionats-onats-on-kubernetesminimal-setup。

解决方案:

你没有指定客户端端口 4222 境内的土著人 StatefulSet,你在你体内调用的 Service

...
  ports:
    - port: 4222
      targetPort: 4222
...

正如你所看到的 simple-nats.yml 他们设置了以下端口。

...
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"
...

至于将服务暴露在外面,我建议你看一下 使用服务来曝光你的应用程序暴露外部IP地址以访问群集中的应用程序.

也有不错的文章,也许有点老(2017年)。将端口暴露给Azure上的Kubernetes pods,你也可以检查Azure文档关于 快速入门。使用 Azure CLI 部署 Azure Kubernetes 服务集群

给TA打赏
共{{data.count}}人
人已打赏
未分类

在页面加载时,Javascript的点击发生火灾

2022-10-14 3:18:22

未分类

不显示UIAlertController。

2022-10-14 3:29:17

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索