Helm安装kafka3.7.0无持久化(KRaft 模式集群)
文章目录
- 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
就是原生的 Kafka
,confluentinc
是在原生 Kafka
的基础上加了一些东西,但他还是兼容原生 Kafka
,有兴趣的自己去看
1.添加helm仓库地址
helm repo add bitnami https://charts.bitnami.com/bitnami
1.更新仓库
helm repo update bitnami
1.查看kafka的Chart包的历史版本
root@master1:~/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包
[root@k8s-master01 ~]# helm pull bitnami/kafka
如果想要下载指定版本,需要指定–version参数
[root@k8s-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包
[root@k8s-master01 ~]# tar -xf kafka-23.0.1.tgz
4.修改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
如果使用指定的zookeeper,kraft模式要关闭,修改kraft.enable 的值为false,新版kafka新增了一个kraft模式,他与zookeeper是冲突的,不能同时使用
根据自己需要修改持久化配置,这里因为是测试环境没有使用持久化(生产必须要使用持久化)。其中修改内容如下:
- enabled修改为false
- 注释existingClaim
- 注释storageClass
客户端需不需要认证主要是这里
listeners:
默认controller可以兼职broker
controller:
5.开始安装
[root@k8s-master01 kafka]# helm install -n kafka kafka .
6.观察到kafka集群已经安装完成
root@master1:~/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 5m46s
7.查看安装的版本信息
root@master1:~/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是否绑定,观察到已成功绑定
[root@k8s-master kafka]# kubectl logs -f kafka-0 -n kafka | grep socket
5.查看安装的values
[root@k8s-master]# helm get values kafka -n kafka
2.2 命令行方式安装kafka集群
1.直接安装
$ helm install kafka bitnami/kafka --set zookeeper.enabled=false --set replicaCount=3 --set externalZookeeper.servers=zookeeper --set persistence.enabled=false -n public-service
helm install kafka kafka --values ./kafka/values.yaml \--set replicaCount=1 \--set kafka.kafkaConfigOverrides=transaction.state.log.replication.factor=1 \--set kafka.kafkaConfigOverrides=transaction.state.log.min.isr=1 \--set kafka.kafkaConfigOverrides=default.replication.factor=1 \--set kafka.kafkaConfigOverrides=num.io.threads=2 \--set kafka.kafkaConfigOverrides=num.network.threads=2 \--set kafka.kafkaConfigOverrides=inter.broker.protocol.version=3.5.1 \--set kafka.kafkaConfigOverrides=offsets.topic.replication.factor=1 \--set kafka.kafkaConfigOverrides=transaction.state.log.num.partitions=50
搭建 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 username="user1" password="xY71glsywM";'resources:requests:memory: "256Mi"cpu: "100m"ports:- 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 --restart='Never' --image docker.io/bitnami/kafka:3.7.0-debian-12-r6 --namespace kafka --command -- sleep infinity
上面参数说明:
- `--restart='Never'`: 设置 Pod 的重启策略为 "Never",这意味着 Pod 不会自动重启
- `--command -- sleep infinity`: 在容器中执行命令 `sleep infinity`,以保持 Pod 持续运行。
- `--command` 表示后面的内容是一个命令而不是一个参数,
- `sleep infinity` 是一个常用的命令,使得容器无限期地休眠
查看pod,已成功建立
root@master1:~/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 27m
2.在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
test1
3.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
[root@k8s-master01 ~]# cd /root/kafka
[root@k8s-master01 kafka]# vim values.yaml
2.开始扩容
[root@k8s-master01 ~]# cd /root/kafka
[root@k8s-master01 kafka]# helm upgrade -n kafka kafka .
3.查看pod建立情况,观察到已经成功扩容
4.2 方式二
其实这种方式只针对命令行方式安装kafka集群
1.直接使用helm upgrade命令进行扩容
$ 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.查看安装的集群
[root@k8s-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.1
2.删除kafka集群
[root@k8s-master01 kafka]# helm delete kafka -n kafka
相关文章:

Helm安装kafka3.7.0无持久化(KRaft 模式集群)
文章目录 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.…...

【机器学习】期望最大化(EM)算法
文章目录 一、极大似然估计1.1 基本原理1.2 举例说明 二、Jensen不等式三、EM算法3.1 隐变量 与 观测变量3.2 为什么要用EM3.3 引入Jensen不等式3.4 EM算法步骤3.5 EM算法总结 参考资料 EM是一种解决 存在隐含变量优化问题 的有效方法。EM的意思是“期望最大化(Exp…...
【Python】机器学习中的过采样和欠采样:处理不平衡数据集的关键技术
原谅把你带走的雨天 在渐渐模糊的窗前 每个人最后都要说再见 原谅被你带走的永远 微笑着容易过一天 也许是我已经 老了一点 那些日子你会不会舍不得 思念就像关不紧的门 空气里有幸福的灰尘 否则为何闭上眼睛的时候 又全都想起了 谁都别说 让我一个人躲一躲 你的承诺 我竟然没怀…...

重新思考:Netflix 的边缘负载均衡
声明 本文是对Netflix 博客的翻译 前言 在先前关于Zuul 2开源的文章中,我们简要概述了近期在负载均衡方面的一些工作。在这篇文章中,我们将更详细地介绍这项工作的原因、方法和结果。 因此,我们开始从Zuul和其他团队那里学习&#…...

元组的创建和删除
目录 使用赋值运算符直接创建元组 创建空元组 创建数值元组 删除元组 自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 元组(tuple)是Python中另一个重要的序列结构&#…...
CSS3用户界面
用户界面 appearance appearance 属性用于控制元素是否采用用户代理(浏览器)的默认样式(外观) element {appearance: auto | none;}auto(默认):元素采用浏览器提供的默认样式。none:元素不采用任何默认样式,显示为“裸”元素,通常表现为无特定样式的简单框。input[…...

STL源码刨析:序列式容器之vector
目录 1.序列式容器和关联式容器 2.vector的定义和结构 3.vector的构造函数和析构函数的实现 4.vector的数据结构以及实现源码 5.vector的元素操作 前言 本系列将重点对STL中的容器进行讲解,而在容器的分类中,我们将容器分为序列式容器和关联式容器。本章…...
Flutter 中的 AbsorbPointer 小部件:全面指南
Flutter 中的 AbsorbPointer 小部件:全面指南 在Flutter中,AbsorbPointer是一个特殊的小部件,用于吸收(或“吞噬”)所有传递到其子组件的指针事件(如触摸或鼠标点击)。这在某些情况下非常有用&…...

Web开发学习总结
学习路线 Web 全球广域网,也称为万维网(www World Wide Web),能够通过浏览器访问的网站 初识Web前端 Web标准也称为网页标准,由一系列的标准组成,大部分由W3C(World Wide Web Consortium,万维网联盟)负责制定。三个组…...
springboot相关知识集锦----1
一、springboot是什么? springboot是一个用于构建基于spring框架的独立应用程序的框架。它采用自动配置的原则,以减少开发人员在搭建应用方面的时间和精力。同时提升系统的可维护性和可扩展性。 二、springboot的优点 约定优于配置 版本锁定…...

App推广新境界:Xinstall助你轻松突破运营痛点,实现用户快速增长!
在移动互联网时代,App已经成为企业营销不可或缺的一部分。然而,如何有效地推广App,吸引并留住用户,成为了众多企业面临的难题。今天,我们将为您揭秘一款神奇的App推广工具——Xinstall,它将助您轻松突破运营…...

YOLOv10 论文学习
论文链接:https://arxiv.org/pdf/2405.14458 代码链接:https://github.com/THU-MIG/yolov10 解决了什么问题? 实时目标检测是计算机视觉领域的研究焦点,目的是以较低的延迟准确地预测图像中各物体的类别和坐标。它广泛应用于自动…...

[Spring Boot]baomidou 多数据源
文章目录 简述本文涉及代码已开源 项目配置pom引入baomidouyml增加dynamic配置启动类增加注解配置结束 业务调用注解DS()TransactionalDSTransactional自定义数据源注解MySQL2 测试调用查询接口单数据源事务测试多数据源事务如果依然使用Transactional会怎样?测试正…...

Drone+Gitee自动执行构建、测试和发布工作流
拉取Drone:(至于版本,你可以下载最新的) sudo docker pull drone/drone:2 拉取runner: sudo docker pull drone/drone-runner-docker 在Gitee中添加第三方应用: 进入个人主页,点击设置: 往下翻,找到数…...
Unity3D MMORPG 主城角色动画控制与消息触发详解
Unity3D是一款强大的游戏开发引擎,它提供了丰富的功能和工具,使开发者能够轻松创建出高质量的游戏。其中,角色动画控制和消息触发是游戏开发中非常重要的一部分,它们可以让游戏角色表现出更加生动和多样的动作,同时也能…...

【Text2SQL 经典模型】HydraNet
论文:Hybrid Ranking Network for Text-to-SQL ⭐⭐⭐ arXiv:2008.04759 HydraNet 也是利用 PLM 来生成 question 和 table schema 的 representation 并用于生成 SQL,并在 SQLova 和 X-SQL 做了改进,提升了在 WikiSQL 上的表现。 一、Intro…...

Mysql-根据字段名查询字段在哪些表里
SELECT * FROM information_schema.COLUMNS WHERE COLUMN_NAMElabel_name;...
牛逼!50.3K Star!一个自动将屏幕截图转换为代码的开源工具
1、背景 在当今快节奏的软件开发环境中,设计师与开发者之间的协同工作显得尤为重要。然而,理解并准确实现设计稿的意图常常需要耗费大量的时间和沟通成本。为此,开源社区中出现了一个引人注目的项目——screenshot-to-code,它利用…...

八种单例模式
文章目录 1.单例模式基本介绍1.介绍2.单例模式八种方式 2.饿汉式(静态常量,推荐)1.基本步骤1.构造器私有化(防止new)2.类的内部创建对象3.向外暴露一个静态的公共方法 2.代码实现3.优缺点分析 3.饿汉式(静态…...

禅道密码正确但是登录异常处理
禅道密码正确,但是登录提示密码错误的异常处理 排查内容 # 1、服务器异常,存储空间、数据库异常 # 2、服务异常,文件丢失等异常问题定位 # 1、df -h 排查服务器存储空间 # 2、根据my.php排查数据库连接是否正常 # 3、修改my.pho,debugtrue…...

【Python】 -- 趣味代码 - 小恐龙游戏
文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...
Java多线程实现之Thread类深度解析
Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...

免费PDF转图片工具
免费PDF转图片工具 一款简单易用的PDF转图片工具,可以将PDF文件快速转换为高质量PNG图片。无需安装复杂的软件,也不需要在线上传文件,保护您的隐私。 工具截图 主要特点 🚀 快速转换:本地转换,无需等待上…...

GO协程(Goroutine)问题总结
在使用Go语言来编写代码时,遇到的一些问题总结一下 [参考文档]:https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现: 今天在看到这个教程的时候,在自己的电…...

从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践
作者:吴岐诗,杭银消费金融大数据应用开发工程师 本文整理自杭银消费金融大数据应用开发工程师在StarRocks Summit Asia 2024的分享 引言:融合数据湖与数仓的创新之路 在数字金融时代,数据已成为金融机构的核心竞争力。杭银消费金…...
c# 局部函数 定义、功能与示例
C# 局部函数:定义、功能与示例 1. 定义与功能 局部函数(Local Function)是嵌套在另一个方法内部的私有方法,仅在包含它的方法内可见。 • 作用:封装仅用于当前方法的逻辑,避免污染类作用域,提升…...

阿里云Ubuntu 22.04 64位搭建Flask流程(亲测)
cd /home 进入home盘 安装虚拟环境: 1、安装virtualenv pip install virtualenv 2.创建新的虚拟环境: virtualenv myenv 3、激活虚拟环境(激活环境可以在当前环境下安装包) source myenv/bin/activate 此时,终端…...
土建施工员考试:建筑施工技术重点知识有哪些?
《管理实务》是土建施工员考试中侧重实操应用与管理能力的科目,核心考查施工组织、质量安全、进度成本等现场管理要点。以下是结合考试大纲与高频考点整理的重点内容,附学习方向和应试技巧: 一、施工组织与进度管理 核心目标: 规…...

2.3 物理层设备
在这个视频中,我们要学习工作在物理层的两种网络设备,分别是中继器和集线器。首先来看中继器。在计算机网络中两个节点之间,需要通过物理传输媒体或者说物理传输介质进行连接。像同轴电缆、双绞线就是典型的传输介质,假设A节点要给…...

pgsql:还原数据库后出现重复序列导致“more than one owned sequence found“报错问题的解决
问题: pgsql数据库通过备份数据库文件进行还原时,如果表中有自增序列,还原后可能会出现重复的序列,此时若向表中插入新行时会出现“more than one owned sequence found”的报错提示。 点击菜单“其它”-》“序列”,…...