Helm安装kafka3.7.0无长期化(KRaft 模式集群)

打印 上一主题 下一主题

主题 647|帖子 647|积分 1941

参考文档
  1. [Helm实践---安装kafka集群 - 知乎 (zhihu.com)](https://zhuanlan.zhihu.com/p/642515749)
复制代码
  1. [K8S Kraft Kafka 集群搭建 - 掘金 (juejin.cn)](https://juejin.cn/post/7330515218605637667)
复制代码
2.1 Chart包方式安装kafka集群

bitnami/kafka 就是原生的 Kafka,confluentinc 是在原生 Kafka 的基础上加了一些东西,但他还是兼容原生 Kafka,有爱好的本身去看
1.添加helm仓库地址
  1. helm repo add bitnami  https://charts.bitnami.com/bitnami
复制代码
1.更新仓库
  1. helm repo update bitnami
复制代码
1.查看kafka的Chart包的历史版本
  1. root@master1:~/helm/kafka#  helm search repo bitnami/kafka -l  
  2. NAME            CHART VERSION   APP VERSION     DESCRIPTION                                       
  3. bitnami/kafka   28.3.0          3.7.0           Apache Kafka is a distributed streaming platfor...
  4. bitnami/kafka   28.2.6          3.7.0           Apache Kafka is a distributed streaming platfor...
  5. bitnami/kafka   28.2.5          3.7.0           Apache Kafka is a distributed streaming platfor...
  6. bitnami/kafka   28.2.4          3.7.0           Apache Kafka is a distributed streaming platfor...
  7. bitnami/kafka   28.2.3          3.7.0           Apache Kafka is a distributed streaming platfor...
复制代码

(2).查看chart包格式: helm show chart chart包名 或 helm show values chart包名 (查看详细信息)
2.下载最新chart包
  1. [root@k8s-master01 ~]# helm pull bitnami/kafka
复制代码
如果想要下载指定版本,需要指定–version参数
  1. [root@k8s-master01 ~]# helm pull bitnami/kafka
  2. --version 23.0.0
复制代码
(3).拉取chart包格式:
  1. helm pull 远程仓库chart包名 --version 0.4.3 --untar #从远程仓库拉取指定版本的chart包到本地并解压,--untar是解压,不加就是压缩包  
  2. helm pull 远程仓库chart包名 --untar #从远程仓库拉取最新版本的chart包到本地并解压,--untar是解压,不加就是压缩包
复制代码
3.解压chart包
  1. [root@k8s-master01 ~]# tar -xf kafka-23.0.1.tgz
复制代码

4.修改values.yaml相应设置
需要修改replicaCount的值为3
  1. $ cd /root/helm/kafka/kafka
  2. $ vim values.yaml
复制代码

根据本身需要修改image(可不改)
  1. $ cd /root/kafka
  2. $ vim values.yaml
  3. ...
  4. ...
  5. image:
  6.   registry: registry.cn-hangzhou.aliyuncs.com
  7.   repository: abroad_images/kafka
  8.   tag: 3.5.0-debian-11-r1
  9. image:
  10.   registry: registry.cn-hangzhou.aliyuncs.com
  11.   repository: abroad_images/kubectl
  12.   tag: 1.25.11-debian-11-r4
  13. image:
  14.   registry: registry.cn-hangzhou.aliyuncs.com
  15.   repository: abroad_images/bitnami-shell
  16.   tag: 11-debian-11-r130
  17. image:
  18.   registry: registry.cn-hangzhou.aliyuncs.com
  19.   repository: abroad_images/kafka-exporter
  20.   tag: 1.7.0-debian-11-r11
  21. image:
  22.   registry: registry.cn-hangzhou.aliyuncs.com
  23.   repository: abroad_images/jmx-exporter
  24.   tag: 0.18.0-debian-11-r34
复制代码
如果使用指定的zookeeper,kraft模式要关闭,修改kraft.enable 的值为false,新版kafka新增了一个kraft模式,他与zookeeper是冲突的,不能同时使用

根据本身需要修改长期化设置,这里因为是测试环境没有使用长期化(生产必须要使用长期化)。此中修改内容如下:


  • enabled修改为false
  • 注释existingClaim
  • 注释storageClass

客户端需不需要认证紧张是这里
listeners:

默认controller可以兼职broker
controller:

5.开始安装

  1. [root@k8s-master01 kafka]# helm install -n kafka kafka .
复制代码
6.观察到kafka集群已经安装完成
  1. root@master1:~/helm/kafka/kafka# kubectl get po -n kafka
  2. NAME                        READY   STATUS    RESTARTS      AGE
  3. kafka-client                1/1     Running   0             29m
  4. kafka-controller-0          1/1     Running   0             92m
  5. kafka-controller-1          1/1     Running   1 (90m ago)   92m
  6. kafka-controller-2          1/1     Running   0             92m
  7. kafka-ui-784769b6db-k8rbh   1/1     Running   0             5m46s
复制代码
7.查看安装的版本信息
  1. root@master1:~/helm/kafka/kafka# helm list -n kafka
  2. NAME    NAMESPACE       REVISION        UPDATED                                 STATUS          CHART           APP VERSION
  3. kafka   kafka           1               2024-05-23 15:08:04.59273309 +0800 CST  deployed        kafka-28.3.0    3.7.0
复制代码

8.验证kafka与zookeeper是否绑定,观察到已成功绑定
  1. [root@k8s-master kafka]# kubectl logs -f kafka-0 -n kafka | grep socket
复制代码

5.查看安装的values
  1. [root@k8s-master]# helm get values kafka -n  kafka
复制代码
2.2 下令行方式安装kafka集群

1.直接安装
  1. $ helm install kafka bitnami/kafka --set zookeeper.enabled=false --set replicaCount=3 --set externalZookeeper.servers=zookeeper --set persistence.enabled=false -n public-service
复制代码
  1. helm install kafka kafka --values ./kafka/values.yaml  \
  2.     --set replicaCount=1 \
  3.     --set kafka.kafkaConfigOverrides=transaction.state.log.replication.factor=1 \
  4.     --set kafka.kafkaConfigOverrides=transaction.state.log.min.isr=1 \
  5.     --set kafka.kafkaConfigOverrides=default.replication.factor=1 \
  6.     --set kafka.kafkaConfigOverrides=num.io.threads=2 \
  7.     --set kafka.kafkaConfigOverrides=num.network.threads=2 \
  8.     --set kafka.kafkaConfigOverrides=inter.broker.protocol.version=3.5.1 \
  9.     --set kafka.kafkaConfigOverrides=offsets.topic.replication.factor=1 \
  10.     --set kafka.kafkaConfigOverrides=transaction.state.log.num.partitions=50
复制代码

搭建 Kafka-UI

kafka-web-ui.yaml
  1. apiVersion: apps/v1
  2. kind: Deployment
  3. metadata:
  4.   name: kafka-ui
  5.   labels:
  6.     app: kafka-ui
  7.   namespace: kafka   
  8. spec:
  9.   replicas: 1
  10.   selector:
  11.     matchLabels:
  12.       app: kafka-ui
  13.   template:
  14.     metadata:
  15.       labels:
  16.         app: kafka-ui
  17.     spec:
  18.       containers:
  19.       - name: kafka-ui
  20.         image: provectuslabs/kafka-ui:latest
  21.         env:
  22.         - name: KAFKA_CLUSTERS_0_NAME
  23.           value: 'Kafka Cluster'
  24.         - name: KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS
  25.           value: 'kafka-controller-0.kafka-controller-headless.kafka.svc.cluster.local:9092,kafka-controller-1.kafka-controller-headless.kafka.svc.cluster.local:9092,kafka-controller-2.kafka-controller-headless.kafka.svc.cluster.local:9092'
  26.         - name: KAFKA_CLUSTERS_0_PROPERTIES_SECURITY_PROTOCOL
  27.           value: 'SASL_PLAINTEXT'
  28.         - name: KAFKA_CLUSTERS_0_PROPERTIES_SASL_MECHANISM
  29.           value: 'PLAIN'
  30.         - name: KAFKA_CLUSTERS_0_PROPERTIES_SASL_JAAS_CONFIG
  31.           value: 'org.apache.kafka.common.security.scram.ScramLoginModule required username="user1" password="xY71glsywM";'
  32.         resources:
  33.           requests:
  34.             memory: "256Mi"
  35.             cpu: "100m"
  36.         ports:
  37.         - containerPort: 8080
  38. ---
  39. apiVersion: v1
  40. kind: Service
  41. metadata:
  42.   name: kafka-ui
  43.   namespace: kafka     
  44. spec:
  45.   selector:
  46.     app: kafka-ui
  47.   type: NodePort
  48.   ports:
  49.     - protocol: TCP
  50.       port: 8080
  51.       targetPort: 8080
复制代码
参数详解
  1. value: 'kafka-controller-0.kafka-controller-headless.kafka.svc.cluster.local:9092
  2.             kafkapod名称       svc名称                  命名空间
复制代码

浏览器访问

三、kafka集群测试

这里通过两种方式测试下kafka集群,区别只是一个是新起一个容器进行测试,另一个则是在原来的基础进行测试:
3.1 方式一

1.运行一个kafka-client,用于毗连kafka集群
  1. kubectl run kafka-client --restart='Never' --image docker.io/bitnami/kafka:3.7.0-debian-12-r6 --namespace kafka --command -- sleep infinity
复制代码
上面参数说明:
  1. - `--restart='Never'`: 设置 Pod 的重启策略为 "Never",这意味着 Pod 不会自动重启
  2. - `--command -- sleep infinity`: 在容器中执行命令 `sleep infinity`,以保持 Pod 持续运行。
  3. - `--command` 表示后面的内容是一个命令而不是一个参数,
  4. - `sleep infinity` 是一个常用的命令,使得容器无限期地休眠
复制代码
查看pod,已成功创建
  1. root@master1:~/helm/kafka# kubectl get po  -n  kafka
  2. NAME                        READY   STATUS    RESTARTS       AGE
  3. kafka-client                1/1     Running   0              51m
  4. kafka-controller-0          1/1     Running   0              114m
  5. kafka-controller-1          1/1     Running   1 (112m ago)   114m
  6. kafka-controller-2          1/1     Running   0              114m
  7. kafka-ui-784769b6db-k8rbh   1/1     Running   0              27m
复制代码
2.在k8s-master01节点上开启两个窗口,一个用于生产者,一个用作消耗者。 (1)生产者窗口
进入kafka创建一个名为test的topic,出现>代表成功
  1. kubectl exec -it kafka-client -n kafka  -- /bin/bash
  2. cd /opt/bitnami/kafka/bin
  3. kafka-console-producer.sh \
  4. --broker-list kafka-controller-0.kafka-controller-headless.kafka.svc.cluster.local:9092,kafka-controller-1.kafka-controller-headless.kafka.svc.cluster.local:9092,kafka-controller-2.kafka-controller-headless.kafka.svc.cluster.local:9092 \
  5. --topic test
复制代码
参数详解
  1. - `kafka-console-producer.sh`:用于创建生产者  
  2.    
  3. - `--broker-list 指定要连接的 Kafka Broker 列表。使用逗号分隔多个 Broker 的地址。在这里,指定了三个 Kafka Broker 的地址  
  4.    
  5. - `--topic test`:指定要发布消息的主题名称,这里使用的是 "test"
复制代码

(2)消耗者窗口
  1. kubectl exec -it kafka-client -n kafka  -- /bin/bash
  2. cd /opt/bitnami/kafka/bin
  3. kafka-console-consumer.sh \
  4. --bootstrap-server kafka.kafka.svc.cluster.local:9092 \
  5. --topic test \
  6. --from-beginning
复制代码
上面参数说明:
  1. - `kafka-console-consumer.sh`:用于启动消费者
  2. - `--bootstrap-server localhost:9092`:指定用于引导连接到 Kafka 集群的 Kafka Broker 的地址。使用的是本地主机(localhost)上的 Kafka Broker,并监听 9092 端口
  3. - `--topic test`:指定要发布消息的主题名称,这里使用的是 "test"
  4. - `--from-beginning`:设置消费者从主题的开始处开始消费消息。这意味着消费者将从主题中的最早可用消息开始消费
复制代码
3.开始测试,观察到消耗正常
(1)生产者窗口
  1. >test2
  2. >test1
复制代码
(2)消耗者窗口
  1. test2
  2. test1
复制代码
3.2 方式二

1.进入kafka创建一个名为testtopic的topic
  1. kubectl exec -it kafka-controller-0 -n kafka  -- /bin/bash
  2. cd /opt/bitnami/kafka/bin
  3. kafka-topics.sh  \
  4. --create  \
  5. --bootstrap-server kafka-controller-0.kafka-controller-headless.kafka.svc.cluster.local:9092  \
  6. --replication-factor 1 --partitions 1 --topic testtopic
复制代码
上面参数说明:


  • --create:指示 kafka-topics.sh 下令创建一个新的主题
  • kafka-topics.sh:用于创建topic
  • --bootstrap-server localhost:9092:指定用于引导毗连到 Kafka 集群的 Kafka Broker 的地址。使用的是本地主机(localhost)上的 Kafka Broker,并监听 9092 端口
  • --replication-factor 1:设置主题的副本因子(replication factor),指定每个分区的副本数目。
  • --partitions 1:设置主题的分区数,指定要创建的分区数目
  • --topic testtopic:指定要创建的主题的名称,这里使用的是 “testtopic”
2.启动消耗者
  1. kafka-console-consumer.sh \
  2. --bootstrap-server localhost:9092 \
  3. --topic testtopic
复制代码
上面参数说明:


  • kafka-console-consumer.sh:用于创建消耗者
  • --bootstrap-server localhost:9092:指定用于引导毗连到 Kafka 集群的 Kafka Broker 的地址。使用的是本地主机(localhost)上的 Kafka Broker,并监听 9092 端口
3.新起一个窗口后,进入kafka,启动一个生产者后,输出hello字段
  1. kubectl exec -it kafka-0 -n public-service -- bash
  2. kafka-console-producer.sh --bootstrap-server localhost:9092 --topic testtopic
  3. >hello
复制代码
上面参数说明:


  • kafka-console-consumer.sh:用于创建生产者
  • --bootstrap-server localhost:9092:指定用于引导毗连到 Kafka 集群的 Kafka Broker 的地址。使用的是本地主机(localhost)上的 Kafka Broker,并监听 9092 端口
4.在消耗者窗口上进行查看,观察到消耗正常
  1. kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic testtopic
  2. hello
复制代码
四、kafka集群扩容

关于kafka集群扩容,这里先容两种方式:一种是修改副本数进行扩容,另一种是使用helm upgrade进行扩容
4.1 方式一

1.修改values.yaml相应设置,搜索replicaCount,将副本数修改为5
  1. [root@k8s-master01 ~]# cd /root/kafka
  2. [root@k8s-master01 kafka]# vim values.yaml
复制代码

2.开始扩容
  1. [root@k8s-master01 ~]# cd /root/kafka
  2. [root@k8s-master01 kafka]#  helm upgrade -n kafka kafka .
复制代码
3.查看pod创建情况,观察到已经成功扩容
4.2 方式二

实在这种方式只针对下令行方式安装kafka集群
1.直接使用helm upgrade下令进行扩容
  1. $ helm upgrade kafka bitnami/kafka --set zookeeper.enabled=false --set replicaCount=3 --set externalZookeeper.servers=zookeeper --set persistence.enabled=false -n public-service
复制代码
2.查看pod创建情况,观察到已经成功扩容
五、kafka集群删除

1.查看安装的集群
  1. [root@k8s-master01 kafka]# helm list -A
  2. NAME        NAMESPACE       REVISION    UPDATED                                 STATUS      CHART               APP VERSION
  3. kafka       public-service  2           2023-07-08 20:51:17.114862828 +0800 CST deployed    kafka-23.0.1        3.5.0      
  4. zookeeper   public-service  1           2023-07-08 17:16:23.567379001 +0800 CST deployed    zookeeper-11.4.3    3.8.1
复制代码
2.删除kafka集群
  1. [root@k8s-master01 kafka]# helm delete kafka  -n kafka
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

用户国营

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表