首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Kubernetes中的NSQ簇

Kubernetes中的NSQ簇
EN

Stack Overflow用户
提问于 2021-04-13 21:22:33
回答 2查看 584关注 0票数 3

我正试图在库伯内特斯建立一个NSQ集群,并有问题。基本上,我想扩大NSQ和NSQ的查找范围。我对它们都有一个有状态集(2个节点)的定义。为了不发布整个YAML文件,我将只为NSQ发布其中的一部分

NSQ容器模板

代码语言:javascript
运行
复制
command:
        - /nsqd
        - -data-path
        - /data
        - -lookupd-tcp-address
        - nsqlookupd.default.svc.cluster.local:4160

在这里,nsqlookupd.default.svc.cluster.local是一个K8s无头服务,通过这样做,我期望NSQ实例打开与所有NSQ实例的连接,这实际上是没有发生的。它只会打开一个随机连接。但是,如果我像这样显式地列出所有NSQ查找主机,它就能工作。

代码语言:javascript
运行
复制
command:
            - /nsqd
            - -data-path
            - /data
            - -lookupd-tcp-address
            - nsqlookupd-0.nsqlookupd:4160
            - -lookupd-tcp-address
            - nsqlookupd-1.nsqlookupd:4160

我还想在NSQ和NSQ查找中使用无头服务的DNS名称-广播地址,但这也不起作用。

我使用nsqio go库发布和消费消息,看起来我也不能在那里使用无头服务,在初始化消费者或发行者时,应该显式列出NSQ/NSQ名称。

我是不是用错了?我的意思是,我希望具有水平缩放的NSQ和NSQLookup实例,而不是硬编码地址。

EN

回答 2

Stack Overflow用户

发布于 2021-12-10 08:25:53

您可以使用statfulset和无头服务来实现这个目标。

票数 0
EN

Stack Overflow用户

发布于 2021-12-10 08:40:31

尝试使用下面的配置yaml将其部署到K8s集群中。否则,您应该签出官方Helmhttps://github.com/nsqio/helm-chart

使用无头服务,您可以发现所有的吊舱IP。

代码语言:javascript
运行
复制
apiVersion: v1
kind: Service
metadata:
  name: nsqlookupd
  labels:
    app: nsq
spec:
  ports:
  - port: 4160
    targetPort: 4160
    name: tcp
  - port: 4161
    targetPort: 4161
    name: http
  publishNotReadyAddresses: true
  clusterIP: None
  selector:
    app: nsq
    component: nsqlookupd
---
apiVersion: v1
kind: Service
metadata:
  name: nsqd
  labels:
    app: nsq
spec:
  ports:
  - port: 4150
    targetPort: 4150
    name: tcp
  - port: 4151
    targetPort: 4151
    name: http
  clusterIP: None
  selector:
    app: nsq
    component: nsqd
---
apiVersion: v1
kind: Service
metadata:
  name: nsqadmin
  labels:
    app: nsq
spec:
  ports:
  - port: 4170
    targetPort: 4170
    name: tcp
  - port: 4171
    targetPort: 4171
    name: http
  selector:
    app: nsq
    component: nsqadmin
---
apiVersion: apps/v1beta1
kind: StatefulSet
metadata:
  name: nsqlookupd
spec:
  serviceName: "nsqlookupd"
  replicas: 3
  updateStrategy:
    type: RollingUpdate
  template:
    metadata:
      labels:
        app: nsq
        component: nsqlookupd
    spec:
      affinity:
        podAntiAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
          - labelSelector:
              matchExpressions:
              - key: app
                operator: In
                values:
                - nsq
              - key: component
                operator: In
                values:
                - nsqlookupd
            topologyKey: "kubernetes.io/hostname"
      containers:
      - name: nsqlookupd
        image: nsqio/nsq:v1.1.0
        imagePullPolicy: Always
        resources:
          requests:
            cpu: 30m
            memory: 64Mi
        ports:
        - containerPort: 4160
          name: tcp
        - containerPort: 4161
          name: http
        livenessProbe:
          httpGet:
            path: /ping
            port: http
          initialDelaySeconds: 5
        readinessProbe:
          httpGet:
            path: /ping
            port: http
          initialDelaySeconds: 2
        command:
          - /nsqlookupd
      terminationGracePeriodSeconds: 5
---
apiVersion: apps/v1beta1
kind: StatefulSet
metadata:
  name: nsqd
spec:
  serviceName: "nsqd"
  replicas: 3
  updateStrategy:
    type: RollingUpdate
  template:
    metadata:
      labels:
        app: nsq
        component: nsqd
    spec:
      affinity:
        podAntiAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
          - labelSelector:
              matchExpressions:
              - key: app
                operator: In
                values:
                - nsq
              - key: component
                operator: In
                values:
                - nsqd
            topologyKey: "kubernetes.io/hostname"
      containers:
      - name: nsqd
        image: nsqio/nsq:v1.1.0
        imagePullPolicy: Always
        resources:
          requests:
            cpu: 30m
            memory: 64Mi
        ports:
        - containerPort: 4150
          name: tcp
        - containerPort: 4151
          name: http
        livenessProbe:
          httpGet:
            path: /ping
            port: http
          initialDelaySeconds: 5
        readinessProbe:
          httpGet:
            path: /ping
            port: http
          initialDelaySeconds: 2
        volumeMounts:
        - name: datadir
          mountPath: /data
        command:
          - /nsqd
          - -data-path
          - /data
          - -lookupd-tcp-address
          - nsqlookupd-0.nsqlookupd:4160
          - -lookupd-tcp-address
          - nsqlookupd-1.nsqlookupd:4160
          - -lookupd-tcp-address
          - nsqlookupd-2.nsqlookupd:4160
          - -broadcast-address
          - $(HOSTNAME).nsqd
        env:
        - name: HOSTNAME
          valueFrom:
            fieldRef:
              fieldPath: metadata.name
      terminationGracePeriodSeconds: 5
      volumes:
      - name: datadir
        persistentVolumeClaim:
          claimName: datadir
  volumeClaimTemplates:
  - metadata:
      name: datadir
    spec:
      accessModes:
        - "ReadWriteOnce"
      storageClassName: ssd
      resources:
        requests:
          storage: 1Gi
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: nsqadmin
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: nsq
        component: nsqadmin
    spec:
      containers:
      - name: nsqadmin
        image: nsqio/nsq:v1.1.0
        imagePullPolicy: Always
        resources:
          requests:
            cpu: 30m
            memory: 64Mi
        ports:
        - containerPort: 4170
          name: tcp
        - containerPort: 4171
          name: http
        livenessProbe:
          httpGet:
            path: /ping
            port: http
          initialDelaySeconds: 10
        readinessProbe:
          httpGet:
            path: /ping
            port: http
          initialDelaySeconds: 5
        command:
          - /nsqadmin
          - -lookupd-http-address
          - nsqlookupd-0.nsqlookupd:4161
          - -lookupd-http-address
          - nsqlookupd-1.nsqlookupd:4161
          - -lookupd-http-address
          - nsqlookupd-2.nsqlookupd:4161
      terminationGracePeriodSeconds: 5
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: nsq
spec:
  rules:
    - host: nsq.example.com
      http:
        paths:
        - path: /
          backend:
            serviceName: nsqadmin
            servicePort: 4171
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67082569

复制
相关文章

相似问题

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