K8S部署ELK(二):部署Kafka消息队列

目录

1. Kafka 简介

1.1 Kafka 核心概念

(1)消息系统 vs. 流处理平台

(2)核心组件

1.2 Kafka 核心特性

(1)高吞吐 & 低延迟

(2)持久化存储

(3)分布式 & 高可用

(4)水平扩展

(5)流处理能力

1.3 Kafka 典型应用场景

1.4 Kafka 架构示例

数据流示例(订单处理)

1.5 Kafka vs 其他消息队列

2. kafka部署

2.1 创建Namespace

2.2 创建ConfigMap

2.3 创建Headless Service

2.4 创建Statefulset

2.5 部署所有资源

2.6 检查kafka Pod状态


1. Kafka 简介

Apache Kafka 是一个 分布式流处理平台,主要用于构建 高吞吐量、低延迟、可扩展 的实时数据管道和流式应用程序。它最初由 LinkedIn 开发,后成为 Apache 顶级开源项目,广泛应用于大数据、日志聚合、事件驱动架构等领域。


1.1 Kafka 核心概念

(1)消息系统 vs. 流处理平台

  • 传统消息队列(如 RabbitMQ):主要用于解耦生产者和消费者,保证消息可靠传递。

  • Kafka

    • 不仅是一个消息队列,还是一个 分布式流存储系统,支持持久化存储和流式计算。

    • 适用于 高吞吐、大规模数据流 场景(如日志、指标、事件数据)。

(2)核心组件

组件说明
Producer(生产者)向 Kafka 发送消息(如日志、交易数据)。
Consumer(消费者)从 Kafka 读取并处理消息。
Broker(代理)Kafka 服务器,负责存储和转发消息。
Topic(主题)消息的分类(类似数据库表),如 orderslogs
Partition(分区)每个 Topic 可分成多个 Partition,提高并行处理能力。
Offset(偏移量)每条消息在 Partition 中的唯一 ID(类似数据库主键)。
Consumer Group(消费者组)多个消费者共同消费一个 Topic,实现负载均衡。
ZooKeeper管理 Kafka 集群元数据(新版本 Kafka 已逐步移除依赖)。

1.2 Kafka 核心特性

(1)高吞吐 & 低延迟

  • 支持每秒百万级消息处理(取决于硬件配置)。

  • 采用 顺序 I/O(相比随机 I/O 更快)和 零拷贝 技术优化性能。

(2)持久化存储

  • 消息默认持久化到磁盘(可配置保留时间),支持 重放(replay) 数据。

  • 适用于 事件溯源(Event Sourcing)审计日志

(3)分布式 & 高可用

  • 支持 多副本(Replication),防止数据丢失。

  • 自动故障转移(Leader/Follower 机制)。

(4)水平扩展

  • 可动态增加 Broker 和 Partition,提升吞吐量。

(5)流处理能力

  • 配合 Kafka StreamsksqlDB 可实现实时流计算(如聚合、窗口计算)。


1.3 Kafka 典型应用场景

场景说明
日志聚合收集应用日志(替代 ELK 中的 Logstash)。
消息队列解耦微服务,如订单系统 → 库存系统。
实时数据处理结合 Flink/Spark Streaming 做实时分析。
事件驱动架构如用户行为追踪、IoT 设备数据采集。
Commit Log(提交日志)数据库变更捕获(CDC),如 Debezium + Kafka。

1.4 Kafka 架构示例

生产者(Producer) → Kafka Cluster(Broker1, Broker2...)↓
消费者(Consumer Group)→ 实时处理(Flink/Spark)↓存储(HDFS/DB)

数据流示例(订单处理)

  1. 订单服务(Producer)发送消息到 orders Topic。

  2. 库存服务(Consumer)读取 orders 消息,扣减库存。

  3. 分析服务(Consumer)统计实时销售额。


1.5 Kafka vs 其他消息队列

特性KafkaRabbitMQPulsar
吞吐量⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
延迟⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
持久化支持(磁盘)可选(内存/磁盘)支持
流处理原生支持(Kafka Streams)不支持支持(Pulsar Functions)
适用场景大数据、日志任务队列、RPC多租户、云原生

适用 Kafka 的场景

  • 需要高吞吐、持久化存储的实时数据流(如日志、事件)。

  • 流处理(如实时分析、监控)。

不适用 Kafka 的场景

  • 需要复杂路由(RabbitMQ 更合适)。

  • 低延迟任务队列(Redis Streams/RabbitMQ 更好)。

Kafka 已成为现代数据架构的核心组件,广泛应用于大数据、微服务、实时计算等领域。

2. kafka部署

2.1 创建Namespace

kubectl create namespace elk

2.2 创建ConfigMap

vim kafka-configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:name: ldc-kafka-scriptsnamespace: elk
data:setup.sh: |-  #启动脚本#!/bin/bashexport KAFKA_CFG_NODE_ID=${MY_POD_NAME##*-} exec /opt/bitnami/scripts/kafka/entrypoint.sh /opt/bitnami/scripts/kafka/run.sh

2.3 创建Headless Service

vim kafka-headless.yaml
apiVersion: v1
kind: Service
metadata:name: kafka-headlessnamespace: elk
spec:clusterIP: Noneselector:app: kafkaports:- name: brokerport: 9092- name: controllerport: 9093

2.4 创建Statefulset

vim kafka-statefulset.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:name: kafkanamespace: elklabels:app: kafka
spec:selector:matchLabels:app: kafkaserviceName: kafka-headlesspodManagementPolicy: Parallelreplicas: 1  #根据资源情况设置实例数,推荐3个副本updateStrategy:type: RollingUpdatetemplate:metadata:labels:app: kafkaspec:affinity:nodeAffinity:  #这里做了节点亲和性调度到master节点requiredDuringSchedulingIgnoredDuringExecution:nodeSelectorTerms:- matchExpressions:- key: node-role.kubernetes.io/control-planeoperator: Exists#values:#- mastertolerations:- key: "node-role.kubernetes.io/control-plane"operator: "Exists"effect: "NoSchedule"containers:- name: kafkaimage: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/bitnami/kafka:3.4.0imagePullPolicy: "IfNotPresent"command:- /opt/leaderchain/setup.shenv:- name: BITNAMI_DEBUGvalue: "true" #详细日志# KRaft settings - name: MY_POD_NAME # 用于生成KAFKA_CFG_NODE_IDvalueFrom:fieldRef:fieldPath: metadata.name            - name: KAFKA_CFG_PROCESS_ROLESvalue: "controller,broker"- name: KAFKA_CFG_CONTROLLER_QUORUM_VOTERSvalue: "0@kafka-0.kafka-headless:9093"  #修改实例数时要更新- name: KAFKA_KRAFT_CLUSTER_IDvalue: "Jc7hwCMorEyPprSI1Iw4sW"  # Listeners            - name: KAFKA_CFG_LISTENERSvalue: "PLAINTEXT://:9092,CONTROLLER://:9093"- name: KAFKA_CFG_ADVERTISED_LISTENERSvalue: "PLAINTEXT://:9092"- name: KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAPvalue: "CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT"- name: KAFKA_CFG_CONTROLLER_LISTENER_NAMESvalue: "CONTROLLER"- name: KAFKA_CFG_INTER_BROKER_LISTENER_NAMEvalue: "PLAINTEXT"- name: ALLOW_PLAINTEXT_LISTENERvalue: "yes"ports:- containerPort: 9092name: broker- containerPort: 9093name: controllerprotocol: TCP                     volumeMounts:- mountPath: /bitnami/kafkaname: kafka-data- mountPath: /opt/leaderchain/setup.shname: scriptssubPath: setup.shreadOnly: true      securityContext:fsGroup: 1001runAsUser: 1001volumes:    - configMap:defaultMode: 493name: ldc-kafka-scripts  #ConfigMap的名字name: scripts                   volumeClaimTemplates:- apiVersion: v1kind: PersistentVolumeClaimmetadata:name: kafka-dataspec:accessModes: [ "ReadWriteOnce" ] storageClassName: nfs-client  #存储类的名称resources:requests:storage: 1Gi

2.5 部署所有资源

[root@master1 Kafka]# ls
kafka-configmap.yaml  kafka-headless.yaml  kafka-statefulset.yaml
[root@master1 Kafka]# kubectl apply -f ./
configmap/ldc-kafka-scripts created
service/kafka-headless created
statefulset.apps/kafka created

2.6 检查kafka Pod状态

[root@master1 Kafka]# kubectl get pod -n elk 
NAME             READY   STATUS    RESTARTS   AGE
filebeat-6db9l   1/1     Running   0          62m
filebeat-qllxg   1/1     Running   0          62m
filebeat-r5hw7   1/1     Running   0          62m
kafka-0          1/1     Running   0          2m2s

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

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

相关文章

Rust进阶-part1-智能指针概述-box指针

Rust进阶[part1]_智能指针概述&box指针 智能指针概述 在Rust中,智能指针是一类特殊的数据结构,它们不仅像普通指针一样可以引用数据,还带有额外的元数据和功能。与普通指针不同,智能指针通常使用结构体实现,并且会实现 Deref 和 Drop 等特定的trait,以提供更强大的…

C++扩展 --- 并发支持库(补充1)

C扩展 --- 并发支持库(下)https://blog.csdn.net/Small_entreprene/article/details/149606406?fromshareblogdetail&sharetypeblogdetail&sharerId149606406&sharereferPC&sharesourceSmall_entreprene&sharefromfrom_link atom…

在Three.js中导入和添加自定义网格的最佳实践 - 综合指南

探索在Three.js中导入和添加自定义网格的最佳实践。本指南涵盖增强 3D 项目的技术、技巧和实际示例。 添加图片注释,不超过 140 字(可选) 强烈建议使用 GLTF 格式来集成 3D 几何体,提供简化的流程,并固有地支持动画、…

Redis知识点(1)

目录 Redis Redis和MySQL的区别 Redis的高可用方案 Redis可以用来做什么 Redis的数据类型 字符串 列表 哈希 集合 有序集合 Bitmap Redis为什么快呢? I/O多路复用 说说select,poll,epoll,kqueue,IOCP的区别 Redis为什么早期选择单线程? …

使用iptables封禁恶意ip异常请求

查看后端日志发现一IP(103.76.250.29)频繁请求不存在的资源路径​​(如 /api/v1/guest/comm/config、/theme/default/assets/compoments.js 等),并伴随对根路径 / 的正常访问。这种行为的可能性包括恶意扫描、自动化工…

BehaviorTree.Ros2 编译教程

1. 源码下载 git clone https://github.com/BehaviorTree/BehaviorTree.ROS2.git2. 编译过程 源码中有3个项目: btcpp_ros2_interfacesbtcpp_ros2_interfacesbtcpp_ros2_samples 2.1 编译btcpp_ros2_interfaces: colcon --packages-select btcpp_ros2_interfaces2.2 编译 …

AR智能巡检系统:制造业设备管理的效率革新

随着工业4.0和数字化转型的加速,设备管理在制造业、能源、交通等关键领域的重要性愈发凸显。传统设备巡检依赖人工记录和纸质报告,不仅效率低下,还容易因人为疏忽导致数据错误或安全隐患。然而,增强现实(AR www.teamhe…

破解海外仓客户响应难题:自动化系统是关键

在跨境电商蓬勃发展的当下,海外仓作为连接卖家与终端消费者的重要枢纽,其服务效率直接影响着卖家的运营成果。其中,即时客户响应一直是行业痛点,尤其对中小型海外仓而言,单纯依靠人力维持全天候服务意味着高昂的成本压…

PyTorch基础——张量计算

文章目录PyTorch基础——张量计算1 什么是张量计算?2 基本算术运算2.1 加法运算2.1.2 torch.add2.1.3 a.add(b) 与 a.add_(b)a.add(b) 方法a.add_(b) 方法核心区别2.2 减法运算2.2.1 toch.sub()2.2.2 a.sub(b) 和a.sub_(b)a.sub(b) 方法a.sub_(b) 方法核心区别使用建…

云原生联调利器:Telepresence实战

Telepresence在云原生联调中的应用:本地服务直连K8s集群实战在云原生开发中,调试和测试服务常常需要本地环境与远程Kubernetes(K8s)集群无缝集成。Telepresence是一个开源工具,它允许开发者将本地服务“注入”到K8s集群…

浏览器【详解】requestIdleCallback(浏览器空闲时执行)

简介requestIdleCallback 是浏览器的一个 API,用于在浏览器空闲时间执行低优先级任务,避免阻塞主线程,提升页面性能和响应速度。 当浏览器完成了关键任务(如渲染、布局、用户交互处理)且暂时没有更高优先级的工作时&am…

STP技术

一、环路的危害1.现象链路指示灯快速闪烁MAC表震荡:交换机频繁修改MAC地址表 → 转发失效。2.环路危害造成的影响链路堵塞主机操作系统响应迟缓二层交换机管理缓慢冲击网关设备的CPU三、STP的作用1.STP基本原理STP即生成树协议,它通过阻断冗余链路来消除…

RAGFLOW~knowledge graph

start 为了增强多跳问答,RAGFlow在数据提取和索引之间增加了一个知识图谱构建步骤,如下面所示。这一步骤会从您指定的分块方法生成的现有块中创建额外的块。 从v0.16.0版本开始,RAGFlow支持在知识库上构建知识图谱,允许你在知识库…

机器学习【二】KNN

KNN算法是一种基于实例的惰性学习算法,其核心思想是通过"多数投票"机制进行分类决策。算法流程包括数据准备(需归一化处理)、距离计算(常用欧氏距离)、选择K值(通过交叉验证确定)和决…

preloader

patch调试串口115200--- a/platform/ac8257/default.makb/platform/ac8257/default.mak-40,7 40,7 CFG_USB_DOWNLOAD :1CFG_FUNCTION_PICACHU_SUPPORT :1CFG_PMT_SUPPORT :0CFG_UART_COMMON :1 -CFG_LOG_BAUDRATE :921600 CFG_LOG_BAUDRATE :115200CFG_EVB_UART_CLOCK :260000…

Linux基础(三)——Bash基础

1、Bash基础1.1 Bash简介从前边操作系统的组成介绍中,我们可以知道操作系统为上层用户提供的与内核进行交互的接口称为shell,其在系统中的位置如下图所示,shell作为内核和用户之间的中介,接收用户发送的指令,将其解析为…

Python 元编程实战:动态属性与数据结构转换技巧

在处理复杂嵌套的 JSON 数据源时,我们常面临访问不便、结构不灵活、字段关联性差等问题。本文将以 O’Reilly 为 OSCON 2014 提供的 JSON 数据源为例,系统讲解如何通过 动态属性转换、对象封装、数据库映射与特性(property)机制&a…

Android-侧边导航栏的使用

在学习之前,我们先得知道侧边导航栏是什么?它是一个 可以让内容从屏幕边缘滑出的布局容器,由安卓官方提供,用于创建侧边菜单,通常搭配 NavigationView 使用;添加依赖:在app下的build.gradle中添…

lesson30:Python迭代三剑客:可迭代对象、迭代器与生成器深度解析

目录 一、可迭代对象:迭代的起点 可迭代对象的本质特征 可迭代对象的工作原理 自定义可迭代对象 二、迭代器:状态化的迭代工具 迭代器协议与核心方法 迭代器的状态管理 内置迭代器的应用 三、生成器:简洁高效的迭代器 生成器函数&a…

实时语音流分段识别技术解析:基于WebRTC VAD的智能分割策略

引言 在现代语音识别应用中,实时处理音频流是一项关键技术挑战。不同于传统的文件式语音识别,流式处理需要面对音频数据的不确定性、网络延迟以及实时性要求等问题。本文将深入解析一个基于WebRTC VAD(Voice Activity Detection)…