Helm安装kafka3.7.0无持久化(KRaft 模式集群)

news2024/11/13 9:28:08

文章目录

      • 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.com
  repository: abroad_images/kafka
  tag: 3.5.0-debian-11-r1

image:
  registry: registry.cn-hangzhou.aliyuncs.com
  repository: abroad_images/kubectl
  tag: 1.25.11-debian-11-r4

image:
  registry: registry.cn-hangzhou.aliyuncs.com
  repository: abroad_images/bitnami-shell
  tag: 11-debian-11-r130

image:
  registry: registry.cn-hangzhou.aliyuncs.com
  repository: abroad_images/kafka-exporter
  tag: 1.7.0-debian-11-r11

image:
  registry: registry.cn-hangzhou.aliyuncs.com
  repository: abroad_images/jmx-exporter
  tag: 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-ui
  labels:
    app: kafka-ui
  namespace: kafka    
spec:
  replicas: 1
  selector:
    matchLabels:
      app: kafka-ui
  template:
    metadata:
      labels:
        app: kafka-ui
    spec:
      containers:
      - name: kafka-ui
        image: provectuslabs/kafka-ui:latest
        env:
        - name: KAFKA_CLUSTERS_0_NAME
          value: 'Kafka Cluster'
        - name: KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS
          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'
        - name: KAFKA_CLUSTERS_0_PROPERTIES_SECURITY_PROTOCOL
          value: 'SASL_PLAINTEXT'
        - name: KAFKA_CLUSTERS_0_PROPERTIES_SASL_MECHANISM
          value: 'PLAIN'
        - name: KAFKA_CLUSTERS_0_PROPERTIES_SASL_JAAS_CONFIG
          value: '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-ui
  namespace: kafka     
spec:
  selector:
    app: kafka-ui
  type: NodePort
  ports:
    - protocol: TCP
      port: 8080
      targetPort: 8080

参数详解

value: 'kafka-controller-0.kafka-controller-headless.kafka.svc.cluster.local:9092

            kafkapod名称       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/bash

cd /opt/bitnami/kafka/bin

kafka-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/bash

cd /opt/bitnami/kafka/bin

kafka-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/bash

cd /opt/bitnami/kafka/bin

kafka-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 -- bash

kafka-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 testtopic

hello

四、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.coloradmin.cn/o/1686060.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《黑龙江日报》是什么级别的报刊?

《黑龙江日报》是什么级别的报刊? 《黑龙江日报》是省级党报。它是黑龙江省重要的主流媒体之一,在传达党的方针政策、反映社会动态、推动地方发展等方面发挥着重要作用。具有较高的权威性和影响力,为黑龙江省的新闻传播和信息交流做出了重要…

云动态摘要 2024-05-24

给您带来云厂商的最新动态,最新产品资讯和最新优惠更新。 最新优惠与活动 [免费试用]大模型知识引擎体验招募 腾讯云 2024-05-21 大模型知识引擎产品全新上线,为回馈新老客户,50万token免费送,开通服务即领取! 云服…

清空了电脑回收站,之前的文件还能否恢复?

电脑已成为我们日常生活中不可或缺的一部分。我们在电脑上处理文档、保存图片、下载视频等,而电脑中的回收站则成为我们处理不再需要文件的一个便捷工具,当我们想要删除某些文档的话,它并不是立即从硬盘上消失,而是被系统移动到了…

SwanLab入门深度学习:BERT IMDB文本情感分类

基于BERT模型的IMDB电影评论情感分类,是NLP经典的Hello World任务之一。 这篇文章我将带大家使用SwanLab、transformers、datasets三个开源工具,完成从数据集准备、代码编写、可视化训练的全过程。 观察了一下,中文互联网上似乎很少有能直接…

光敏聚酰亚胺(PSPI)行业技术壁垒较高 本土企业已具备相关产品量产能力

光敏聚酰亚胺(PSPI)行业技术壁垒较高 本土企业已具备相关产品量产能力 光敏聚酰亚胺(PSPI)又称光敏PI、光刻胶用聚酰亚胺,指将光敏基团引入聚酰亚胺分子链中制成的高性能有机材料。PSPI拥有极佳耐热性、化学稳定性、热…

新书推荐:6.1 if语句

计算机语言和人类语言类似,人类语言是为了解决人与人之间交流的问题,而计算机语言是为了解决程序员与计算机之间交流的问题。程序员编写的程序就是计算机的控制指令,控制计算机的运行。借助于编译工具,可以将各种不同的编程语言的…

Jenkins工具系列 —— 通过钉钉API 发送消息

文章目录 钉钉环境搭建使用钉钉API接口 发送消息机器人安全设置使用自定义关键词机器人安全设置使用加签方式 资料下载 钉钉环境搭建 在jenkins安装钉钉插件以及小机器人,这部分内容可参考:插件 钉钉发送消息 使用钉钉API接口 发送消息 机器人安全设置…

Day02:LeedCode977. 有序数组的平方 209.长度最小的子数组 59.螺旋矩阵II

详解:Day2:LeedCode977. 有序数组的平方 209.长度最小的子数组 59.螺旋矩阵II-CSDN博客 977. 有序数组的平方 给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。 示例 1: 输入&#…

Docker Compose快速入门

本教程旨在通过指导您开发基本Python web应用程序来介绍Docker Compose的基本概念。 使用Flask框架,该应用程序在Redis中提供了一个命中计数器,提供了如何在web开发场景中应用Docker Compose的实际示例。 即使您不熟悉Python,这里演示的概念也…

Window Linux 权限提升

#基础点: 0、为什么我们要学习权限提升转移技术: 简单来说就是达到目的过程中需要用到它 心里要想着我是谁 我在哪 我要去哪里 1、具体有哪些权限需要我们了解掌握的: 后台权限,数据库权限,Web权限,用户权…

React 中Redux结合React-Redux使用类组件版本(一)

一、Redux是什么? 1.Redux是一个专门用于状态管理的js库 2.它可以用在React、Angular、Vue的项目中,但基本与React配合使用。 3.作用:集中式管理React应用中多个组件共享的状态。 二、Redux 工作流程 三、Redux的三个核心概念 1.action 动…

线上研讨会 | 探索非标自动化产线行业的数转智改之路

报名链接: 2024 达索系统工业大发展在线研讨会 (tbh5.com)

azure gpt 技术教程教学 | 在Azure OpenAI 上部署GPT-4o

Azure OpenAI GPT-4o是OpenAI推出的最新旗舰级人工智能模型。GPT-4o模型设计为能够实时对音频、视觉和文本进行推理,这是迈向更自然人机交互的重要一步。该模型的一大特点是能够处理多种类型的数据输入和输出,包括文本、音频和图像,实现了跨模…

521源码-在线客服-CRMChat网页版客服系统 UNIAPP 全方位在线客服系统源码与管理体系平台

CRMChat客服系统:基于Swoole4Tp6RedisVueMysql构建的高效沟通桥梁 CRMChat是一款独立且高性能的在线客服系统,它结合了Swoole4、Tp6、Redis、Vue以及Mysql等先进技术栈,为用户提供了卓越的在线沟通体验。该系统不仅支持在Pc端、移动端、小程…

软考 软件设计师 场景分析题 速成篇

文章目录 试题一:数据流图💖 基本图形元素1. 外部实体2. 数据存储3. 加工4. 数据流 📚 例题(1)实体名称(2)数据存储名称(3)数据流① 父子图平衡② 加工有输入有输出④ 数…

visual studio snippet常用注释片段

Visual Studio 2022 添加自定义代码片段_vs2022 代码片段-CSDN博客 dclass.snippet: <?xml version"1.0" encoding"utf-8"?> <CodeSnippets xmlns"http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet"> …

Pip,whl,源码编译安装Python库

pip安装 pip 是 Python 包管理工具&#xff0c;用于安装和管理 Python 包。pip 是 Python 开发中不可或缺的工具&#xff0c;能够帮助开发者轻松地管理项目所需的各种库和依赖。无论是安装新包、升级现有包还是卸载不需要的包&#xff0c;pip 都提供了简单而强大的命令来完成这…

YOLOv5改进 | 主干网络 | 用repvgg模块替换Conv【教程+代码 】

&#x1f4a1;&#x1f4a1;&#x1f4a1;本专栏所有程序均经过测试&#xff0c;可成功执行&#x1f4a1;&#x1f4a1;&#x1f4a1; 尽管Ultralytics 推出了最新版本的 YOLOv8 模型。但YOLOv5作为一个anchor base的目标检测的算法&#xff0c;YOLOv5可能比YOLOv8的效果更好。…

【02】GeoScene Enterprise(Windows)许可更新

如果在Windows环境下部署了GeoScene Enterprise基础环境&#xff0c;也就是部署了server、portal、datastore、web adaptor四大组件&#xff0c;当试用许可到期后&#xff0c;拿到新的许可想要更新许可&#xff0c;从而使得软件能够正常工作&#xff0c;下述步骤是更新GeoScene…

WebRTC 音频抗弱网技术

实时音视频通话一直是我们通信行业必不可少的一门技术&#xff0c;并且近今年音视频边缘设备产品涌现出很多设备&#xff0c;然而&#xff0c;在当今网络环境中&#xff0c;网络传输质量确常常无法得到有效的保障&#xff0c;那么&#xff0c;在当今弱网环境下&#xff0c;如何…