如何使用不同的kafka主题配置Kubernetes部署的微服务的每个pod/进程?

2024-04-18

在我们的应用程序中,有多个不同 kafka 主题的消费者,例如 Cosumer C1、Cosumer C2、Cosumer C3、Cosumer C4、Cosumer C5 以及不同的 kafka 主题,例如主题 1、主题 2、主题 3、主题 4 和主题 5。这意味着它们是每个生产者和消费者对。当我在 Kubernetes 的单个微服务的 POD/进程上运行这一切时,它们不是任何问题。

我的问题是,我想创建 5 个 Pod,每个 pod 都由其主题中的 Cosumer - Producer 组成,如下所示:-
POD 1:- 消费者 1 - 主题 1
POD 2:- 消费者 2 - 主题 2
POD 3:- 消费者 3 - 主题 3
POD 4:- 消费者 4 - 主题 4
POD 5:- 消费者 5 - 主题 5

意味着每个 POD/进程只有一个主题,它们不应该相互依赖。

他们的配置对这个有要求吗,请帮我解决一下。谢谢


您可以在一个 Pod 中运行 5 个容器,将每个主题名称作为环境变量传递给容器。

如果您希望所有容器都相同(主题名称除外),您可以编写一个 Helm 模板,并在每个容器的主题上循环

例如,从这样的值文件开始

application:
  image: myapp
  tag: latest

topics: [1,2,3,4,5]

还有像这样的东西

apiVersion: apps/v1
kind: Deployment
metadata:
  name: consumer-example
  labels:
    app: consumer
spec:
  replicas: 1
  selector:
    matchLabels:
      app: consumer
  template:
    metadata:
      labels:
        app: consumer
    spec:
      containers:
{{ for i, t := range .Values.topics }}
      - name: consumer-{{ i }}
        image: {{ .Values.application.image }}:{{ .Values.application.tag }}
        env:
        - name: KAFKA_TOPIC
          value:  {{ t }} 
{{ end }} 

或者,您可以简单地使用多线程使一个应用程序订阅多个主题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用不同的kafka主题配置Kubernetes部署的微服务的每个pod/进程? 的相关文章

随机推荐