Helm方式部署 zookeeper+kafka 集群 ——2023.05

news2024/11/19 4:33:46

文章目录

    • 一、添加helm仓库
    • 二、安装部署集群
      • 2.1 在线安装zookeeper+kafka集群
      • 2.2 离线安装zookeeper+kafka集群
    • 三、验证kafka与zookeeper是否绑定
    • 四、测试集群
    • 附:可改善地方
    • 卸载应用

一、添加helm仓库

# 添加bitnami和官方helm仓库:
helm repo add bitnami https://charts.bitnami.com/bitnami

# 查看仓库
helm repo list

二、安装部署集群

安装方式有两种,在线安装和离线安装,在线安装方便快捷,但是无法修改参数。由于需要修改配置,故本文采用离线安装方式。

2.1 在线安装zookeeper+kafka集群

1. 部署zookeeper集群

# 部署zookeeper集群
helm install zookeeper bitnami/zookeeper \
  --set replicaCount=3 \
  --set auth.enabled=false \
  --set allowAnonymousLogin=true

# 查看
helm list

在这里插入图片描述

提示:
由于这个ApacheZookeeper集群不会公开,所以在部署时禁用了身份验证。对于生产环境,请考虑使用生产配置。
生产环境参考:https://github.com/bitnami/charts/tree/main/bitnami/zookeeper#production-configuration

2. 部署kafka集群

# 部署kafka集群
helm install kafka bitnami/kafka \
  --set zookeeper.enabled=false \
  --set replicaCount=3 \
  --set externalZookeeper.servers=ZOOKEEPER-SERVICE-NAME    # ZOOKEEPER-SERVICE-NAME  替换为上一步结束时获得的Apache ZOOKEEPER服务名称

2.2 离线安装zookeeper+kafka集群

由于在线安装,zookeeper的pod起不来,一直处于pending的状态,原因是因为pvc存储卷挂载的问题,所以这里选择把zookeeper和kafka的包下载下来,修改配置文件,然后进行离线安装。
我这里将zookeeper和kafka安装在default命名空间下,如果您想按在指定namespace下,命令后加-n [namespace] 就可以了。
1. 下载离线包

# 创建存放压缩包目录
mkdir /bsm/zookeeper-kafka && cd /bsm/zookeeper-kafka

# 拉取压缩包
helm pull bitnami/zookeeper
helm pull bitnami/kafka

# 解压
tar -zvxf kafka-22.1.2.tgz
tar -zvxf zookeeper-11.4.1.tgz

在这里插入图片描述

2. 部署zookeeper集群

  • 修改配置文件values.yaml
    主要修改内容:enabled设为false ;注释掉 storageClass: “”、existingClaim: “”
cd /bsm/zookeeper-kafka/zookeeper  
vim values.yaml

# 修改配置文件,主要修改存储storageclass(kafka的配置文件类似)
persistence:
  ## @param persistence.enabled Enable ZooKeeper data persistence using PVC. If false, use emptyDir
  ##
  enabled: false    # 测试环境可设置为false
  ## @param persistence.existingClaim Name of an existing PVC to use (only when deploying a single replica)
  ##
#  existingClaim: ""
  ## @param persistence.storageClass PVC Storage Class for ZooKeeper data volume
  ## If defined, storageClassName: <storageClass>
  ## If set to "-", storageClassName: "", which disables dynamic provisioning
  ## If undefined (the default) or set to null, no storageClassName spec is
  ##   set, choosing the default provisioner.  (gp2 on AWS, standard on
  ##   GKE, AWS & OpenStack)
  ##
#  storageClass: ""      # 注释掉storageClass。如果创建好了storageclass可打开注释,并写入storageClass的名称
  • 安装zookeeper集群
# 安装zookeeper
cd  /bsm/zookeeper-kafka/zookeeper
helm install zookeeper --set replicaCount=3 --set auth.enabled=false --set allowAnonymousLogin=true ./
# ./ 表示zookeeper的value.yaml文件所在路径

在这里插入图片描述

# 查看pod状态:
[root@k8s-master1 rabbitmq]# kubectl get pods
NAME                                      READY   STATUS    RESTARTS   AGE
zookeeper-0                               1/1     Running   0          85s
zookeeper-1                               1/1     Running   0          85s
zookeeper-2                               1/1     Running   0          84s

3. 安装kafka集群

  • 修改配置文件values.yaml
    主要修改内容:enabled设为false ;注释掉 storageClass: “”、existingClaim: “”;kraft.enable 修改为 false
cd /bsm/zookeeper-kafka/kafka
vim values.yaml

修改一:
persistence:
  ## @param persistence.enabled Enable Kafka data persistence using PVC, note that ZooKeeper persistence is unaffected
  ##
  enabled: false    #改为false
  ## @param persistence.existingClaim 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: ""
  ## @param persistence.storageClass PVC Storage Class for Kafka data volume
  ## If defined, storageClassName: <storageClass>
  ## If set to "-", storageClassName: "", which disables dynamic provisioning
  ## If undefined (the default) or set to null, no storageClassName spec is
  ## set, choosing the default provisioner.
  ##
#  storageClass: ""
  ## @param persistence.accessModes Persistent Volume Access Modes


修改二:
  kraft:
  ## @param kraft.enabled Switch to enable or disable the Kraft mode for Kafka
  ##
  enabled: false    #改为false
  ## @param kraft.processRoles Roles of your Kafka nodes. Nodes can have 'broker', 'controller' roles or both of them.
  ##
  processRoles: broker,controller
  • 安装 kafka 集群
# 安装zookeeper
cd  /bsm/zookeeper-kafka/kafka
helm install kafka --set zookeeper.enabled=false --set replicaCount=3 --set externalZookeeper.servers=ZOOKEEPER-SERVICE-NAME ./      
# ZOOKEEPER-SERVICE-NAME  替换为上一步结束时获得的Apache ZOOKEEPER服务名称
# ./ 表示kafka的value.yaml文件所在路径

在这里插入图片描述

# 查看:
[root@k8s-master1 kafka]# kubectl get pods 
NAME                                      READY   STATUS    RESTARTS   AGE
kafka-0                                   1/1     Running   0          3m58s
kafka-1                                   1/1     Running   0          3m58s
kafka-2                                   1/1     Running   0          3m58s

报错
Error: INSTALLATION FAILED: execution error at (kafka/templates/NOTES.txt:314:4):
VALUES VALIDATION:
kafka: Kraft mode
You cannot use Kraft mode and Zookeeper at the same time. They are mutually exclusive. Disable zookeeper in ‘.Values.zookeeper.enabled’ and delete values from ‘.Values.externalZookeeper.servers’ if you want to use Kraft mode
原因:
新版kafka新增了一个kraft模式,他与zookeeper是冲突的,不能同时使用,所以如果使用指定的zookeeper,kraft模式要关闭。
解决办法:
修改kafka的配置文件“value.yaml”,将 kraft.enable 的值改为false

三、验证kafka与zookeeper是否绑定

查看kafka日志中有以下信息:

kubectl logs -f kafka-0  | grep socket

在这里插入图片描述

四、测试集群

# 进入kafka的pod创建一个topic
[root@k8s-master1 kafka]# kubectl exec -it kafka-0 bash
kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec [POD] -- [COMMAND] instead.

I have no name!@kafka-0:/$ kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic testtopic
heCreated topic testtopic.

# 启动一个消费者
[root@k8s-master1 ~]# kubectl exec -it kafka-0 bash
I have no name!@kafka-0:/$ kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic testtopic


# 新开一个窗口,进入kafka的pod,启动一个生产者,输入消息;在消费者端可以收到消息
[root@k8s-master1 ~]# kubectl exec -it kafka-0 bash
kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec [POD] -- [COMMAND] instead.
I have no name!@kafka-0:/$ kafka-console-producer.sh --bootstrap-server localhost:9092 --topic testtopic

在生产者页面输入信息,可以在消费者页面查看到。
在这里插入图片描述
在这里插入图片描述
部署成功。

附:可改善地方

持久化存储,配置文件value.yaml中storageclass参数未设定,亲和力未设定,测试环境要求没有那么多,生产环境大家可以按需配置。

卸载应用

helm uninstall kafka -n [namespace]
helm uninstall zookeeper  -n [namespace]

参考文章:
bitnami官网:https://docs.bitnami.com/tutorials/deploy-scalable-kafka-zookeeper-cluster-kubernetes
csdn文章:https://blog.csdn.net/heian_99/article/details/114840056

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

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

相关文章

独立版:云贝O2O-V2-2.6.3 优化区域代理登录刷新问题

独立版&#xff1a;v2云贝O2O平台版本、版本更新至2.6.3&#xff0c;微信小程序在线上传、后端可开源&#xff0c;即刻源码持续维护更新中&#xff0c;最新全插件&#xff08;4个&#xff09;包更新&#xff0c;包修复、这个是源码&#xff0c;独立版&#xff1b; 支持一键更新…

C++——模板(初阶) + string

作者&#xff1a;几冬雪来 时间&#xff1a;2023年5月19日 内容&#xff1a;C模板 string讲解 目录 前言&#xff1a; 1.模板&#xff1a; 1.函数模板的隐/显示实例化&#xff1a; 2.类模板&#xff1a; 2.STL&#xff1a; 1. 什么是STL&#xff1a; 2.STL六大组件…

【Java入门】Java的语言概述

前言 &#x1f4d5;作者简介&#xff1a;热爱跑步的恒川&#xff0c;致力于C/C、Java、Python等多编程语言&#xff0c;热爱跑步&#xff0c;喜爱音乐的一位博主。 &#x1f4d7;本文收录于Java入门篇系列&#xff0c;该专栏主要讲解&#xff1a;什么是java、java的数据类型与变…

JavaSE入门篇——类和对象(实例理解)

文章目录 一、面向对象简述二、类与对象的基本概念三、类的定义与使用四、this引用五、对象的构造及初始化六、static成员七、 代码块 一、面向对象简述 面向对象是一种现在最为流行的程序设计方法&#xff0c;几乎现在的所有应用都以面向对象为主了&#xff0c;最早的面向对象…

DRMS全国服务中心第一期讲师特训会圆满召开

&#xff0c;时长01:00 近日&#xff0c;【DRMS】数字权益管理系统在美丽的泉城济南展开了为期两天一夜的“【DRMS】全国服务中心首期讲师特训”。此次特训主要针对服务中心的负责人和讲师进行的一场从认知到理念、从规划到执行、从机制到流程的全方位特训。特训中&#xff0c;…

麒麟信安操作系统里安装达梦数据库无法通过./DmServiceDMSERVER启动数据库实例服务的处理

问题现象如下&#xff1a; 但是通过./dmserver pathxxx/dm.ini又能正常启动 查看日志发现有生成日志&#xff1a;/home/dmdba/dmdbms/log/ dm_unknown_yyyymm.log。 日志内容如下&#xff1a; fail to load libpmem.so, libpmem.so: cannot open shared object file: No such …

Nexus私服搭建与使用

文章目录 1 私服简介2 私服安装步骤1:下载解压步骤2:启动Nexus步骤3:浏览器访问步骤4:首次登录重置密码 3 私服仓库分类4 本地仓库访问私服配置步骤1:私服上配置仓库步骤2:配置本地Maven对私服的访问权限步骤3:配置私服的访问路径 5 私服资源上传与下载步骤1:配置工程上传私服的…

css属性选择器、css3结构选择器、伪元素选择器、仿土豆网隐藏遮罩层案例、伪元素清除浮动

属性选择器 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>属性选择器</title><style>…

Kafka在Java项目中的应用

Kafka在Java项目中的应用 Docker 安装Kafka 一.首先需要安装docker,可看这篇文章安装docker 二.拉取zookeeper和KafKa镜像 docker pull wurstmeister/zookeeperdocker pull wurstmeister/kafkaKafka组件需要向zookeeper进行注册,所以也需要安装zookeeper 三.启动zookeeper…

被00后卷的油尽灯枯了...

内卷的来源 内卷最早的“出处”是几张名校学霸的图片。 大学生们刷爆朋友圈的几张“内卷”图片是这样的&#xff1a;有的人骑在自行车上看书&#xff0c;有的人宿舍床上铺满了一摞摞的书&#xff0c;有的人甚至边骑车边端着电脑写论文。这些图片最早在清华北大的学霸之间流传。…

手机APP性能测试工具PerfDog安装教程及简单使用

一、下载PerfDog PerfDog下载安装传送带&#xff1a;PerfDog | 全平台性能测试分析专家 点击下载对应系统版本&#xff0c;Darren这里下载的是windows版本&#xff0c;苹果电脑可下Mac OS版本。 二、解压文件包 我们在想要存放PerfDog的文件路径先建立一个文件夹&#xff08;方…

远程桌面连接工具在哪里下载?

在市场上&#xff0c;有很多种不同的工具可用。一些远程桌面连接工具&#xff08;如RayLink&#xff09;具有高清流畅、操作简单和连接速度快的特点。而其他一些连接工具则更注重保护安全和数据保密性。不同的远程桌面连接工具各有特点&#xff0c;需要根据不同的需求进行选择。…

Linux将新硬盘挂载到指定目录

MBR分区最大2T&#xff0c;超过2T需用parted工具进行GPT分区 一、fdisk工具进行MBR分区&#xff08;2T以下&#xff09; 1. 查看当前所有硬盘 fdisk -l可以看到未分区的新硬盘/dev/sdd 2. 对新硬盘进行分区 fdisk /dev/sdd输入“n”&#xff0c;按“Enter”&#xff0c;开…

实验2 指令调度和延迟分支【计算机系统结构】

实验2 指令调度和延迟分支【计算机系统结构】 前言推荐代理服务器拒绝访问解决实验2 指令调度和延迟分支1 实验目的2 实验平台3 实验内容和步骤&#xff08;1&#xff09;启动MIPSsim。&#xff08;2&#xff09;进一步理解流水段的构成和各个流水寄存器的功能。&#xff08;3&…

降低FP独立站跳出率的5个小技巧,聪明人已经学起来了

做独立站特别是fp独立站的商家们&#xff0c;要想提高客户的体验感、达到更高的转化率&#xff0c;就要研究一下独立站的跳出率。跳出率可以衡量一个独立站的消费体验&#xff0c;同样也能衡量流量在独立站转化中的重要节点。消费者体验好、跳出率低的独立站才能够留住消费者&a…

机器学习算法应用实战笔记分享

来源&#xff1a;投稿 作者&#xff1a;小灰灰 编辑&#xff1a;学姐 整体代码请参考深度之眼的《机器学习算法应用实战》 视频链接&#xff1a;https://ai.deepshare.net/p/t_pc/goods_pc_detail/goods_detail/p_5e12aa8734510_IpNUGv5w 1.无监督学习方法---主成分分析 主成…

离散数学 | 图论 | 欧拉图 | 哈密顿图 | 割点 | 桥

本文主要解决以下几个问题&#xff1a; 1.欧拉图能不能有割点&#xff0c;能不能有桥&#xff1f; 2.哈密顿图能不能有割点&#xff0c;能不能有桥&#xff1f; 首先我们要明白几个定义 割点的定义就是在一个图G中&#xff0c;它本来是连通的&#xff0c;去掉一个点v以后这个…

前几天面了个30岁的测试员,年薪50w问题基本都能回答上,应该刷了不少八股文···

互联网行业竞争是一年比一年严峻&#xff0c;作为测试工程师的我们唯有不停地学习&#xff0c;不断的提升自己才能保证自己的核心竞争力从而拿到更好的薪水&#xff0c;进入心仪的企业&#xff08;阿里、字节、美团、腾讯等大厂.....&#xff09; 所以&#xff0c;大家就迎来了…

java 通过注解实现数据动态脱敏

一、为什么要数据脱敏&#xff1f; 数据脱敏是指对某些敏感信息通过脱敏规则进行数据的变形&#xff0c;实现敏感隐私数据的可靠保护。在涉及客户安全数据或者一些商业性敏感数据的情况下&#xff0c;在不违反系统规则条件下&#xff0c;对真实数据进行改造并提供测试使用&…

10个高质量的简历制作网站推荐

刚经历完有金三银四&#xff0c;有没有因为简历不行&#xff0c;面试少的可怜的同学。 今天推荐10个高质量的简历制作网站&#xff0c;包括可以在线免费生成设计简历的网站。 1.即时设计资源社区 即时设计是国内首款专业级的 UI 设计工具&#xff0c;像 PC 端的网页&#xf…