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

使用docker 和 kubnernetes 部署单节点/多节点 kafka 环境

参考资料

  • https://kafka.apachecn.org/documentation.html#configuration

kafka的broker有三个核心配置

  • broker.id
  • log.dirs
  • zookeeper.connect

docker启动单节点kafka环境

启动zookeeper

可配置的环境变量,https://gallery.ecr.aws/bitnami/zookeeper

$ docker run -it --rm --name my-zookeeper -p 2181:2181 -e ALLOW_ANONYMOUS_LOGIN=yes zookeeper:3.7# 查看节点状态
$ /apache-zookeeper-3.7.0-bin/bin/zkServer.sh status

启动kafka

可配置的环境变量,https://gallery.ecr.aws/bitnami/kafka

$ docker run -it --rm --name my-kafka -p 9092:9092 --link my-zookeeper \-e KAFKA_BROKER_ID=0 \-e KAFKA_ZOOKEEPER_CONNECT=my-zookeeper:2181 \-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://127.0.0.1:9092 \-e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 \-e ALLOW_PLAINTEXT_LISTENER=yes public.ecr.aws/bitnami/kafka:3.2.3

查看和创建topic

$ kafka-topics.sh --bootstrap-server 127.0.0.1:9092 --list
$ kafka-topics.sh --bootstrap-server 127.0.0.1:9092 --topic test --create --partitions 1 --replication-factor 1

测试本地环境

$ kafka-console-consumer.sh --bootstrap-server 127.0.0.1:9092 --topic test --from-beginning$ kafka-console-producer.sh --broker-list 127.0.0.1:9092 --topic test

docker-compose启动单节点kafka

使用docker-composer部署

version: '3.8'
services:dk-zookeeper:image: zookeeper:3.7.0ports:- 2182:2181environment:- ALLOW_ANONYMOUS_LOGIN=yesdk-kafka-01:image: public.ecr.aws/bitnami/kafka:3.2.3ports:- 9092:9092environment:KAFKA_BROKER_ID: 0KAFKA_CFG_LISTENERS: PLAINTEXT://:9092KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://127.0.0.1:9092# KAFKA_CREATE_TOPICS: "test:1:0" //创建test的topic,具备1分区0副本KAFKA_ZOOKEEPER_CONNECT: dk-zookeeper:2181KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092ALLOW_PLAINTEXT_LISTENER: yesdepends_on:- dk-zookeeper

docker-compose启动多节点kafka集群

https://blog.csdn.net/qq_39526294/article/details/124293954

创建自定义网络

$ docker network create zookeeper_network

部署zookeeper

创建zookeeper服务

version: '3.8'networks:default:external:name: zookeeper_networkservices:zoo1:image: zookeeper:3.7.0hostname: zoo1ports:- 2181:2181environment:ZOO_MY_ID: 1ZOO_SERVERS: server.1=0.0.0.0:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181zoo2:image: zookeeper:3.7.0hostname: zoo2ports:- 2182:2181environment:ZOO_MY_ID: 2ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=0.0.0.0:2888:3888;2181 server.3=zoo3:2888:3888;2181zoo3:image: zookeeper:3.7.0hostname: zoo3ports:- 2183:2181environment:ZOO_MY_ID: 3ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=0.0.0.0:2888:3888;2181

启动zookeeper

$ docker-compose up

部署kafka

创建kafka服务

version: '3.8'networks:default:external:name: zookeeper_networkservices:kafka1:image: public.ecr.aws/bitnami/kafka:3.2.3restart: unless-stoppedcontainer_name: kafka1hostname: kafka1ports:- "9092:9092"external_links:- zoo1- zoo2- zoo3environment:KAFKA_BROKER_ID: 1KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://172.31.18.4:9092KAFKA_ADVERTISED_HOST_NAME: kafka1KAFKA_ADVERTISED_PORT: 9092KAFKA_ZOOKEEPER_CONNECT: "zoo1:2181,zoo2:2181,zoo3:2181"ALLOW_PLAINTEXT_LISTENER: yeskafka2:image: public.ecr.aws/bitnami/kafka:3.2.3restart: unless-stoppedcontainer_name: kafka2hostname: kafka2ports:- "9093:9092"external_links:- zoo1- zoo2- zoo3environment:KAFKA_BROKER_ID: 2KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://192.168.0.225:9093    ## 宿主机IPKAFKA_ADVERTISED_HOST_NAME: kafka2KAFKA_ADVERTISED_PORT: 9093KAFKA_ZOOKEEPER_CONNECT: "zoo1:2181,zoo2:2181,zoo3:2181"ALLOW_PLAINTEXT_LISTENER: yeskafka3:image: public.ecr.aws/bitnami/kafka:3.2.3restart: unless-stoppedcontainer_name: kafka3hostname: kafka3ports:- "9094:9092"external_links:- zoo1- zoo2- zoo3environment:KAFKA_BROKER_ID: 3KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://192.168.0.225:9094   ## 宿主机IPKAFKA_ADVERTISED_HOST_NAME: kafka3KAFKA_ADVERTISED_PORT: 9094KAFKA_ZOOKEEPER_CONNECT: "zoo1:2181,zoo2:2181,zoo3:2181"ALLOW_PLAINTEXT_LISTENER: yeskafka-manager:image: sheepkiller/kafka-manager:latestrestart: unless-stoppedcontainer_name: kafka-managerhostname: kafka-managerports:- "9000:9000"links:- kafka1- kafka2- kafka3external_links:- zoo1- zoo2- zoo3environment:ZK_HOSTS: zoo1:2181,zoo2:2181,zoo3:2181KAFKA_BROKERS: kafka1:9092,kafka2:9093,kafka3:9094

启动kafka

$ docker-compose up

查看kafka ui界面

image.png

kubernetes启动kafka集群

注意,这里目的仅仅是临时测试,因而回收策略设置为Delete

手动部署

单节点部署

apiVersion: v1
kind: Service
metadata:labels:app: zookeeper-servicename: zookeeper-service
spec:ports:- name: zookeeper-portport: 2181targetPort: 2181selector:app: zookeeper
---
apiVersion: apps/v1
kind: Deployment
metadata:labels:app: zookeepername: zookeeper
spec:replicas: 1selector:matchLabels:app: zookeepertemplate:metadata:labels:app: zookeeperspec:containers:#- image: wurstmeister/zookeeper- image: xxxxxxxxx.dkr.ecr.cn-north-1.amazonaws.com.cn/zookeeper:3.7.0imagePullPolicy: IfNotPresentname: zookeeperports:- containerPort: 2181
---
apiVersion: v1
kind: Service
metadata:name: kafka-servicelabels:app: kafka
spec:type: NodePortports:- port: 9092name: kafka-porttargetPort: 9092protocol: TCPselector:app: kafka
---
kind: Deployment
apiVersion: apps/v1
metadata:name: kafka-deployment
spec:replicas: 1selector:matchLabels:app: kafkatemplate:metadata:labels:app: kafkaspec:containers:- name: kafkaimage: public.ecr.aws/bitnami/kafka:3.2.3imagePullPolicy: IfNotPresentports:- containerPort: 9092env:- name: KAFKA_ADVERTISED_PORTvalue: "9092"- name: KAFKA_ADVERTISED_HOST_NAMEvalue: "kafka-host"- name: KAFKA_ZOOKEEPER_CONNECTvalue: "zookeeper-service:2181"- name: KAFKA_BROKER_IDvalue: "1"- name: ALLOW_PLAINTEXT_LISTENERvalue: "yes"

多节点部署

https://blog.51cto.com/binghe001/5245687

相对来说比较复杂,网络上较多demo

使用operator部署

https://github.com/strimzi/strimzi-kafka-operator

https://github.com/strimzi/strimzi-kafka-operator/blob/0.34.0/examples/kafka/kafka-ephemeral.yaml

一键部署operator

kubectl create -f 'https://strimzi.io/install/latest?namespace=kafka' -n kafka

创建单节点的zk-kafka环境

kubectl apply -f https://raw.githubusercontent.com/strimzi/strimzi-kafka-operator/0.34.0/examples/kafka/kafka-ephemeral-single.yaml -n kafka 

创建多节点临时存储kafka集群

kubectl apply -f https://raw.githubusercontent.com/strimzi/strimzi-kafka-operator/0.34.0/examples/kafka/kafka-ephemeral.yaml -n kafka 

yaml文件如下

apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:name: my-cluster
spec:kafka:version: 3.4.0replicas: 3listeners:- name: plainport: 9092type: internaltls: false- name: tlsport: 9093type: internaltls: trueconfig:offsets.topic.replication.factor: 3transaction.state.log.replication.factor: 3transaction.state.log.min.isr: 2default.replication.factor: 3min.insync.replicas: 2inter.broker.protocol.version: "3.4"storage:type: ephemeralzookeeper:replicas: 3storage:type: ephemeralentityOperator:topicOperator: {}userOperator: {}

operator的方式还是方便的,删除环境只需要删除crd即可

$ k get pod -n kafka
NAME                                          READY   STATUS    RESTARTS   AGE
my-cluster-entity-operator-578d74f8f9-p9w5c   1/3     Running   0          16s
my-cluster-kafka-0                            1/1     Running   0          60s
my-cluster-kafka-1                            1/1     Running   0          60s
my-cluster-kafka-2                            1/1     Running   0          60s
my-cluster-zookeeper-0                        1/1     Running   0          114s
my-cluster-zookeeper-1                        1/1     Running   0          114s
my-cluster-zookeeper-2                        1/1     Running   0          114s
strimzi-cluster-operator-58967f75c7-8gp4w     1/1     Running   0          7m2s

测试集群

$ kafka-topics.sh --bootstrap-server 127.0.0.1:9092 --list$ kafka-topics.sh --bootstrap-server 127.0.0.1:9092 --topic test --create --partitions 1 --replication-factor 1$ kafka-topics --zookeeper zookeeper-service:2181  --list$ kafka-console-producer --topic test-topic --broker-list localhost:9092$ kafka-console-consumer --topic test-topic --from-beginning --bootstrap-server localhost:9092

相关文章:

使用docker 和 kubnernetes 部署单节点/多节点 kafka 环境

参考资料 https://kafka.apachecn.org/documentation.html#configuration kafka的broker有三个核心配置 broker.idlog.dirszookeeper.connect docker启动单节点kafka环境 启动zookeeper 可配置的环境变量,https://gallery.ecr.aws/bitnami/zookeeper $ docker …...

Linux使用:环境变量指南和CPU和GPU利用情况查看

Linux使用:环境变量指南和CPU和GPU利用情况查看Linux环境变量初始化与对应文件的生效顺序Linux的变量种类设置环境变量直接运行export命令定义变量修改系统环境变量修改用户环境变量修改环境变量配置文件环境配置文件的区别profile、 bashrc、.bash_profile、 .bash…...

深入浅出 SSL/CA 证书及其相关证书文件(pem、crt、cer、key、csr)

互联网是虚拟的,通过互联网我们无法正确获取对方真实身份。数字证书是网络世界中的身份证,数字证书为实现双方安全通信提供了电子认证。数字证书中含有密钥对所有者的识别信息,通过验证识别信息的真伪实现对证书持有者身份的认证。数字证书可…...

Compose(1/N) - 概念 基本使用

一、概念 1.1 解决的问题 APP展示的数据绝大多数不是静态数据而是会实时更新,传统的命令式UI写法更新界面繁琐且容易同步错误。1.2 Compose优势 由一个个可组合的Composable函数(可看作是一个Layout布局)拼成界面,方便维护和复用…...

2023高质量Java面试题集锦:高级Java工程师面试八股汇总

人人都想进大厂,当然我也不例外。早在春招的时候我就有向某某某大厂投岗了不少简历,可惜了,疫情期间都是远程面试,加上那时自身也有问题,导致屡投屡败。突然也意识到自己肚子里没啥货,问个啥都是卡卡卡卡&a…...

MySQL多表查询 子查询效率(DQL语句)

多表关系 项目开发中,在进行数据库表结构设计时,会根据业务需求及业务模块之间的关系,分析并设计表结构,由于业务之间相互关联,所以各个表结构之间也存在着各种联系,基本上分为三种: 一对多(多…...

Linux中 ps命令详解

一、基础概念 指令: ps 作用:查看系统进程,比如正在运行的进程有哪些,什么时候开始运行的,哪个用户运行的,占用了多少资源。 参数: -e 显示所有进程-f 显示所有字段(UID&…...

【Python语言基础】——Python 关键字

Python语言基础——Python 关键字 文章目录Python语言基础——Python 关键字一、Python 关键字一、Python 关键字 Python 有一组关键字,这些关键字是保留字,不能用作变量名、函数名或任何其他标识符: 关键字 描述 and 逻辑运算符。 as 创建别…...

Java SE 基础(8)关键字和保留字

关键字 定义:被Java 语言赋予了特殊含义,用做专门用途的字符串(单词) 特点: 关键字中所有字母都为小写 用于定义数据类型的关键字 class、interface、 enum 、byte 、short、 int 、long、 float、 double、 char 、…...

Thinkphp 6.0响应输出和重定向

本节课我们来学习一下响应操作,响应输出和重定向。 一.响应操作 1. 响应输出,有好几种:包括 return、json()和 view()等等; 2. 默认输出方式是以 html 格式输出,如果你发起 json 请求,则输出 js…...

Centos html 中文 显示为乱码

0 : CentOS发布静态网页 之 httpd开启 https://blog.csdn.net/weixin_39689870/article/details/118146160 #yum install -y httpd #systemctl start httpd.service/etc/httpd/conf:该目录存放Apache服务器的配置文件 /var/www/html:该目录是…...

Helm学习笔记

文章目录概念定义helm组件helm的工作流程helm安装helm仓库helm部署应用helm应用的更新或回退或卸载概念 定义 学习helm首先得了解helm是什么,我们先来看一下helm的定义:helm是将kubernetes的各种资源对象打包,类似于Linux中的yum工具&#…...

深入学习JavaScript系列(二)——作用域和作用域链

本篇为第二篇,本系列文章会在后续学习后持续更新。 第一篇:#深入学习JavaScript系列(一)—— ES6中的JS执行上下文 第二篇:# 深入学习JavaScript系列(二)——作用域和作用域链 第三篇&#x…...

【计算机视觉 | 目标检测】DETR风格的目标检测框架解读

文章目录一、前言二、理解2.1 DETR的理解2.2 DETR的细致理解2.2.1 Backbone2.2.2 Transformer encoder2.2.3 Transformer decoder2.2.4 Prediction feed-forward networks (FFNs)2.2.5 Auxiliary decoding losses2.3 更具体的结构2.4 编码器的原理和作用2.5 解码器的原理和作用…...

【LeetCode】剑指 Offer 41. 数据流中的中位数 p214 -- Java Version

题目链接:https://leetcode.cn/problems/shu-ju-liu-zhong-de-zhong-wei-shu-lcof 1. 题目介绍(41. 数据流中的中位数) 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位…...

CSS3 知识总结

1,什么是CSS 用于定义网页的样式,包括不同设备和屏幕尺寸的设计、布局和显示变化。 2,CSS的作用优点 CSS 描述 HTML 元素如何在屏幕、纸张或其他媒体上显示 CSS 节省了大量工作。它可以一次控制多个网页的布局 3,css构成 CSS 规…...

回溯算法37:解数独

主要是我自己刷题的一些记录过程。如果有错可以指出哦,大家一起进步。 转载代码随想录 原文链接: 代码随想录 leetcode链接:37. 解数独 题目: 编写一个程序,通过填充空格来解决数独问题。 数独的解法需 遵循如下规则…...

【蓝桥杯-筑基篇】动态规划

🍓系列专栏:蓝桥杯 🍉个人主页:个人主页 目录 1.最大连续子段和 2.LCS 最大公共子序列 3.LIS 最长上升子序列 4.数塔 5.最大子矩阵和 6.背包问题 ①01背包问题 ②完全背包 1.最大连续子段和 这段代码是一个求最大子数组和的算法,使用…...

Unity利用Photon PUN2框架快速实现多人在线游戏实例分享

简介 Photon 是一个泛用性的 ScoketServer 套装软件,可用于多人在线游戏、聊天室、大厅游戏,并同时支持 Windows、Unity3D、iOS、Android、Flash 等平台。Photon 包含两个部分,一部分是 Socket 服务器,另一部分是其针对各个平台编写的 SDK,Unity3D 平台对应的 SDK 为 Pho…...

ChatGPT直出1.5w字论文查重率才30% - 基于物联网技术的智能家居控制系统设计与实现

文章目录ChatGPT直出1.5w字论文查重率才30% - 基于物联网技术的智能家居控制系统设计与实现一、绪论1.1 研究背景与意义1.2 国内外研究现状分析1.3 研究内容与目标1.4 研究方向和思路二、物联网技术与智能家居概述2.1 物联网技术原理与应用2.2 智能家居的概念与发展历程2.3 智能…...

接口测试中缓存处理策略

在接口测试中,缓存处理策略是一个关键环节,直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性,避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明: 一、缓存处理的核…...

测试微信模版消息推送

进入“开发接口管理”--“公众平台测试账号”,无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息: 关注测试号:扫二维码关注测试号。 发送模版消息: import requests da…...

XCTF-web-easyupload

试了试php,php7,pht,phtml等,都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接,得到flag...

OpenLayers 可视化之热力图

注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 热力图(Heatmap)又叫热点图,是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...

在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能

下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能,包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...

云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地

借阿里云中企出海大会的东风,以**「云启出海,智联未来|打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办,现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...

高等数学(下)题型笔记(八)空间解析几何与向量代数

目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...

MySQL 8.0 OCP 英文题库解析(十三)

Oracle 为庆祝 MySQL 30 周年,截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始,将英文题库免费公布出来,并进行解析,帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...

让AI看见世界:MCP协议与服务器的工作原理

让AI看见世界:MCP协议与服务器的工作原理 MCP(Model Context Protocol)是一种创新的通信协议,旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天,MCP正成为连接AI与现实世界的重要桥梁。…...

Razor编程中@Html的方法使用大全

文章目录 1. 基础HTML辅助方法1.1 Html.ActionLink()1.2 Html.RouteLink()1.3 Html.Display() / Html.DisplayFor()1.4 Html.Editor() / Html.EditorFor()1.5 Html.Label() / Html.LabelFor()1.6 Html.TextBox() / Html.TextBoxFor() 2. 表单相关辅助方法2.1 Html.BeginForm() …...