kubernetes集群下部署kafka+zookeeper单机部署方案

news/2024/9/17 8:00:46/ 标签: kubernetes, kafka, zookeeper

背景:

注:在kubernetes集群上部署单机版的zookeeper+kafka服务,是采用了kubernetes中的deploment组件+service组件+pvc存储组件

1、部署zookeeper服务:

注:这里时候的镜像是:dockerhub.jiang.com/jiang-public/zookeeper:3.5.9


1. 镜像下载地址:

registry.cn-hangzhou.aliyuncs.com/images-speed-up/zookeeper:3.5.9


2. 开发deploment控制器的配置yaml:

kind: Deployment
metadata:name: zookeeper-kultznamespace: sitlabels:app: zookeeper-kultzname: zookeeperversion: v3.5.9
spec:replicas: 1selector:matchLabels:app: zookeeper-kultzname: zookeepertemplate:metadata:labels:app: zookeeper-kultzname: zookeeperversion: v3.5.9spec:volumes:- name: zookeeper-pvcpersistentVolumeClaim:claimName: zookeeper-pvccontainers:- name: zookeeperimage: 'dockerhub.jiang.com/jiang-public/zookeeper:3.5.9'ports:- containerPort: 2181protocol: TCPenv:- name: ALLOW_ANONYMOUS_LOGINvalue: 'yes'resources:limits:cpu: '1'memory: 2Girequests:cpu: 800mmemory: 2GivolumeMounts:- name: zookeeper-pvcmountPath: /bitnami/zookeeper/dataterminationMessagePath: /dev/termination-logterminationMessagePolicy: FileimagePullPolicy: IfNotPresentsecurityContext:privileged: falserestartPolicy: AlwaysterminationGracePeriodSeconds: 30dnsPolicy: ClusterFirstserviceAccountName: defaultserviceAccount: defaultsecurityContext:runAsUser: 0fsGroup: 0imagePullSecrets:- name: user-1-registrysecretaffinity: {}schedulerName: default-schedulerstrategy:type: RecreateminReadySeconds: 10revisionHistoryLimit: 10progressDeadlineSeconds: 600

注:这里有两点需要注意的,
1、是env的配置,  ALLOW_ANONYMOUS_LOGIN='yes'
2、securityContext:的配置,需要设置  runAsUser: 0和fsGroup: 0,否则提示报错:
mkdir: cannot create directory '/bitnami/zookeeper/data': Permission denied

不然zookeeper服务会无法启动起来。

pvc存储是挂载了/bitnami/zookeeper/data位置,这个地址是zoo.cfg里的配置。


3. pvc存储yaml配置:

apiVersion: storage.k8s.io/v1
kind: PersistentVolumeClaim
metadata:name: zookeeper-pvcnamespace: sitfinalizers:- kubernetes.io/pvc-protection
spec:accessModes:- ReadWriteOnceresources:requests:storage: 10GistorageClassName: hpe-sanvolumeMode: Filesystem

注:这里是用storageclaas控制器,所以这里就不多介绍了。

4.zookeeper的service控制器配置:

kind: Service
metadata:name: zookeepernamespace: sitlabels:name: zookeepersystem/appName: nginxdemo0516
spec:ports:- name: tcp-port-0protocol: TCPport: 2181targetPort: 2181selector:name: zookeepertype: ClusterIPsessionAffinity: None
status:loadBalancer: {}

5.运行zookeeper容器放服务:

先创建pvc存储:

# kubectl apply -f zookeeper-pvc.yaml

再次创建deployment:

# kubectl apply -f zookeeper-deploy.yaml

最后创建zookeeper的service服务:

#  kubectl apply -f zookeeper-svc.yaml

2、部署kafka服务:
 

 注:这里时候的镜像是:dockerhub.jiang.com/jiang-public/kafka:3.2.1


1. 镜像下载地址:

registry.cn-hangzhou.aliyuncs.com/images-speed-up/kafka:3.2.1


2. 开发deploment控制器的配置yaml:

kind: Deployment
metadata:name: kafka-jbhpbnamespace: sitlabels:app: kafka-jbhpbname: kafkaversion: v3.2.1
spec:replicas: 1selector:matchLabels:app: kafka-jbhpbname: kafkatemplate:metadata:labels:app: kafka-jbhpbname: kafkaversion: v3.2.1spec:volumes:- name: kafka-pvcpersistentVolumeClaim:claimName: kafka-pvccontainers:- name: kafkaimage: 'dockerhub.jiang.com/jiang-public/kafka:3.2.1'ports:- containerPort: 9092protocol: TCPenv:- name: KAFKA_ZOOKEEPER_CONNECTvalue: 'zookeeper.sit:2181'- name: ALLOW_PLAINTEXT_LISTENERvalue: 'yes'resources:limits:cpu: '1'memory: 2Girequests:cpu: 800mmemory: 2GivolumeMounts:- name: kafka-pvcmountPath: /bitnami/kafka/data/terminationMessagePath: /dev/termination-logterminationMessagePolicy: FileimagePullPolicy: IfNotPresentsecurityContext:privileged: falserestartPolicy: AlwaysterminationGracePeriodSeconds: 30dnsPolicy: ClusterFirstserviceAccountName: defaultserviceAccount: defaultsecurityContext:runAsUser: 0fsGroup: 0imagePullSecrets:- name: user-1-registrysecretaffinity: {}schedulerName: default-schedulerstrategy:type: RecreateminReadySeconds: 10revisionHistoryLimit: 10progressDeadlineSeconds: 600

注:这里有两点需要注意的,
1、是env的配置,  
KAFKA_ZOOKEEPER_CONNECT='zookeeper.sit:2181'
ALLOW_PLAINTEXT_LISTENER=yes

2、securityContext:的配置,需要设置  runAsUser: 0和fsGroup: 0,不然挂载存储时,会提示报错:
mkdir: cannot create directory '/bitnami/kafka/data': Permission denied

不然kafka服务会无法启动起来。

pvc存储是挂载了/bitnami/kafka/data位置,这个地址是server.properties里的配置。


3. pvc存储yaml配置:

apiVersion: storage.k8s.io/v1
kind: PersistentVolumeClaim
metadata:name: kafka-pvcnamespace: sitfinalizers:- kubernetes.io/pvc-protection
spec:accessModes:- ReadWriteOnceresources:requests:storage: 5GistorageClassName: hpe-sanvolumeMode: Filesystem


4.kafka的service控制器配置:

kind: Service
metadata:name: kafkanamespace: sitlabels:name: kafkasystem/appName: nginxdemo0516
spec:ports:- name: tcp-port-0protocol: TCPport: 9092targetPort: 9092selector:name: kafkatype: ClusterIPsessionAffinity: None
status:loadBalancer: {}

5.运行kafka容器放服务:

先创建pvc存储:

# kubectl apply -f kafka-pvc.yaml

再次创建deployment:

# kubectl apply -f kafka-deploy.yaml

最后创建zookeeper的service服务:

#  kubectl apply -f kafka-svc.yaml

3、测试kafka功能:

在kafak容器里操作:

创建topic:

root@kafka-jbhpb-78bb6df4dc-xhmp6:/opt/bitnami/kafka/bin# ./kafka-topics.sh --bootstrap-server localhost:9092 --create --topic my-topic --partitions 1 --replication-factor 1
Created topic my-topic.

查看topic:

root@kafka-jbhpb-78bb6df4dc-xhmp6:/opt/bitnami/kafka/bin# ./kafka-topics.sh --bootstrap-server localhost:9092 --list
my-topic


这里就是成功了。


http://www.ppmy.cn/news/1521966.html

相关文章

【佳学基因检测】如何使用Letsencrypt对一个网站进行加密?

【佳学基因检测】如何使用Letsencrypt对一个网站进行加密? 更换为Let’s Encrypt证书涉及以下几个步骤: 1. 安装Certbot Certbot是Let’s Encrypt的客户端工具,它可以帮助你申请和管理证书。首先,你需要在服务器上安装Certbot。…

[C++11#45](二) 右值引用 | 移动语义 | 万能引用 | 完美转发forward | 初识lambda

目录 一. 右值引用 1.左值 vs 右值 2.左值引用 vs 右值引用 右值引用实现的两种底层优化 Q1: 容器上 Q2: 字符串上 解决:右值引用 3.完美转发 完美转发 4.补充 1.移动赋值 2.右值引用引用左值的场景 二.lambda 1.引入 2.lambd…

无人机之载重篇

无人机的载重能力是一个复杂且多样化的参数,它受到多种因素的影响,包括无人机的类型、设计、技术规格以及用途等。以下是对无人机载重能力的详细解析: 一、无人机载重能力的差异 无人机的载重能力差异很大,从几百克到几十千克不等…

Java后端分布式系统的服务容错机制:Faul-tolerant Systems

Java后端分布式系统的服务容错机制:Faul-tolerant Systems 大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿! 在构建分布式系统时,服务的容错性是确保系统稳定性和可用性的…

安宝特科技 | AR眼镜在安保与安防领域的创新应用及前景

随着科技的不断进步,增强现实(AR)技术逐渐在多个领域展现出其独特的优势,尤其是在安保和安防方面。AR眼镜凭借其先进的功能,在机场、车站、海关、港口、工厂、园区、消防局和警察局等行业中为安保人员提供了更为高效、…

TCP 和 UDP 区别

UDP UDP(用户数据报协议,User Datagram Protocol)是一种无连接的网络传输协议,提供了简单的消息传送服务。UDP位于传输层,允许应用程序向其他主机发送封装在IP数据报中的消息,而无需先建立连接。由于UDP不…

【论文笔记】Multi-Task Learning as a Bargaining Game

Abstract 本文将多任务学习中的梯度组合步骤视为一种讨价还价式博弈(bargaining game),通过游戏,各个任务协商出共识梯度更新方向。 在一定条件下,这种问题具有唯一解(Nash Bargaining Solution),可以作为多任务学习中的一种原则…

I2VGen-XL模型构建指南

一、介绍 VGen可以根据输入的文本、图像、指定的运动、指定的主体,甚至人类提供的反馈信号生成高质量的视频。它还提供了各类常用的视频生成模型工具,例如可视化、采样、训练、推理、使用图像和视频的联合训练,加速等各类工具和技术。 &quo…

微信小程序显示后台文章副文本,图片和视频正常显示

解决方案: 使用 wxParse 或 rich-text 组件: 这两种方式可以解析 HTML 字符串并渲染富文本内容,包括图片和视频。 数据处理: 将后台返回的富文本数据进行处理,提取出图片和视频的链接,并将其转换成小程序支持的格式。 方案一:使…

数据库学习01——mysql怎么创建数据库和表

第一步:创建数据库 使用 create database 语句,后跟要创建的数据库名称: CREATE DATABASE dbname;例如,要创建名为 my_db 的数据库,请输入: CREATE DATABASE my_db ;使用 show databases; 语句检查数据库是…

第十六篇:走入计算机网络的传输层--传输层概述

1. 传输层的功能 ① 分割与重组数据 一次数据传输有大小限制,传输层需要做数据分割,所以在数据送达后必然也需要做数据重组。 ② 按端口号寻址 IP只能定位数据哪台主机,无法判断数据报文应该交给哪个应用,传输层给每个应用都设…

Java基础 ——线程

多线程 并行和并发 需求:边打英雄联盟和边听音乐 问题:只能先后关系,并不能同时发生 多进程或者多线程来解决 并行和并发: 并行:多件事情在同一时刻发生 并发:多件事情在同一时间段发生,同一…

无线信道中ph和ph^2的场景

使用 p h ph ph的情况: Rayleigh 分布的随机变量可以通过两个独立且相同分布的零均值、高斯分布的随机变量表示。设两个高斯随机变量为 X ∼ N ( 0 , σ 2 ) X \sim \mathcal{N}(0, \sigma^2) X∼N(0,σ2)和 Y ∼ N ( 0 , σ 2 ) Y \sim \mathcal{N}(0, \sigma^2)…

回归预测 | Matlab基于贝叶斯算法优化XGBoost(BO-XGBoost/Bayes-XGBoost)的数据回归预测+交叉验证

回归预测 | Matlab基于贝叶斯算法优化XGBoost(BO-XGBoost/Bayes-XGBoost)的数据回归预测交叉验证 目录 回归预测 | Matlab基于贝叶斯算法优化XGBoost(BO-XGBoost/Bayes-XGBoost)的数据回归预测交叉验证效果一览基本介绍程序设计参考资料 效果一览 基本介绍 Matlab实现基于贝叶…

端口安全老化细节

我们都知道port-security aging-time命令用来配置端口安全动态MAC地址的老化时间,但是后面还可以加上类型: [SW1-GigabitEthernet0/0/1]port-security aging-time 5 type absolute Absolute time 绝对老化 inactivity Inactivity time相对老化 …

详解 HTTPS 与 TLS证书链校验

一文详解 HTTPS 与 TLS证书链校验_证书链怎么验证-CSDN博客 深入浅出 SSL/CA 证书及其相关证书文件(pem、crt、cer、key、csr) https://zhuanlan.zhihu.com/p/702745054

ASP.NET Core 入门教学十七 GraphQL入门指南

GraphQL 是一种用于 API 的查询语言,允许客户端请求所需的数据,并能够合并多个资源到一个请求中。在 ASP.NET Core 中使用 GraphQL 可以提供更灵活、高效和实用的数据查询方式。以下是 ASP.NET Core 中 GraphQL 的入门指南: 1. 安装必要的 N…

【Android】程序开发组件—探究Jetpack

引言 Jetpack是一个开发组件工具集,它的主要目的是帮助我们编写出更加简洁的代码,并简化我们的开发过程,在这么多的组件当中,最需要我们关注的其实还是架构组件,接下来就对Jetpack的主要架构组件进行学习!…

Jmeter终极线程组“Ultimate Thread Group“如何使用?

1、安装,点击"选项",再点击"Plugins Manager",下载"Custom Thread Groups" 2、添加"jpgc - Ultimate Thread Group" 3、"jpgc - Ultimate Thread Group"使用

从C到Py:面向对象程序设计

面向对象思想 我们先来介绍一下两大编程思想,其一是面向过程,它强调功能上的封装,运用的是简单的线性思维,二是面向对象,它主要是对属性和行为上的封装,处理复杂的事物。 面向过程的典型语言是C语言&…