helm部署zookeeper+kafka集群

系统环境

一个k8s集群,安装helm,实现动态PV供给(非必须),并且设置为默认storageclass
k8s集群信息

[root@master ~]# kubectl get node -A
NAME     STATUS   ROLES    AGE   VERSION
master   Ready    <none>   52d   v1.17.11
node1    Ready    <none>   52d   v1.17.11
node2    Ready    <none>   52d   v1.17.11
node3    Ready    <none>   52d   v1.17.11

动态PV(后端为nfs存储)

[root@master ~]# kubectl get storageclass
NAME                    PROVISIONER   RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
nfs-storage (default)   nfs-storage   Retain          Immediate           false                  31h

helm版本

[root@master ~]# helm version
version.BuildInfo{Version:"v3.4.1", GitCommit:"c4e74854886b2efe3321e185578e6db9be0a6e29", GitTreeState:"clean", GoVersion:"go1.14.11"}

下载zookeeper kafka的helm包

添加bitnami仓库

helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo add ali-incubator https://aliacs-app-catalog.oss-cn-hangzhou.aliyuncs.com/charts-incubator/

列出添加的helm仓库

helm repo list
NAME         	URL                                                                      
bitnami      	https://charts.bitnami.com/bitnami                                       
ali-incubator	https://aliacs-app-catalog.oss-cn-hangzhou.aliyuncs.com/charts-incubator/

查询helm包

helm search repo zookeeper
NAME             		CHART VERSION		APP VERSION	DESCRIPTION                                       
bitnami/zookeeper	6.0.0        			3.6.2      			A centralized service for maintaining configura...
bitnami/kafka    	12.2.4       			2.6.0      			Apache Kafka is a distributed streaming platform.

下载helm包到本地,在线安装可不用下载

[root@master zk]# helm pull bitnami/zookeeper
[root@master zk]# helm pull bitnami/kafka
[root@master zk]# clear
[root@master zk]# ls
kafka-12.2.4.tgz  zookeeper-6.0.0.tgz

安装zookeeper kafka

安装方法参考bitnami官网:https://docs.bitnami.com/tutorials/deploy-scalable-kafka-zookeeper-cluster-kubernetes/
在线安装

安装zookeeper,可通过-n namaspace添加名称空间,因不暴露在公网,关闭了认证(--set auth.enabled=false),并允许匿名访问,设置zookeeper副本为3
helm install zookeeper bitnami/zookeeper   --set replicaCount=3   --set auth.enabled=false   --set allowAnonymousLogin=true
安装kafka,取消自动创建zookeeper,使用刚刚创建的zookeeper,制定zookeeper的服务名称,
helm install kafka bitnami/kafka   --set zookeeper.enabled=false   --set replicaCount=3  --set externalZookeeper.servers=zookeeper

离线安装
解压下载好的tar包

[root@master zk]# tar -zxf zookeeper-6.0.0.tgz 
[root@master zk]# tar -zxf kafka-12.2.4.tgz
修改values.yaml,主要修改仓库地址以及存储storageclass(kafka的配置文件类似)
[root@master zookeeper]# vim values.yaml
image:
  registry: docker.io
  repository: bitnami/zookeeper
  tag: 3.6.2-debian-10-r58
persistence:
  ## A manually managed Persistent Volume and Claim
  ## If defined, PVC must be created manually before volume will be bound
  ## The value is evaluated as a template
  ##
  # existingClaim:
  enabled: true		#测试环境可设置为false
  # storageClass: "-"	#未配置默认动态PV,可打开注释,并写入storageClass的名称

创建名称空间

[root@master zk]# kubectl create ns zk
namespace/zk created
[root@master zk]# kubectl get ns
NAME                   STATUS   AGE
default                Active   52d
kube-public            Active   52d
kube-system            Active   52d
kubernetes-dashboard   Active   51d
zk                     Active   6s

安装zookeeper

[root@master zk]# helm install zookeeper -n zk --set replicaCount=3  --set auth.enabled=false --set allowAnonymousLogin=true /root/zk/zookeeper/
NAME: zookeeper
LAST DEPLOYED: Thu Jan 28 17:40:11 2021
NAMESPACE: zk
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
** Please be patient while the chart is being deployed **

ZooKeeper can be accessed via port 2181 on the following DNS name from within your cluster:

    zookeeper.zk.svc.cluster.local

To connect to your ZooKeeper server run the following commands:

    export POD_NAME=$(kubectl get pods --namespace zk -l "app.kubernetes.io/name=zookeeper,app.kubernetes.io/instance=zookeeper,app.kubernetes.io/component=zookeeper" -o jsonpath="{.items[0].metadata.name}")
    kubectl exec -it $POD_NAME -- zkCli.sh

To connect to your ZooKeeper server from outside the cluster execute the following commands:

    kubectl port-forward --namespace zk svc/zookeeper 2181:2181 &
    zkCli.sh 127.0.0.1:2181
[root@master zk]# kubectl get pod -n zk 
NAME          READY   STATUS    RESTARTS   AGE
zookeeper-0   1/1     Running   0          24s
zookeeper-1   1/1     Running   0          23s
zookeeper-2   1/1     Running   0          23s

安装kafka

[root@master zk]# helm install kafka -n zk --set zookeeper.enabled=false --set replicaCount=3  --set externalZookeeper.servers=zookeeper /root/zk/kafka/
NAME: kafka
LAST DEPLOYED: Thu Jan 28 17:41:21 2021
NAMESPACE: zk
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
** Please be patient while the chart is being deployed **

Kafka can be accessed by consumers via port 9092 on the following DNS name from within your cluster:

    kafka.zk.svc.cluster.local

Each Kafka broker can be accessed by producers via port 9092 on the following DNS name(s) from within your cluster:

    kafka-0.kafka-headless.zk.svc.cluster.local:9092
    kafka-1.kafka-headless.zk.svc.cluster.local:9092
    kafka-2.kafka-headless.zk.svc.cluster.local:9092

To create a pod that you can use as a Kafka client run the following commands:

    kubectl run kafka-client --restart='Never' --image 10.41.11.100/lh/bitnami/kafka:2.6.0-debian-10-r78 --namespace zk --command -- sleep infinity
    kubectl exec --tty -i kafka-client --namespace zk -- bash

    PRODUCER:
        kafka-console-producer.sh \
            
            --broker-list kafka-0.kafka-headless.zk.svc.cluster.local:9092,kafka-1.kafka-headless.zk.svc.cluster.local:9092,kafka-2.kafka-headless.zk.svc.cluster.local:9092 \
            --topic test

    CONSUMER:
        kafka-console-consumer.sh \
            
            --bootstrap-server kafka.zk.svc.cluster.local:9092 \
            --topic test \
            --from-beginning
[root@master zk]# kubectl get pod -n zk 
NAME          READY   STATUS    RESTARTS   AGE
kafka-0       1/1     Running   0          21s
kafka-1       1/1     Running   0          21s
kafka-2       1/1     Running   0          21s
zookeeper-0   1/1     Running   0          92s
zookeeper-1   1/1     Running   0          91s
zookeeper-2   1/1     Running   0          91s

验证kafka与zookeeper;日志中有以下信息
kubectl logs -f -n zk kafka-0
在这里插入图片描述

测试集群

进入kafka的pod创建一个topic

[root@master zk]# kubectl exec -it -n zk kafka-0 bash
I have no name!@kafka-0:/$ kafka-topics.sh --create --zookeeper zookeeper:2181 --replication-factor 1 --partitions 1 --topic testtopic

启动一个消费者

I have no name!@kafka-0:/$ kafka-console-consumer.sh --bootstrap-server kafka:9092 --topic testtopic

在这里插入图片描述
新开一个窗口,进入kafka的pod,启动一个生产者,输入消息;在消费者端可以收到消息

[root@master zk]# kubectl exec -it -n zk kafka-0 bash 
I have no name!@kafka-0:/$ kafka-console-producer.sh --bootstrap-server kafka:9092 --topic mytopic

在这里插入图片描述

卸载应用

[root@master zk]# helm uninstall kafka -n zk
release "kafka" uninstalled
[root@master zk]# helm uninstall zookeeper -n zk
release "zookeeper" uninstalled
[root@master zk]# kubectl delete pvc,pv -n zk --all
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
使用Helm部署Kafka可以简化部署和管理过程。您可以使用以下命令来部署Kafka: ```shell helm install --name kafka --namespace kafka -f kafka-values.yaml bitnami/kafka ``` 这个命令将使用Helm安装Bitnami的Kafka chart。要成功执行此命令,请确保您已经添加了Bitnami的Helm仓库,并且已经在您的环境中配置了正确的命名空间和值文件。您可以使用以下命令来添加Bitnami的Helm仓库: ```shell helm repo add bitnami https://charts.bitnami.com/bitnami ``` 通过这个命令,您可以将Bitnami的Helm仓库添加到您的环境中。然后,您可以使用以下命令来查看已添加的仓库列表: ```shell helm repo list ``` 这个命令将显示您添加的所有Helm仓库的列表。 请注意,这只是部署Kafka的基本示例。根据您的需求,您可能需要调整部署配置和参数。我希望这个答案对您有帮助!<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Helm 安装Kafka](https://blog.csdn.net/weixin_30471561/article/details/101474739)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [Helm方式部署 zookeeper+kafka 集群 ——2023.05](https://blog.csdn.net/weixin_64124795/article/details/130772120)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值