当前位置: 首页 > news >正文

strimzi operator 部署kafka集群(可外部访问)

Strimzi介绍

官方文档:https://strimzi.io/docs/operators/0.42.0/overview#kafka-components_str
Strimzi介绍 Strimzi 是一个用于 Apache Kafka 在 Kubernetes 上部署和管理的开源项目。它提供了一组 Kubernetes 自定义资源定义(Custom Resource Definitions,CRDs)、控制器和操作符,使得在 Kubernetes 环境中轻松地部署、管理和操作 Kafka 集群成为可能。Strimzi 项目旨在简化 Kafka 在 Kubernetes 上的部署和运维,同时利用 Kubernetes 的优势,如弹性、可扩展性和自动化。

以下是 Strimzi 的一些关键特性和优势:
Kubernetes原生支持: Strimzi 利用 Kubernetes 的原生资源和概念,如Pods、Services、PersistentVolumeClaims(PVCs)等,使得 Kafka 集群的部署和管理与 Kubernetes 中其他应用程序类似。
自定义资源定义(CRDs): Strimzi 提供了一组自定义资源定义(CRDs),用于描述 Kafka 集群、主题、用户等 Kafka 相关的资源,使得用户可以通过 Kubernetes API 对其进行管理。
多种部署选项: Strimzi 支持多种部署模式,包括单节点、多节点、高可用、多集群等,可以根据需求选择合适的部署模式。
集成安全性: Strimzi 支持 Kafka 的安全功能,包括TLS/SSL加密、身份认证、授权等,以确保 Kafka 集群的安全性。
自动化运维: Strimzi 提供了一组控制器和操作符,可以自动化 Kafka 集群的运维任务,如扩展、备份、升级等,减少了运维人员的工作量。

Kafka 组件架构

Apache Kafka 组件可通过 Strimzi 发行版部署到 Kubernetes。Kafka 组件通常以集群形式运行,以确保可用性。
包含 Kafka 组件的典型部署可能包括:

  • Kafka代理节点集群
  • 复制的 ZooKeeper 实例的ZooKeeper集群
  • Kafka Connect集群用于外部数据连接
  • Kafka MirrorMaker集群用于在辅助集群中镜像 Kafka 集群
  • Kafka Exporter提取额外的 Kafka 指标数据用于监控
  • Kafka Bridge向 Kafka 集群发出基于 HTTP 的请求
  • Cruise Control用于在代理节点之间重新平衡主题分区

虽然这些组件并非全部都是必需的,但您至少需要 Kafka 和 ZooKeeper。有些组件可以在没有 Kafka 的情况下部署,例如 MirrorMaker 或 Kafka Connect。

  • Kafka 集群由负责消息传递的代理组成。
  • ZooKeeper 用于集群管理。在 KRaft(Kafka Raft 元数据)模式下部署 Kafka 时,通过在 Kafka 节点内集成代理和控制器角色,集群管理得到简化,无需 ZooKeeper。Kafka 节点承担代理、控制器或两者的角色。在 Strimzi 中使用节点池配置角色。

其他每个 Kafka 组件都与 Kafka 集群交互以执行特定的角色。

Kafka 组件交互

请添加链接描述

  • Apache ZooKeeper
    Apache ZooKeeper 提供集群协调服务,存储和跟踪代理和消费者的状态。ZooKeeper 还用于控制器选举。如果使用 ZooKeeper,则在运行 Kafka 之前必须准备好 ZooKeeper 集群。在 KRaft 模式下,ZooKeeper 不是必需的,因为协调由 Kafka 集群中作为控制器运行的 Kafka 节点管理。

  • Kafka Connect
    Kafka Connect 是一个集成工具包,用于使用连接器插件在 Kafka 代理和其他系统之间传输数据。Kafka Connect 提供了一个框架,用于将 Kafka 与外部数据源或目标(例如数据库)集成,以便使用连接器导入或导出数据。连接器是提供所需连接配置的插件。

  • 源连接器将外部数据推送到 Kafka。

  • 接收器连接器从 Kafka 中提取数据
    外部数据被翻译并转换成适当的格式。
    您可以通过配置来部署 Kafka Connect build,该配置会自动构建包含数据连接所需连接器插件的容器映像。

  • Kafka MirrorMaker
    Kafka MirrorMaker 在两个 Kafka 集群之间(在数据中心内或跨数据中心)复制数据。
    MirrorMaker 从源 Kafka 集群获取消息并将其写入目标 Kafka 集群。

  • Kafka桥
    Kafka Bridge 提供了用于将基于 HTTP 的客户端与 Kafka 集群集成的 API。

  • Kafka Exporter
    Kafka Exporter 提取数据作为 Prometheus 指标进行分析,主要是与偏移量、消费者组、消费者滞后和主题相关的数据。消费者滞后是指写入分区的最后一条消息与消费者当前从该分区获取消息之间的延迟

Strimzi operators

官方文档:https://strimzi.io/docs/operators/latest/deploying#assembly-operators-str
Strimzi operators 专门设计了专业的操作知识,以有效管理 Kubernetes 上的 Kafka。每个操作员都执行不同的功能。

Cluster Operator

Cluster Operator 负责在 Kubernetes 上部署和管理 Apache Kafka 集群。它可自动设置 Kafka 代理以及其他 Kafka 组件和资源。

Topic Operator

Topic Operator 管理 Kafka 集群内主题的创建、配置和删除。

User Operator

User Operator 管理需要访问 Kafka 代理的 Kafka 用户。
部署 Strimzi 时,首先要部署 Cluster Operator。然后,Cluster Operator 即可处理 Kafka 的部署。您还可以使用 Cluster Operator(推荐)或作为独立操作员部署 Topic Operator 和 User Operator。您可以将独立操作员与不受 Cluster Operator 管理的 Kafka 集群一起使用。
Topic Operator 和 User Operator 是 Entity Operator 的一部分。Cluster Operator 可以根据 Entity Operator 的配置部署其中一个或者两个 Operator。


部署 Cluster Operator

认识Cluster Operator

  • Strimzi的Cluster Operator是一个自定义的Kubernetes操作符,用于管理和运行Kafka集群。
  • 它是Strimzi的核心组件之一,负责监视Kafka集群的运行状态、处理集群级别的配置变更、创建、删除和更新Kafka集群资源等。
  • Cluster Operator可以自动化部署、升级和维护Kafka集群,使得Kafka集群可以自动化、高效地运行在Kubernetes中。
  • 主要用途是将Kafka和Kubernetes整合在一起,提供了一种简单、可扩展且可靠的方式来管理Kafka集群。

Kafka集群、Topic Operator、User Operator

为了能够使用 Cluster Operator 管理 Kafka 集群,您必须将其部署为 Kafka 资源。 Strimzi 提供了示例部署文件来执行此操作。您可以使用这些文件同时部署 Topic Operator 和 User Operator。

部署 Cluster Operator 后,使用 Kafka 资源部署以下组件:

  • Kafka集群
  • Topic Operator
  • User Operator

在安装 Kafka 时,Strimzi 还安装了 ZooKeeper 集群,并添加了连接 Kafka 和 ZooKeeper 所需的配置。
如果您尚未将 Kafka 集群部署为 Kafka 资源,则无法使用 Cluster Operator 对其进行管理。例如,这适用于在 Kubernetes 外部运行的 Kafka 集群。但是,您可以将 Topic Operator 和 User Operator 与不受 Strimzi 管理的 Kafka 集群一起使用,方法是将它们部署为独立组件。您还可以在非 Strimzi 管理的 Kafka 集群中部署和使用其他 Kafka 组件。

部署 Cluster Operator 以监视所有命名空间

官方文档: https://strimzi.io/quickstarts/

此过程演示如何部署 Cluster Operator 以监视 Kubernetes 集群中所有命名空间中的 Strimzi 资源。
在此模式下运行时,Cluster Operator 会自动管理创建的任何新命名空间中的集群。

创建一个名为 kafka 的命名空间
kubectl create namespace kafka
获取项目代码
# 使用默认的 main 分支即可
git clone https://github.com/strimzi/strimzi-kafka-operator.git
cd strimzi-kafka-operator
配置RBAC

先决条件

  • 您需要一个有权创建和管理 CustomResourceDefinition 和 RBAC(ClusterRole 和 RoleBinding)资源的帐户。

修改RoleBinding文件

sed -i 's/namespace: .*/namespace: kafka/' install/cluster-operator/*RoleBinding*.yaml

编辑 install/cluster-operator/060-Deployment-strimzi-cluster-operator.yaml 文件

<

相关文章:

strimzi operator 部署kafka集群(可外部访问)

Strimzi介绍 官方文档:https://strimzi.io/docs/operators/0.42.0/overview#kafka-components_str Strimzi介绍 Strimzi 是一个用于 Apache Kafka 在 Kubernetes 上部署和管理的开源项目。它提供了一组 Kubernetes 自定义资源定义(Custom Resource Definitions,CRDs)、控制…...

【网络安全】探索AI 聊天机器人工作流程实现RCE

未经许可,不得转载。 文章目录 前言正文前言 我发现了一个广泛使用的AI聊天机器人平台中的远程代码执行漏洞。该漏洞存在于聊天机器人的自定义工作流响应代码中,这些工作流允许开发人员通过创建定制的流程来扩展机器人的功能。 正文 在浏览自动化聊天机器人的多个特定功能…...

虚拟DOM、Vue渲染流程

虚拟DOM&#xff08;Virtual DOM&#xff09;是一种在前端开发中广泛使用的技术&#xff0c;它用JavaScript对象来表示真实DOM&#xff08;文档对象模型&#xff09;的结构和状态。虚拟DOM的核心思想是将页面的状态和结构保存在内存中&#xff0c;而不是直接操作真实的DOM。这一…...

centos7 启动python后端服务与停止服务的sh脚本

centos7 启动python后端服务与停止服务 分别在工程目录下新建启动脚本和停止脚本。 1、启动服务脚本 start_srv.sh: python3 start_srv.py运行 nohup ./start_srv.sh & 以守护进程的方式启动这个服务。 2、停止服务脚本 stop_srv.sh: sp_pidps -ef | grep start_srv…...

访问网站显示不安全怎么办?

访问网站时显示“不安全”&#xff0c;针对不同的原因有不同的解决方式&#xff0c;下面是常见的几种原因和对应的解决办法。 1.未启用HTTPS协议 如果网站仅使用HTTP协议&#xff0c;数据传输没加密&#xff0c;因此会被浏览器标记为“不安全”。解决办法是启用HTTPS协议,给…...

Scala与集合框架:高效数据处理的利器

Scala与集合框架&#xff1a;高效数据处理的利器 Scala 是一种现代化的编程语言&#xff0c;融合了面向对象编程和函数式编程的特性。其集合框架为处理数据提供了强大而灵活的工具&#xff0c;使得数据处理变得高效且富有表达力。本文将深入探讨 Scala 的集合框架&#xff0c;…...

基于 JWT 的模拟登录爬取实战

准备工作 1. 了解 JWT 相关知识 2. 安装 requests 库&#xff0c;并了解其基本使用 案例介绍 爬取网站&#xff1a; https://login3.scrape.center/ 用户名和密码是&#xff1a; admin 模拟登录 基于 JWT 的网站通常采用的是前后端分离式&#xff0c; 前后端的数据传输依…...

力扣(2024.08.06)

1. 144&#xff1a;二叉树的前序遍历 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, rightNone): # self.val val # self.left left # self.right right class Solution:def preorderTravers…...

如何快速入门 PyTorch ?

PyTorch是一个机器学习框架&#xff0c;主要依靠深度神经网络&#xff0c;目前已迅速成为机器学习领域中最可靠的框架之一。 PyTorch 的大部分基础代码源于 Ronan Collobert 等人 在 2007 年发起的 Torch7 项目&#xff0c;该项目源于 Yann LeCun 和 Leon Bottou 首创的编程语…...

Qt 快速部署环境(windeployqt.exe)

windeployqt.exe 是 Qt 框架提供的一个工具&#xff0c;主要用于将 Qt 应用程序部署到 Windows 环境中。它自动将所需的所有库、插件和文件复制到应用程序的目录中&#xff0c;以便用户能够直接运行应用程序&#xff0c;而无需额外的配置。 主要功能 自动识别依赖项&#xff…...

白骑士的PyCharm教学实战项目篇 4.2 数据分析与可视化

系列目录 上一篇&#xff1a;白骑士的PyCharm教学实战项目篇 4.1 Web应用开发 数据分析和可视化是现代数据科学和工程中的重要环节。借助PyCharm的强大功能&#xff0c;数据分析与可视化的开发工作变得更加高效和便捷。本文将详细介绍如何在PyCharm中进行数据分析工具的集成与…...

el-form-item,label在上方显示,输入框在下方展示

本来是两排展示去写&#xff0c;设计要求一排展示&#xff0c;label再上方&#xff0c;输入框、勾选框在下方&#xff1b;只能调整样式去修改&#xff1b;参考label-position这个属性 代码如下&#xff1a; <el-form ref"form" :model"formData" clas…...

Centos7.9操作系统kdump crash文件vmcore未生成问题

Centos7.9操作系统kdump crash文件未生成问题 一、背景说明1、问题背景 二、排查思路1、先了解下crashkernelcrashkernel设置方式示例如何配置crashkernel验证crashkernel配置 2、再了解下kdump2.1 Kdump 的基本概念2.1.1. 生产内核&#xff08;Production Kernel&#xff09;2…...

找不到符号 javax.servlet.WriteListener

1、问题 找不到符号2、原因 JDK1.8升级到高版本后&#xff0c;需要手动引入包。 在打包时&#xff0c;需要注意一下是否是在父类打包&#xff0c;而不是在某个model打包。 3、解决 引入 <dependency><groupId>javax.servlet</groupId><artifactId>…...

智能仪表板DevExpress Dashboard v24.1 - 新增级联参数过滤

使用DevExpress Analytics Dashboard&#xff0c;再选择合适的UI元素&#xff08;图表、数据透视表、数据卡、计量器、地图和网格&#xff09;&#xff0c;删除相应参数、值和序列的数据字段&#xff0c;就可以轻松地为执行主管和商业用户创建有洞察力、信息丰富的、跨平台和设…...

计算机网络-CSP初赛知识点整理

历年真题 [2016-NOIP-普及-第3题] 以下不属于无线通信技术的是( ) A. 蓝牙 B. Wifi C. GPRS D. 以太网 [2015-NOIP-普及-第10题] FTP 可以用于( )。 A. 远程传输文件 B. 发送电子邮件 C. 浏览网页 D. 网上聊天 [2019-CSP-J-第1题] 中国的国家顶级域名是( ). A. .cn B. .ch C.…...

MySQL第1讲--详细安装教程和启动方法

文章目录 安装教程打开或关闭方式方式1&#xff1a;方式2&#xff1a; 客户端连接方式客户端连接方式1&#xff1a;客户端连接方式2&#xff1a;MySQL环境变量的配置 安装教程 1、mysql官网下载最新的符合本系统的版本 2、点击.msi文件进入安装页面 选择默认的选项开发者安…...

SQL创建数据表的一些语句

SQL创建数据表 /*Navicat Premium Data TransferSource Server : dockermysqlSource Server Type : MySQLSource Server Version : 80023Source Host : localhost:3306Source Schema : nestleTarget Server Type : MySQLTarget Server Version…...

Spring Boot实战:拦截器

一.拦截器快速入门 1.1了解拦截器 什么是拦截器&#xff1a; 概念 &#xff1a;拦截器是Spring框架提供的核⼼功能之⼀, 主要⽤来拦截⽤⼾的请求, 在指定⽅法前后, 根据业务需要执⾏预先设定的代码。 也就是说, 允许开发⼈员提前预定义⼀些逻辑, 在⽤⼾的请求响应前后执⾏. 也…...

<数据集>战斗机识别数据集<目标检测>

数据集格式&#xff1a;VOCYOLO格式 图片数量&#xff1a;7903张 标注数量(xml文件个数)&#xff1a;7903 标注数量(txt文件个数)&#xff1a;7903 标注类别数&#xff1a;43 标注类别名称&#xff1a;[F16, Mig31, F35, F18, SR71, A10, A400M, AG600, J20, F4, C17, Tor…...

React hook之useRef

React useRef 详解 useRef 是 React 提供的一个 Hook&#xff0c;用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途&#xff0c;下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...

练习(含atoi的模拟实现,自定义类型等练习)

一、结构体大小的计算及位段 &#xff08;结构体大小计算及位段 详解请看&#xff1a;自定义类型&#xff1a;结构体进阶-CSDN博客&#xff09; 1.在32位系统环境&#xff0c;编译选项为4字节对齐&#xff0c;那么sizeof(A)和sizeof(B)是多少&#xff1f; #pragma pack(4)st…...

JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作

一、上下文切换 即使单核CPU也可以进行多线程执行代码&#xff0c;CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短&#xff0c;所以CPU会不断地切换线程执行&#xff0c;从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...

ABAP设计模式之---“简单设计原则(Simple Design)”

“Simple Design”&#xff08;简单设计&#xff09;是软件开发中的一个重要理念&#xff0c;倡导以最简单的方式实现软件功能&#xff0c;以确保代码清晰易懂、易维护&#xff0c;并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计&#xff0c;遵循“让事情保…...

Python 包管理器 uv 介绍

Python 包管理器 uv 全面介绍 uv 是由 Astral&#xff08;热门工具 Ruff 的开发者&#xff09;推出的下一代高性能 Python 包管理器和构建工具&#xff0c;用 Rust 编写。它旨在解决传统工具&#xff08;如 pip、virtualenv、pip-tools&#xff09;的性能瓶颈&#xff0c;同时…...

Vite中定义@软链接

在webpack中可以直接通过符号表示src路径&#xff0c;但是vite中默认不可以。 如何实现&#xff1a; vite中提供了resolve.alias&#xff1a;通过别名在指向一个具体的路径 在vite.config.js中 import { join } from pathexport default defineConfig({plugins: [vue()],//…...

在 Spring Boot 中使用 JSP

jsp&#xff1f; 好多年没用了。重新整一下 还费了点时间&#xff0c;记录一下。 项目结构&#xff1a; pom: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://ww…...

WPF八大法则:告别模态窗口卡顿

⚙️ 核心问题&#xff1a;阻塞式模态窗口的缺陷 原始代码中ShowDialog()会阻塞UI线程&#xff0c;导致后续逻辑无法执行&#xff1a; var result modalWindow.ShowDialog(); // 线程阻塞 ProcessResult(result); // 必须等待窗口关闭根本问题&#xff1a…...

论文阅读:LLM4Drive: A Survey of Large Language Models for Autonomous Driving

地址&#xff1a;LLM4Drive: A Survey of Large Language Models for Autonomous Driving 摘要翻译 自动驾驶技术作为推动交通和城市出行变革的催化剂&#xff0c;正从基于规则的系统向数据驱动策略转变。传统的模块化系统受限于级联模块间的累积误差和缺乏灵活性的预设规则。…...

Python竞赛环境搭建全攻略

Python环境搭建竞赛技术文章大纲 竞赛背景与意义 竞赛的目的与价值Python在竞赛中的应用场景环境搭建对竞赛效率的影响 竞赛环境需求分析 常见竞赛类型&#xff08;算法、数据分析、机器学习等&#xff09;不同竞赛对Python版本及库的要求硬件与操作系统的兼容性问题 Pyth…...