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.pswp.cn/diannao/14117.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/14117.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/14117.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

virtualbox共享文件夾沒有訪問權限

設置好共享文件夾之后,進入虛擬機,共享文件夾的地址是/media/sf_shared。 想要使用cd命令進入該文件夾時,你可能會發現此文件夾無法訪問,系統提示的原因是權限不足。 在虛擬機下查看共享文件夾的屬性,發現該目錄的所…

Nginx - 健康檢查終極指南:探索Upstream Check模塊

文章目錄 概述upstream_check_module模塊安裝和配置指南模塊安裝步驟基本配置示例詳細配置說明檢查類型和參數常見問題及解決方案 SSL檢查和DNS解析功能SSL檢查配置示例和說明配置示例 DNS解析配置示例和說明配置示例 結合實際應用場景的高級配置示例綜合SSL檢查與DNS解析 總結…

Doris【部署 03】Linux環境Doris數據庫部署異常問題收集解決(不斷更新)

Linux環境Doris數據庫部署異常問題 1.FE1.1 Unknown system variable character_set_database1.2 notify new FE type transfer: UNKNOWN1.3 mysql_load_server_secure_path1.4 Only unique table could be updated1.5 too many filtered rows 2.BE2.1 Have not get FE Master …

python:大文件分批/塊導入數據庫方式記錄

一、問題背景 對于數據文件比較大的數據,一次性串聯sql進行入庫,往往會受到數據庫本身對sql長度的限制,從而需要分塊或者分批次,將大數據文件一點一點的進行入庫。特針對這種入庫方式,進行一個簡單記錄,各…

spring的控制反轉(IoC)容器作用是什么?

控制反轉(Inversion of Control,IoC)容器是一種強大的設計模式,在現代軟件開發,特別是在使用Spring框架等企業級Java應用中至關重要。IoC容器主要作用是管理應用程序中對象的生命周期和依賴關系。我會逐步解釋它的作用…

YOLOv8改進 | 主干網絡 | 增加網絡結構增強小目標檢測能力【獨家創新——附結構圖】

??????本專欄所有程序均經過測試,可成功執行?????? 在目標檢測領域內,盡管YOLO系列的算法傲視群雄,但在某些方面仍然存在改進的空間。在YOLOv8提取特征的時候,由于卷積的緣故,會導致很多信息的丟失。對于小目標來說更是如此,這樣將大幅度降低小目標的檢測能…

pinpoint服務監控

Pinpoint是一個開源的APM(應用性能管理)系統,主要用于監控和管理Java應用程序的性能。它提供了實時的性能指標、分布式追蹤和診斷等功能,幫助開發和運維快速定位和解決應用程序中的性能問題。 pinpoint其他部分不變,H…

正確可用--Notepad++批量轉換文件編碼為UTF8

參考了:Notepad批量轉換文件編碼為UTF8_怎么批量把ansi轉成utf8-CSDN博客??????https://blog.csdn.net/wangmy1988/article/details/118698647我參考了它的教程,但是py腳本寫的不對. 只能改一個.不能實現批量更改. 他的操作步驟沒問題,就是把腳本代碼換成我這個. #-*-…

graspnet+Astra2相機實現部署

graspnetAstra2相機實現部署 🚀 環境配置 🚀 ubuntu 20.04Astra2相機cuda 11.0.1cudnn v8.9.7python 3.8.19pytorch 1.7.0numpy 1.23.5 1. graspnet的復現 具體的復現流程可以參考這篇文章:Ubuntu20.04下GraspNet復現流程 這里就不再詳細…

數據庫系統概論(第5版)復習筆記

筆記的Github倉庫地址 👆這是筆記的gihub倉庫,內容是PDF格式。 因為圖片和代碼塊太多,放到CSDN太麻煩了(比較懶🤣) 如果感覺對各位有幫助的話歡迎點一個?\^o^/

41-4 DDOS攻擊防護實戰

一、UDP FLOOD攻擊 # hping3 -q -n -a <攻擊IP> -S -s <源端口> --keep -p <目的端口> --flood <被攻擊IP> hping3 --udp -s 6666 -p 53 -a 192.168.1.6 --flood 192.168.1.13 這個命令是使用hping3工具進行UDP Flood攻擊的命令。下面是各個選項的作…

three.js能實現啥效果?看過來,這里都是它的菜(06)

這是第五期了&#xff0c;本期繼續分享three.js可以實現的3D動畫案例&#xff0c;有老鐵反饋再發案例的時候&#xff0c;是否可以順道分享一下three.js的知識點&#xff0c;好吧&#xff0c;安排。 材質動畫 材質動畫可以實現各種復雜的視覺效果&#xff0c;包括但不限于以下…

【css】引入背景圖時候,路徑寫入@會報錯

看報錯信息 我的寫法 解決辦法 在前面加個~

js解決數字小數計算出現的精度丟失問題(2024-05-24)

精度丟失的原因 js小數進行數值運算時出現精度丟失問題 JavaScript 的number類型在進行運算時都先將十進制轉二進制&#xff0c;此時&#xff0c;小數點后面的數字轉二進制時會出現無限循環的問題。 為了避免這一個情況&#xff0c;要舍0進1&#xff0c;此時就會導致精度丟失…

企業寬帶跑pcdn會被查嗎?

企業寬帶使用PCDN技術&#xff0c;本身并不違反相關規定&#xff0c;因此一般不會被查。PCDN是一種內容分發網絡技術&#xff0c;通過將內容緩存在離用戶更近的服務器上&#xff0c;減少數據傳輸的延遲&#xff0c;提高訪問速度。這種技術可以提高網頁加載速度和視頻播放流暢度…

Excel未響應時強關后,Excel插件消失

目錄 我們分析一下插件消失的原因&#xff1a; 針對上面表現出來的2個問題&#xff0c;進行針對性的解決 &#xff1a; 1、不被關進去&#xff0c;是不是就沒有后續的一系列的問題了&#xff0c;各自安好 2、保留住自動加載的行為 PS&#xff1a;配置受信任的位置注冊列表…

2024電工杯B題保姆級分析完整思路+代碼+數據教學

2024電工杯B題保姆級分析完整思路代碼數據教學 B題題目&#xff1a;大學生平衡膳食食譜的優化設計及評價 接下來我們將按照題目總體分析-背景分析-各小問分析的形式來 總體分析&#xff1a; 題目要求對兩份一日膳食食譜進行營養分析和調整&#xff0c;然后設計優化的平衡膳…

生成模型 | 從 VAE 到 Diffusion Model (上)

文章目錄 一&#xff0c;GAN(對抗式生成網絡&#xff09;二&#xff0c;Auto-Encoder(AE) 和 Denoising Auto-Encoder (DAE)三&#xff0c;VAE四&#xff0c;VQ-VAE (Vector Quantized Variational Autoencoder)VQ-VAE 2小總結&#xff1a; 五&#xff0c;DALL-E &#xff08;O…

硅谷裸機云服務器性能測評哪些內容

硅谷裸機云服務器&#xff0c;作為云計算領域的一股新興力量&#xff0c;近年來受到了廣泛關注。其強大的性能和靈活性為用戶提供了更高效、更穩定的云計算服務。那么&#xff0c;硅谷裸機云服務器的性能測評究竟包括哪些內容呢?接下來&#xff0c;我們就來科普一下。 首先&am…

如何讓大模型更聰明?

如何讓大模型更聰明&#xff1f; *隨著人工智能技術的飛速發展&#xff0c;大模型在多個領域展現出了前所未有的能力&#xff0c;但它們仍然面臨著理解力、泛化能力和適應性等方面的挑戰。那么&#xff0c;如何讓大模型變得更聰明呢&#xff1f; 方向一&#xff1a;算法創新 …