kubesphere|(十四)从零开始搭建k8s集群——使用KubeSphere管理平台搭建一个高可用的基于Raft的kafka集群服务

前言 前面的博客内容我们已经实现了zookeeper版的高可用kafka集群服务,在新版的kafka内容中,已经使用raft协议实现kafka集群的通信,可以不再依赖zookeeper集群,虽然属于实验阶段,但相信未来肯定会成为取代zookeeper的最优方案,并且raft协议已经在redis中得到了充分的实践和验证。话不多说,开始我们本节内容。
正文

  • 关于kafka镜像的说明
- 这里我们依然使用ydockerp/kafka:3.1.0镜像完成本节内容的案例实战
  • kafka集群服务搭建
- 点击应用负载-服务-创建-有状态服务
kubesphere|(十四)从零开始搭建k8s集群——使用KubeSphere管理平台搭建一个高可用的基于Raft的kafka集群服务
文章图片

- 填写kafka基本配置信息,点击下一步
kubesphere|(十四)从零开始搭建k8s集群——使用KubeSphere管理平台搭建一个高可用的基于Raft的kafka集群服务
文章图片

- 选择容器组副本数量为3,点击添加容器镜像
kubesphere|(十四)从零开始搭建k8s集群——使用KubeSphere管理平台搭建一个高可用的基于Raft的kafka集群服务
文章图片

- 加载kafka容器镜像ydockerp/kafka:3.1.0,加载成功后,并点击使用默认端口
kubesphere|(十四)从零开始搭建k8s集群——使用KubeSphere管理平台搭建一个高可用的基于Raft的kafka集群服务
文章图片

- kakfa集群需要获取配置文件的controller.quorum.voters这个参数的值,用于集群通信,根据k8s中服务的生成规则,本集群的controller.quorum.voters为
0@app-kafka-raft-v1-0.app-kafka-raft.app.svc.cluster.local:9093,1@app-kafka-raft-v1-1.app-kafka-raft.app.svc.cluster.local:9093,2@app-kafka-raft-v1-2.app-kafka-raft.app.svc.cluster.local:9093

这里需要注意的是@前面的值是我们k8s生成多副本的索引值,我们kafka集群中node.id参数值也是取自该值,app-kafka-raft是我们前面填写配置信息的名称,即pod的名称,app-kafka-raft-v1-0是k8s根据配置信息的名称和版本号生成的pod容器的主机名称,app是我们k8s的命名空间namespace,svc.cluster.local是固定写法,最终形成的app-kafka-raft-v1-0.app-kafka-raft.app.svc.cluster.local就是容器中pod相互访问的服务名,这里我们有三个副本,那就写三个副本服务的服务名用逗号分割。这里服务名称是k8s服务的固定命名方式,不懂的可以查看k8s的官方说明文档。

- 填写controller.quorum.voters集群通信的环境变量配置CONTROLLER_QUORUM_VOTERS,该值是镜像的环境变量配置,固定写法,不能修改,镜像中controller.quorum.voters是根据该CONTROLLER_QUORUM_VOTERS环境变量取值的。并勾选同步主机时区,点击对号。点击下一步。
kubesphere|(十四)从零开始搭建k8s集群——使用KubeSphere管理平台搭建一个高可用的基于Raft的kafka集群服务
文章图片

- 添加存储卷模板
kubesphere|(十四)从零开始搭建k8s集群——使用KubeSphere管理平台搭建一个高可用的基于Raft的kafka集群服务
文章图片

- 填写pvc存储卷基本配置信息,勾选对号,点击下一步
kubesphere|(十四)从零开始搭建k8s集群——使用KubeSphere管理平台搭建一个高可用的基于Raft的kafka集群服务
文章图片

- 点击创建,完成kafka集群创建
kubesphere|(十四)从零开始搭建k8s集群——使用KubeSphere管理平台搭建一个高可用的基于Raft的kafka集群服务
文章图片

kubesphere|(十四)从零开始搭建k8s集群——使用KubeSphere管理平台搭建一个高可用的基于Raft的kafka集群服务
文章图片

  • 验证 kafka集群服务搭建
- 点击进入kafka的任意一个节点
kubesphere|(十四)从零开始搭建k8s集群——使用KubeSphere管理平台搭建一个高可用的基于Raft的kafka集群服务
文章图片

- 通过kafka命令创建一个kafka的主题first
#创建主题 ./bin/kafka-topics.sh --bootstrap-server app-kafka-raft-v1-2.app-kafka-raft.app.svc.cluster.local:9092 --create --topic first --partitions 3 --replication-factor 3

kubesphere|(十四)从零开始搭建k8s集群——使用KubeSphere管理平台搭建一个高可用的基于Raft的kafka集群服务
文章图片

- 通过kafka命令查询创建的主题详细信息
./bin/kafka-topics.sh --bootstrap-server app-kafka-raft-v1-2.app-kafka-raft.app.svc.cluster.local:9092 --describe --topic first

kubesphere|(十四)从零开始搭建k8s集群——使用KubeSphere管理平台搭建一个高可用的基于Raft的kafka集群服务
文章图片

结语 【kubesphere|(十四)从零开始搭建k8s集群——使用KubeSphere管理平台搭建一个高可用的基于Raft的kafka集群服务】到这里使用KubeSphere管理平台搭建一个高可用的raft版kafka集群服务就结束了,创作不易,别忘了关注、收藏、加点赞哦,我们下期见。。。

    推荐阅读