个人备案号 可以做游戏网站吗,越南网络公司排名,湖北专业网站建设质量保障,做外贸的女生干净吗文章目录 2.1 Chart包方式安装kafka集群 5.开始安装2.2 命令行方式安装kafka集群 搭建 Kafka-UI三、kafka集群测试3.1 方式一3.2 方式二 四、kafka集群扩容4.1 方式一4.2 方式二 五、kafka集群删除 参考文档
[Helm实践---安装kafka集群 - 知乎 (zhihu.com)](https://zhuanlan.… 文章目录 2.1 Chart包方式安装kafka集群 5.开始安装2.2 命令行方式安装kafka集群 搭建 Kafka-UI三、kafka集群测试3.1 方式一3.2 方式二 四、kafka集群扩容4.1 方式一4.2 方式二 五、kafka集群删除 参考文档
[Helm实践---安装kafka集群 - 知乎 (zhihu.com)](https://zhuanlan.zhihu.com/p/642515749)[K8S Kraft Kafka 集群搭建 - 掘金 (juejin.cn)](https://juejin.cn/post/7330515218605637667)2.1 Chart包方式安装kafka集群
bitnami/kafka 就是原生的 Kafkaconfluentinc 是在原生 Kafka 的基础上加了一些东西但他还是兼容原生 Kafka有兴趣的自己去看
1.添加helm仓库地址
helm repo add bitnami https://charts.bitnami.com/bitnami1.更新仓库
helm repo update bitnami1.查看kafka的Chart包的历史版本
rootmaster1:~/helm/kafka# helm search repo bitnami/kafka -l
NAME CHART VERSION APP VERSION DESCRIPTION
bitnami/kafka 28.3.0 3.7.0 Apache Kafka is a distributed streaming platfor...
bitnami/kafka 28.2.6 3.7.0 Apache Kafka is a distributed streaming platfor...
bitnami/kafka 28.2.5 3.7.0 Apache Kafka is a distributed streaming platfor...
bitnami/kafka 28.2.4 3.7.0 Apache Kafka is a distributed streaming platfor...
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包
[rootk8s-master01 ~]# helm pull bitnami/kafka如果想要下载指定版本需要指定–version参数
[rootk8s-master01 ~]# helm pull bitnami/kafka --version 23.0.0(3).拉取chart包格式: helm pull 远程仓库chart包名 --version 0.4.3 --untar #从远程仓库拉取指定版本的chart包到本地并解压,--untar是解压,不加就是压缩包
helm pull 远程仓库chart包名 --untar #从远程仓库拉取最新版本的chart包到本地并解压,--untar是解压,不加就是压缩包3.解压chart包
[rootk8s-master01 ~]# tar -xf kafka-23.0.1.tgz4.修改values.yaml相应配置
需要修改replicaCount的值为3
$ cd /root/helm/kafka/kafka
$ vim values.yaml根据自己需要修改image可不改
$ cd /root/kafka
$ vim values.yaml
...
...
image:registry: registry.cn-hangzhou.aliyuncs.comrepository: abroad_images/kafkatag: 3.5.0-debian-11-r1image:registry: registry.cn-hangzhou.aliyuncs.comrepository: abroad_images/kubectltag: 1.25.11-debian-11-r4image:registry: registry.cn-hangzhou.aliyuncs.comrepository: abroad_images/bitnami-shelltag: 11-debian-11-r130image:registry: registry.cn-hangzhou.aliyuncs.comrepository: abroad_images/kafka-exportertag: 1.7.0-debian-11-r11image:registry: registry.cn-hangzhou.aliyuncs.comrepository: abroad_images/jmx-exportertag: 0.18.0-debian-11-r34
如果使用指定的zookeeperkraft模式要关闭修改kraft.enable 的值为false新版kafka新增了一个kraft模式他与zookeeper是冲突的不能同时使用
根据自己需要修改持久化配置这里因为是测试环境没有使用持久化(生产必须要使用持久化。其中修改内容如下
enabled修改为false注释existingClaim注释storageClass
客户端需不需要认证主要是这里 listeners:
默认controller可以兼职broker controller:
5.开始安装
[rootk8s-master01 kafka]# helm install -n kafka kafka .6.观察到kafka集群已经安装完成
rootmaster1:~/helm/kafka/kafka# kubectl get po -n kafka
NAME READY STATUS RESTARTS AGE
kafka-client 1/1 Running 0 29m
kafka-controller-0 1/1 Running 0 92m
kafka-controller-1 1/1 Running 1 (90m ago) 92m
kafka-controller-2 1/1 Running 0 92m
kafka-ui-784769b6db-k8rbh 1/1 Running 0 5m46s7.查看安装的版本信息
rootmaster1:~/helm/kafka/kafka# helm list -n kafka
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
kafka kafka 1 2024-05-23 15:08:04.59273309 0800 CST deployed kafka-28.3.0 3.7.0 8.验证kafka与zookeeper是否绑定,观察到已成功绑定
[rootk8s-master kafka]# kubectl logs -f kafka-0 -n kafka | grep socket5.查看安装的values
[rootk8s-master]# helm get values kafka -n kafka2.2 命令行方式安装kafka集群
1.直接安装
$ helm install kafka bitnami/kafka --set zookeeper.enabledfalse --set replicaCount3 --set externalZookeeper.serverszookeeper --set persistence.enabledfalse -n public-servicehelm install kafka kafka --values ./kafka/values.yaml \--set replicaCount1 \--set kafka.kafkaConfigOverridestransaction.state.log.replication.factor1 \--set kafka.kafkaConfigOverridestransaction.state.log.min.isr1 \--set kafka.kafkaConfigOverridesdefault.replication.factor1 \--set kafka.kafkaConfigOverridesnum.io.threads2 \--set kafka.kafkaConfigOverridesnum.network.threads2 \--set kafka.kafkaConfigOverridesinter.broker.protocol.version3.5.1 \--set kafka.kafkaConfigOverridesoffsets.topic.replication.factor1 \--set kafka.kafkaConfigOverridestransaction.state.log.num.partitions50搭建 Kafka-UI
kafka-web-ui.yaml
apiVersion: apps/v1
kind: Deployment
metadata:name: kafka-uilabels:app: kafka-uinamespace: kafka
spec:replicas: 1selector:matchLabels:app: kafka-uitemplate:metadata:labels:app: kafka-uispec:containers:- name: kafka-uiimage: provectuslabs/kafka-ui:latestenv:- name: KAFKA_CLUSTERS_0_NAMEvalue: Kafka Cluster- name: KAFKA_CLUSTERS_0_BOOTSTRAPSERVERSvalue: 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- name: KAFKA_CLUSTERS_0_PROPERTIES_SECURITY_PROTOCOLvalue: SASL_PLAINTEXT- name: KAFKA_CLUSTERS_0_PROPERTIES_SASL_MECHANISMvalue: PLAIN- name: KAFKA_CLUSTERS_0_PROPERTIES_SASL_JAAS_CONFIGvalue: org.apache.kafka.common.security.scram.ScramLoginModule required usernameuser1 passwordxY71glsywM;resources:requests:memory: 256Micpu: 100mports:- containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:name: kafka-uinamespace: kafka
spec:selector:app: kafka-uitype: NodePortports:- protocol: TCPport: 8080targetPort: 8080参数详解
value: kafka-controller-0.kafka-controller-headless.kafka.svc.cluster.local:9092kafkapod名称 svc名称 命名空间 浏览器访问
三、kafka集群测试
这里通过两种方式测试下kafka集群区别只是一个是新起一个容器进行测试另一个则是在原来的基础进行测试
3.1 方式一
1.运行一个kafka-client用于连接kafka集群
kubectl run kafka-client --restartNever --image docker.io/bitnami/kafka:3.7.0-debian-12-r6 --namespace kafka --command -- sleep infinity上面参数说明:
- --restartNever: 设置 Pod 的重启策略为 Never这意味着 Pod 不会自动重启
- --command -- sleep infinity: 在容器中执行命令 sleep infinity以保持 Pod 持续运行。
- --command 表示后面的内容是一个命令而不是一个参数
- sleep infinity 是一个常用的命令使得容器无限期地休眠查看pod,已成功建立
rootmaster1:~/helm/kafka# kubectl get po -n kafka
NAME READY STATUS RESTARTS AGE
kafka-client 1/1 Running 0 51m
kafka-controller-0 1/1 Running 0 114m
kafka-controller-1 1/1 Running 1 (112m ago) 114m
kafka-controller-2 1/1 Running 0 114m
kafka-ui-784769b6db-k8rbh 1/1 Running 0 27m2.在k8s-master01节点上开启两个窗口一个用于生产者一个用作消费者。 (1)生产者窗口
进入kafka创建一个名为test的topic,出现代表成功
kubectl exec -it kafka-client -n kafka -- /bin/bashcd /opt/bitnami/kafka/binkafka-console-producer.sh \--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 \--topic test参数详解
- kafka-console-producer.sh:用于创建生产者 - --broker-list 指定要连接的 Kafka Broker 列表。使用逗号分隔多个 Broker 的地址。在这里指定了三个 Kafka Broker 的地址 - --topic test指定要发布消息的主题名称这里使用的是 test(2)消费者窗口
kubectl exec -it kafka-client -n kafka -- /bin/bashcd /opt/bitnami/kafka/binkafka-console-consumer.sh \--bootstrap-server kafka.kafka.svc.cluster.local:9092 \--topic test \--from-beginning上面参数说明
- kafka-console-consumer.sh:用于启动消费者
- --bootstrap-server localhost:9092指定用于引导连接到 Kafka 集群的 Kafka Broker 的地址。使用的是本地主机localhost上的 Kafka Broker并监听 9092 端口
- --topic test指定要发布消息的主题名称这里使用的是 test
- --from-beginning设置消费者从主题的开始处开始消费消息。这意味着消费者将从主题中的最早可用消息开始消费3.开始测试观察到消费正常
(1)生产者窗口
test2
test1(2)消费者窗口
test2
test13.2 方式二
1.进入kafka创建一个名为testtopic的topic
kubectl exec -it kafka-controller-0 -n kafka -- /bin/bashcd /opt/bitnami/kafka/binkafka-topics.sh \--create \--bootstrap-server kafka-controller-0.kafka-controller-headless.kafka.svc.cluster.local:9092 \--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.启动消费者
kafka-console-consumer.sh \--bootstrap-server localhost:9092 \--topic testtopic上面参数说明:
kafka-console-consumer.sh:用于创建消费者--bootstrap-server localhost:9092指定用于引导连接到 Kafka 集群的 Kafka Broker 的地址。使用的是本地主机localhost上的 Kafka Broker并监听 9092 端口
3.新起一个窗口后进入kafka启动一个生产者后输出hello字段
kubectl exec -it kafka-0 -n public-service -- bashkafka-console-producer.sh --bootstrap-server localhost:9092 --topic testtopic
hello上面参数说明:
kafka-console-consumer.sh:用于创建生产者--bootstrap-server localhost:9092指定用于引导连接到 Kafka 集群的 Kafka Broker 的地址。使用的是本地主机localhost上的 Kafka Broker并监听 9092 端口
4.在消费者窗口上进行查看观察到消费正常
kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic testtopichello四、kafka集群扩容
关于kafka集群扩容这里介绍两种方式:一种是修改副本数进行扩容另一种是使用helm upgrade进行扩容
4.1 方式一
1.修改values.yaml相应配置,搜索replicaCount将副本数修改为5
[rootk8s-master01 ~]# cd /root/kafka
[rootk8s-master01 kafka]# vim values.yaml2.开始扩容
[rootk8s-master01 ~]# cd /root/kafka
[rootk8s-master01 kafka]# helm upgrade -n kafka kafka .3.查看pod建立情况,观察到已经成功扩容
4.2 方式二
其实这种方式只针对命令行方式安装kafka集群
1.直接使用helm upgrade命令进行扩容
$ helm upgrade kafka bitnami/kafka --set zookeeper.enabledfalse --set replicaCount3 --set externalZookeeper.serverszookeeper --set persistence.enabledfalse -n public-service2.查看pod建立情况,观察到已经成功扩容
五、kafka集群删除
1.查看安装的集群
[rootk8s-master01 kafka]# helm list -A
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
kafka public-service 2 2023-07-08 20:51:17.114862828 0800 CST deployed kafka-23.0.1 3.5.0
zookeeper public-service 1 2023-07-08 17:16:23.567379001 0800 CST deployed zookeeper-11.4.3 3.8.12.删除kafka集群
[rootk8s-master01 kafka]# helm delete kafka -n kafka