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 就是原生的 Kafkaconfluentinc 是在原生 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...

image.png

(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

image.png

4.修改values.yaml相应配置

需要修改replicaCount的值为3

$ cd /root/helm/kafka/kafka
$ vim values.yaml

image.png

根据自己需要修改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是冲突的,不能同时使用
image.png

根据自己需要修改持久化配置,这里因为是测试环境没有使用持久化(生产必须要使用持久化)。其中修改内容如下:

  • enabled修改为false
  • 注释existingClaim
  • 注释storageClass
    image.png

客户端需不需要认证主要是这里
listeners:
image.png

默认controller可以兼职broker
controller:
image.png

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 

image.png

8.验证kafka与zookeeper是否绑定,观察到已成功绑定

[root@k8s-master kafka]# kubectl logs -f kafka-0 -n kafka | grep socket

image.png

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

image.png

搭建 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名称                  命名空间

image.png

浏览器访问
image.png

三、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"

image.png

(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

image.png

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/329657.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

离散数学--图论

目录 1.简单概念 2.握手定理 3.点割集 4.边割集 5.点连通度和边连通度 6.Dijstra算法&&最短路径 7.有向图的连通性 8.图的矩阵表示 9.欧拉图问题 10.哈密尔顿图 1.简单概念 (1)这个里面的完全图比较重要,完全图是例如k3,k5这…

vue项目报错:internal/modules/cjs/loader.js:892 throw err;

前言: vue项目中无法正常使用git,并报错情况。 报错信息: internal/modules/cjs/loader.js:892throw err;^ Error: Cannot find module D:\project\sd_wh_yth_front\node_modules\yorkie\src\runner.js 报错处理: npm install y…

局部直方图均衡化去雾算法

目录 1. 引言 2. 算法流程 3. 代码 4. 去雾效果 1. 引言 局部直方图算法是一种基于块的图像去雾方法,它将图像分割为若干个块,并在每个块内计算块的局部直方图。通过对各个块的直方图进行分析和处理,该算法能够更好地适应图像中不同区域的…

九宫格转圈圈抽奖活动,有加速,减速效果

在线访问demo和代码在底部 代码&#xff0c;复制就可以跑 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><tit…

Git远程控制

文章目录 1. 创建仓库1.1 Readme1.2 Issue1.3 Pull request 2. 远程仓库克隆3. 推送远程仓库4. 拉取远程仓库5. 配置Git.gitignore配置别名 使用GitHub可以&#xff0c;采用Gitee也行 1. 创建仓库 1.1 Readme Readme文件相当于这个仓库的说明书&#xff0c;gitee会初始化2两份…

解除网页禁止选择

控制台输入以下命令 复制&#xff1a;javascript:void(document.body.οncοpy) 可选&#xff1a;javascript:void(document.body.onselectstart) 拖拉&#xff1a;javascript:void(document.body.οnmοuseup)

好的架构是进化来的,不是设计来的

很多年前&#xff0c;读了子柳老师的《淘宝技术这十年》。这本书成为了我的架构启蒙书&#xff0c;书中的一句话像种子一样深埋在我的脑海里&#xff1a;“好的架构是进化来的&#xff0c;不是设计来的”。 2015 年&#xff0c;我加入神州专车订单研发团队&#xff0c;亲历了专…

Android ART 虚拟机简析

源码基于&#xff1a;Android U 1. prop 名称选项名称heap 变量名称功能 dalvik.vm.heapstartsize MemoryInitialSize initial_heap_size_ 虚拟机在启动时&#xff0c;向系统申请的起始内存 dalvik.vm.heapgrowthlimit HeapGrowthLimit growth_limit_ 应用可使用的 max…

先进电气技术 —— 控制理论中的“观测器”概述

一、背景 观测器在现代控制理论中的地位十分重要&#xff0c;它是实现系统状态估计的关键工具。观测器的发展历程可以从以下几个方面概述&#xff1a; 1. 起源与发展背景&#xff1a; 观测器的概念源于对系统状态信息的需求&#xff0c;特别是在只能获取部分或间接输出信息…

如何在.NET中集成SignalR

SignalR 简介 SignalR是一个开放源代码库&#xff0c;可用于简化向应用添加实时Web功能&#xff0c;实时Web功能使服务器端代码能够将内容推送到客户端。 SignalR开源库&#xff1a;https://github.com/SignalR/SignalR SignalR 应用场景 需要高频次从服务器获取信息的应用&am…

java-spring 14 项目启动过程

Spring的启动流程可以归纳为三个步骤&#xff1a; 1、初始化Spring容器&#xff0c;注册内置的BeanPostProcessor的BeanDefinition到容器中 2、将配置类的BeanDefinition注册到容器中 3、调用refresh()方法刷新容器 // 初始化容器 public AnnotationConfigApplicationContex…

弘君资本股市技巧:限售股解禁对市场有何影响?

限售股解禁意味着本来不能在商场上自由生意的股票能够进入二级商场流通了&#xff0c;限售股解禁往往会引起投资者们的高度关注。关于限售股解禁对商场有何影响&#xff0c;弘君资本下面就为大家具体介绍一下。 限售股解禁的影响&#xff1a; 1、股价跌落压力增大。当限售股解…

二.常见算法--贪心算法

&#xff08;1&#xff09;单源点最短路径问题 问题描述&#xff1a; 给定一个图&#xff0c;任取其中一个节点为固定的起点&#xff0c;求从起点到任意节点的最短路径距离。 例如&#xff1a; 思路与关键点&#xff1a; 以下代码中涉及到宏INT_MAX,存在于<limits.h>中…

彩色进度条(C语言版本)

.h文件 #include<stdio.h> #include<windows.h>#define NUM 101 #define LOAD_UP 50 #define LOAD_DOWN 60 #define SLEEP_SLOW 300 #define SLEEP_FAST 70 版本1&#xff1a;&#xff08;初始版&#xff09; //v1 #include "progress.h" int main() …

【云原生】Kubernetes基础命令合集

目录 引言 一、命令概述 &#xff08;一&#xff09;命令分类 &#xff08;二&#xff09;基本语法 二、查看基本信息 &#xff08;一&#xff09;环境指令 1.查看版本信息 2.查看资源对象简写 3.添加补全信息 4.查看日志 5.查看集群信息 &#xff08;二&#xff0…

vue打包部署到springboot,通过tomcat运行

tomcat默认端口 8080springboot端口 9132vue 端口 9131 框架 项目是基于SpringBootVue前后端分离的仓库管理系统 后端&#xff1a;SpringBoot MybatisPlus前端&#xff1a;Node.js Vue element-ui数据库&#xff1a;mysql 一. 打包Vue项目 cmd中输入命令 npm run build 后…

【施磊】C++语言基础提高:深入学习C++语言先要练好的内功

课程总目录 文章目录 一、进程的虚拟地址空间内存划分和布局二、函数的调用堆栈详细过程三、程序编译链接原理1. 编译过程2. 链接过程 一、进程的虚拟地址空间内存划分和布局 任何的编程语言 → \to → 产生两种东西&#xff1a;指令和数据 编译链接完成之后会产生一个可执行…

python将程序运行结果存入txt文本

//其实就是运行下面代码&#xff0c;然后下面代码会通过subprocess再去运行script.py&#xff08;我们的程序代码&#xff09;&#xff0c;然后把它写入oput.txt中。 import subprocess with open(oput.txt, w) as f:subprocess.run([python, script.py], stdoutf, stderrsu…

XX数字中台技术栈及能力

XX数字中台技术栈及能力 1 概述 XX数字中台面向数据开发者、数据管理者和数据应用者&#xff0c;提供数据汇聚、融合、治理、开发、挖掘、共享、可视化、智能化等能力&#xff0c;实现数据端到端的全生命周期管理&#xff0c;以共筑数字基础底座&#xff0c;共享数据服务能力…

酷开系统 | 酷开科技把握智慧先机 AI赋能家庭场景

智慧化是当今世界科技发展的前沿领域之一。现在的智慧化&#xff0c;也正在逐步成为我们日常生活的一部分。电视系统也进入了数字化时代&#xff0c;AI的应用正在不断扩展&#xff0c;其潜力似乎无穷无尽。 酷开科技深耕人工智能技术&#xff0c;在提升语音体验、强化智能家居…