14.Kafka系列之K8S部署集群

这篇具有很好参考价值的文章主要介绍了14.Kafka系列之K8S部署集群。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 部署方式选择

基于Kafka3.X后的集群搭建方式主要分为两种,一种是基于Zookeeper管理方式,一种是基于KRaft模式,本文主要介绍Kafka-KRaft集群模式搭建

纠正文章1.Kafka系列之K8S部署单节点中基于Zookeeper方式的部署方式错误,其实是基于KRaft启动的,所以不部署Zookeeper也可以,可以通过把连接ZK的环境去掉看是否可以启动成功验证

k8s安装kafka,大数据,kafka,kubernetes,分布式

2.KRaft模式介绍

Apache Kafka 不依赖 Apache Zookeeper的版本,被社区称之为 Kafka Raft 元数据模式,简称KRaft模式。

KRaft运行模式的Kafka集群,不会将元数据存储在 Apache ZooKeeper中。即部署新集群的时候,无需部署ZooKeeper集群,因为Kafka将元数据存储在 Controller 节点的 KRaft Quorum中。KRaft可以带来很多好处,比如可以支持更多的分区,更快速的切换Controller,也可以避免Controller缓存的元数据和Zookeeper存储的数据不一致带来的一系列问题

3. 编写install.sh

我们基于Helm进行安装,在此不在讲解Helm安装方式

helm repo add bitnami https://charts.bitnami.com/bitnami
# 指定命名空间为middleware,如果卸载后再次安装,install改为upgrade
helm install kafka bitnami/kafka --namespace middleware
    --set kafkaVersion=3.4.0
    --set replicaCount=3
    --set kafka.persistence.enabled=false
    --set kafka.kafkaConfigOverrides=transaction.state.log.replication.factor=3
    --set kafka.kafkaConfigOverrides=transaction.state.log.min.isr=2
    --set kafka.kafkaConfigOverrides=default.replication.factor=3
    --set kafka.kafkaConfigOverrides=num.io.threads=8
    --set kafka.kafkaConfigOverrides=num.network.threads=3
    --set kafka.kafkaConfigOverrides=log.message.format.version=3.4
    --set kafka.kafkaConfigOverrides=inter.broker.protocol.version=3.4
    --set kafka.kafkaConfigOverrides=offsets.topic.replication.factor=3
    --set kafka.kafkaConfigOverrides=transaction.state.log.num.partitions=50
    --set-string labels.app.kubernetes.io/managed-by=Helm
    --set-string labels.meta.helm.sh/release-name=kafka
    --set-string labels.meta.helm.sh/release-namespace=middleware

打印日志

space=middleware
NAME: kafka
LAST DEPLOYED: Sun May 21 13:56:26 2023
NAMESPACE: middleware
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
CHART NAME: kafka
CHART VERSION: 22.1.2
APP VERSION: 3.4.0

** 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.middleware.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.middleware.svc.cluster.local:9092
    kafka-1.kafka-headless.middleware.svc.cluster.local:9092
    kafka-2.kafka-headless.middleware.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 docker.io/bitnami/kafka:3.4.0-debian-11-r28 --namespace middleware --command -- sleep infinity
    kubectl exec --tty -i kafka-client --namespace middleware -- bash

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

    CONSUMER:
        kafka-console-consumer.sh \
            --bootstrap-server kafka.middleware.svc.cluster.local:9092 \
            --topic test \
            --from-beginning

k8s安装kafka,大数据,kafka,kubernetes,分布式

4. 验证生产者与消费者

安装打印日志的提示,我们发送 算法小生 消息至test主题,并进行消费,OK

k8s安装kafka,大数据,kafka,kubernetes,分布式

k8s安装kafka,大数据,kafka,kubernetes,分布式

5. 节点部分失败模拟

我们手工删除kafka01,由于是Statefulsets部署方式:和 Deployment 类似, StatefulSet 管理基于相同容器规约的一组 Pod。但和 Deployment 不同的是, StatefulSet 为它们的每个 Pod 维护了一个有粘性的 ID。这些 Pod 是基于相同的规约来创建的, 但是不能相互替换:无论怎么调度,每个 Pod 都有一个永久不变的 ID

k8s安装kafka,大数据,kafka,kubernetes,分布式

所在再次进行消费的时候,还可以看到 算法小生 仍然正常消费

6. 安装卸载uninstall.sh
#!/bin/bash

set -e

# 定义变量
NAMESPACE="middleware"
RELEASE_NAME="kafka"

# 删除Kafka实例
helm delete "$RELEASE_NAME" --namespace "$NAMESPACE"

# 等待Kafka实例完全删除
echo "等待Kafka实例删除..."
while kubectl get statefulsets -n "$NAMESPACE" | grep "$RELEASE_NAME"; do
  echo "等待Kafka实例删除..."
  sleep 5
done

echo "卸载完成"

注意:当我们执行install.sh后,再次执行消费test主题,也可以看到 算法小生 输出,这个证明了Statefulsets在删除后,不会删除持久卷,即数据不会被删除

欢迎关注公众号算法小生文章来源地址https://www.toymoban.com/news/detail-690769.html

到了这里,关于14.Kafka系列之K8S部署集群的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • K8S集群安装与部署(Linux系统)

    一、环境说明:CentOS7、三台主机(Master:10.0.0.132、Node1:10.0.0.133、Node2:10.0.0.134) 二、准备环境: 映射 关闭防火墙 三、etcd集群配置 安装etcd(Master) 修改etcd配置文件/etc/etcd/etcd.conf(Master) 安装K8S节点组件、etcd、flannel以及docker(Node1和Node2) 修改etcd配置文件/etc/etcd/et

    2024年02月11日
    浏览(35)
  • K8s集群部署(二进制安装部署详细手册)

       一、简介 K8s部署主要有两种方式: 1、Kubeadm Kubeadm是一个K8s部署工具,提供kubeadm init和kubeadm join,用于快速部署Kubernetes集群。 2、二进制   从github下载发行版的二进制包,手动部署每个组件,组成Kubernetes集群。  本文通过二进制安装部署的方式在centos7上搭建kubernetes集群

    2024年02月15日
    浏览(41)
  • K8S系列文章之 Docker安装使用Kafka

    通过Docker拉取镜像的方式进行安装 照例先去DockerHub找一下镜像源,看下官方提供的基本操作(大部分时候官方教程比网上的要清晰一些,并且大部分教程可能也是翻译的官方的操作步骤,所以直接看官方的就行) 老实说Kafka的参数配置项太多了,比较繁琐。 如果是Linux环境下

    2024年02月13日
    浏览(32)
  • 【Flink系列】部署篇(三):Native k8s部署高可用Flink集群实战

    上一篇博文介绍了如何独立部署一个高可用的Flink集群,本篇介绍如何用Native k8s去部署高可用的Flink 集群。本篇介绍的集群构建在AWS上,和构建在自己的服务器相比,主要区别在文件系统的选择和使用上。我选用的S3服务。 EC2操作系统:centos7 本机操作系统:Mac flink version: 1.

    2024年02月02日
    浏览(35)
  • 【k8s】基于Prometheus监控Kubernetes集群安装部署

    目录 基于Prometheus监控Kubernetes集群安装部署 一、环境准备 二、部署kubernetes集群 三、部署Prometheus监控平台 四、部署Grafana服务 五、grafana  web操作 IP地址 主机名 组件 192.168.100.131 k8s-master kubeadm、kubelet、kubectl、docker-ce 192.168.100.132 k8s-node01 kubeadm、kubelet、kubectl、docker-ce 192.168

    2024年02月12日
    浏览(41)
  • 【云原生 | Kubernetes 系列】—K8S部署RocketMQ集群(双主双从+同步模式)

    rocketMQ高可用有很多种方式,比如:单机部署,多主集群,双主双从同步部署,双主双从异步部署,以及多主多从部署。部署集群可按照自己公司的实际情况进行部署。 单机部署:只启动一个rocketMQ实例就可以了,一般常用来本机测试使用。原因:一旦rocketMQ因某些原因挂掉,

    2024年02月04日
    浏览(40)
  • k8s入门:裸机部署 k8s 集群

    系列文章 第一章:✨ k8s入门:裸机部署 k8s 集群 第二章:✨ k8s入门:部署应用到 k8s 集群 第三章:✨ k8s入门:service 简单使用 第四章:✨ k8s入门:StatefulSet 简单使用 第五章:✨ k8s入门:存储(storage) 第六章:✨ K8S 配置 storageclass 使用 nfs 动态申领本地磁盘空间 第七章:

    2023年04月20日
    浏览(38)
  • 【云原生 | Kubernetes 系列】— 部署K8S 1.28版本集群部署(基于Containerd容器运行)

    主机名 IP地址 备注 k8s-master01 192.168.0.109 master k8s-node1 192.168.0.108 node1 k8s-node2 192.168.0.107 node1 k8s-node3 192.168.0.105 node1 1、主机配置 2、升级内核 3、配置内核转发以及过滤 4、安装ipset ipvsadm,IPVS(IP Virtual Server)是一个用于负载均衡的 Linux 内核模块,它可以用来替代 kube-proxy 默认的

    2024年02月20日
    浏览(50)
  • 安装部署rancher2.7.0,然后导入K8S集群,管理集群

    centos系统请参考博客 ubuntu系统请参考博客 默认用户是admin 浏览器打开:https://IP:443 回车后就出现了如下图 利用刚才查到的密码登录 登录后直接修改密码,点击继续。 上图就是进入后的默认页面 不同版本调整中文的页面不一样,具体请根据自己的版本可以百度或者去官网查

    2024年02月11日
    浏览(34)
  • K8s(kubernetes)集群搭建及dashboard安装、基础应用部署

    本质是一组服务器集群,在集群每个节点上运行特定的程序,来对节点中的容器进行管理。实现资源管理的自动化。 自我修复 弹性伸缩 服务发现 负载均衡 版本回退 存储编排 控制节点(master)-控制平面 APIserver :资源操作的唯一入口 scheduler :集群资源调度,将Pod调度到node节

    2024年02月08日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包