当前位置: 首页 > news >正文

Kubernetes基于helm部署Kafka_Kraft集群并取消SASL认证且开启数据持久化

注:本文档部署Kafka时,取消了默认的SASL认证的相关配置,并开启了数据持久化。

一、添加并更新Helm仓库

helm repo add bitnami  https://charts.bitnami.com/bitnami
helm repo update bitnami

二、下载并解压kafka的Chart

helm pull bitnami/kafka
tar -xf kafka-29.3.14.tgz

三、修改values.yml

下面为修改后的示例:
我已经删除了多余的注释和默认的配置,仅保留修改后的必要的内容

image:# 镜像仓库,原为docker.io/bitnami/kafka:3.7.1-debian-12-r4registry: registry.cn-hangzhou.aliyuncs.comrepository: zhaoll/kafkatag: 3.7.1-debian-12-r4pullPolicy: IfNotPresent
heapOpts: -Xmx1024m -Xms1024m
listeners:client:containerPort: 9092name: CLIENTprotocol: PLAINTEXT  # 原为SASL_PLAINTEXT,因为我不需要访问Kafka时进行认证,所以改为PLAINTEXTsslClientAuth: none  # 原为"",因为我不需要访问Kafka时进行认证,所以改为nonecontroller:name: CONTROLLERcontainerPort: 9093protocol: PLAINTEXT  # 同上sslClientAuth: none  # 同上interbroker:containerPort: 9094name: INTERNALprotocol: PLAINTEXT  # 同上sslClientAuth: none  # 同上external:containerPort: 9095name: EXTERNALprotocol: PLAINTEXT  # 同上sslClientAuth: none  # 同上extraListeners: []overrideListeners: ""advertisedListeners: ""securityProtocolMap: ""
sasl: {}  #把sasl下面的大段给注释掉或者删除,并将这里改为{}
controller:replicaCount: 3controllerOnly: falseminId: 0zookeeperMigrationMode: falseheapOpts: -Xmx1024m -Xms1024mpersistence:enabled: true  # 设为true,启用持久化存储storageClass: "nfs-client"  # 这里配置自己的storageClass,用于自动创建PV和PVCaccessModes:- ReadWriteOncesize: 1Gi  # 大小自己决定mountPath: /bitnami/kafkalogPersistence:enabled: true  # 启用日志持久化storageClass: "nfs-client"  # 这里配置自己的storageClass,用于自动创建PV和PVCaccessModes:- ReadWriteOncesize: 1Gi  # 大小自己决定mountPath: /opt/bitnami/kafka/logsservice:type: NodePort  #这里原为ClusterIP,我们改为NodePortports:client: 9092controller: 9093interbroker: 9094external: 9095nodePorts:client: ""external: ""externalTrafficPolicy: Clusterheadless:controller:annotations: {}labels: {}broker:annotations: {}labels: {}
kraft:enabled: true  # 启用Kraft,不依赖zookeeper建立集群。existingClusterIdSecret: ""clusterId: ""controllerQuorumVoters: ""

四、开始安装

[root@master1 kafka]# helm install kafka -f values.yaml bitnami/kafka

大致解释一下上面输出的内容:

[root@master1 kafka]# helm install kafka -f values.yaml bitnami/kafka
# 安装信息,主要是kafka的版本和Chart版本
NAME: kafka
LAST DEPLOYED: Tue Aug  6 16:30:13 2024
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
CHART NAME: kafka
CHART VERSION: 29.3.14
APP VERSION: 3.7.1** Please be patient while the chart is being deployed **# 可以通过kafka.default.svc.cluster.local名称加上9092端口在k8s集群内部访问访问Kafka集群
Kafka can be accessed by consumers via port 9092 on the following DNS name from within your cluster:kafka.default.svc.cluster.local# 生产者可以通过下面三个节点名称来访问Kafka
Each Kafka broker can be accessed by producers via port 9092 on the following DNS name(s) from within your cluster:kafka-controller-0.kafka-controller-headless.default.svc.cluster.local:9092kafka-controller-1.kafka-controller-headless.default.svc.cluster.local:9092kafka-controller-2.kafka-controller-headless.default.svc.cluster.local:9092# 创建一个pod用于访问Kafka
To create a pod that you can use as a Kafka client run the following commands:# 这是创建pod的命令kubectl run kafka-client --restart='Never' --image registry.cn-hangzhou.aliyuncs.com/zhaoll/kafka:3.7.1-debian-12-r4 --namespace default --command -- sleep infinity# 这是进入pod内部kubectl exec --tty -i kafka-client --namespace default -- bashPRODUCER:# 在Pod里执行下面这行命令,开启一个生产者,用于发送消息kafka-console-producer.sh \--broker-list kafka-controller-0.kafka-controller-headless.default.svc.cluster.local:9092,kafka-controller-1.kafka-controller-headless.default.svc.cluster.local:9092,kafka-controller-2.kafka-controller-headless.default.svc.cluster.local:9092 \--topic testCONSUMER:# 在Pod里执行下面这行命令,开启一个消费者,用于接收消息kafka-console-consumer.sh \--bootstrap-server kafka.default.svc.cluster.local:9092 \--topic test \--from-beginning
# 默认镜像被替换了,会在此出现警告
Substituted images detected:- registry.cn-hangzhou.aliyuncs.com/zhaoll/kafka:3.7.1-debian-12-r4

按照上面的提示,创建一个测试用的Pod:

kubectl run kafka-client --restart='Never' --image registry.cn-hangzhou.aliyuncs.com/zhaoll/kafka:3.7.1-debian-12-r4 --namespace default --command -- sleep infinity

安装完成后,查看Pod和SVC:

[root@master1 kafka]# kubectl get pod,svc
NAME                                          READY   STATUS    RESTARTS         AGE
pod/kafka-client                              1/1     Running   0                3m
pod/kafka-controller-0                        1/1     Running   0                4m
pod/kafka-controller-1                        1/1     Running   0                4m
pod/kafka-controller-2                        1/1     Running   0                4m
pod/nfs-client-provisioner-6f5897fd65-28qlw   1/1     Running   0                15dNAME                                TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)                      AGE
service/kafka                       NodePort    10.108.113.8   <none>        9092:32476/TCP               4m
service/kafka-controller-headless   ClusterIP   None           <none>        9094/TCP,9092/TCP,9093/TCP   4m
service/kubernetes                  ClusterIP   10.96.0.1      <none>        443/TCP                      18d

六、创建生产者和消费者进行测试

生产者:

[root@master1 kafka]# kubectl exec --tty -i kafka-client --namespace default -- bash
I have no name!@kafka-client:/$ kafka-console-producer.sh \
>             --broker-list kafka-controller-0.kafka-controller-headless.default.svc.cluster.local:9092,kafka-controller-1.kafka-controller-headless.default.svc.cluster.local:9092,kafka-controller-2.kafka-controller-headless.default.svc.cluster.local:9092 \
>             --topic test
>我超级牛逼的
>

消费者:

[root@master1 kafka]# kubectl exec --tty -i kafka-client --namespace default -- bash
I have no name!@kafka-client:/$ kafka-console-consumer.sh \
>             --bootstrap-server kafka.default.svc.cluster.local:9092 \
>             --topic test \
>             --from-beginning
我超级牛逼的

以上,部署完成

http://www.lryc.cn/news/419444.html

相关文章:

  • kotlin -- Flow和Rxjava 对比
  • 【JVM篇】自动内存管理——HotSpot虚拟机对象探秘
  • 代谢组数据分析(十七):基于structToolbox代谢组分析流程讲解
  • 科普课堂走起 | 什么是网络安全和数据安全?
  • C语言中常用的函数
  • 如何在SpringBoot中进行单元测试?
  • 分布式事务学习整理
  • Conda配置瘦身术:精通conda config --remove命令
  • Windows下编译安装PETSc
  • phpstudy搭建sqlilabs本地靶场
  • Linux 实验基础环境准备(外网篇)
  • centos8 安装mysql 制作备份数据库脚本
  • Parsing error: The keyword ‘interface‘ is reserved配置优化
  • C语言指针详解-包过系列(二)目录版
  • 驰骋BPM RunSQL_Init SQL注入漏洞复现
  • 谷粒商城实战笔记-143-性能压测-压力测试-JMeter在windows下地址占用bug解决
  • Pod的调度机制
  • JIT(即时编译)编译器
  • 循环执行时数据的同步方式
  • Jvm G1与ZGC启动参数
  • zdpgo_gin_zap 整合zdpgo_gin框架和zdpgo_zap框架的日志中间件,用于实现路由日志记录
  • FOC电流环
  • 工业设备数据采集方案的设计实施与应用-天拓四方
  • 【MySQL】索引——索引的实现、B+ vs B、聚簇索引 VS 非聚簇索引、索引操作、创建索引、查询索引、删除索引
  • 剖析HTML 元素——WEB开发系列02
  • 影响3D打印零件品质的关键因素探析
  • Oracle事务是怎么练成的
  • 线程与多线程(一)
  • 连接其他主机上的redis连接不上`telnet: Unable to connect to remote host: Connection refused`
  • dijkstral算法详解