k8s部署kafka集群

k8s部署kafka集群

kafka(Kafka with KRaft)
mkdir -p ~/kafka-ymlkubectl create ns kafka
cat > ~/kafka-yml/kafka.yml << 'EOF'
apiVersion: v1
kind: Service
metadata:name: kafka-headlessnamespace: kafkalabels:app: kafka
spec:type: ClusterIPclusterIP: Noneports:- name: kafka-clientport: 9092targetPort: kafka-client- name: controllerport: 9093targetPort: controller   selector:app: kafka
---
#部署 Service,用于外部访问 Kafka
apiVersion: v1
kind: Service
metadata:name: kafka-servicenamespace: kafkalabels:app: kafka
spec:type: NodePortports:- name: kafka-clientport: 9092targetPort: kafka-clientnodePort: 30992selector:app: kafka
---
# 分别在 StatefulSet 中的每个 Pod 中获取相应的序号作为 KAFKA_CFG_NODE_ID(只能是整数),然后再执行启动脚本
apiVersion: v1
kind: ConfigMap
metadata:name: ldc-kafka-scriptsnamespace: kafka
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
---
apiVersion: apps/v1
kind: StatefulSet
metadata:name: kafkanamespace: kafkalabels:app: kafka
spec:selector:matchLabels:app: kafkaserviceName: kafka-headlesspodManagementPolicy: Parallelreplicas: 3 # 部署完成后,将会创建 3 个 Kafka 副本updateStrategy:type: RollingUpdatetemplate:metadata:labels:app: kafkaspec:affinity:podAntiAffinity: # 工作负载反亲和preferredDuringSchedulingIgnoredDuringExecution: # 尽量满足如下条件- weight: 1podAffinityTerm:labelSelector: # 选择Pod的标签,与工作负载本身反亲和matchExpressions:- key: "app"operator: Invalues:- kafkatopologyKey: "kubernetes.io/hostname"  # 在节点上起作用containers:- name: kafka#image: bitnami/kafka:3.4.1#image: bitnami/kafka:3.7.0image: ccr.ccs.tencentyun.com/huanghuanhui/bitnami-kafka:3.7.0imagePullPolicy: "IfNotPresent"command:- /opt/leaderchain/setup.shenv:- name: BITNAMI_DEBUGvalue: "true" # 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,1@kafka-1.kafka-headless:9093,2@kafka-2.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"ports:- containerPort: 9092name: kafka-client                  - 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-scriptsname: scripts      volumeClaimTemplates:- metadata:name: kafka-dataspec:storageClassName: nfs-storageaccessModes: [ReadWriteOnce]resources:requests:storage: 2Ti
EOF
kubectl apply -f ~/kafka-yml/kafka.yml
kafka-ui
cat > ~/kafka-yml/kafka-ui.yml << 'EOF'
apiVersion: apps/v1
kind: Deployment
metadata:name: kafka-uinamespace: kafkalabels:app: kafka-ui
spec:replicas: 1selector:matchLabels:app: kafka-uitemplate:metadata:labels:app: kafka-uispec:containers:- name: kafka-ui#image: provectuslabs/kafka-ui:v0.7.2image: ccr.ccs.tencentyun.com/huanghuanhui/kafka-ui:v0.7.2imagePullPolicy: IfNotPresentenv:- name: KAFKA_CLUSTERS_0_NAMEvalue: 'kafka-elk'- name: KAFKA_CLUSTERS_0_BOOTSTRAPSERVERSvalue: 'kafka-headless:9092'- name: DYNAMIC_CONFIG_ENABLEDvalue: "true"- name: AUTH_TYPE # https://docs.kafka-ui.provectus.io/configuration/authentication/basic-authenticationvalue: "LOGIN_FORM"- name: SPRING_SECURITY_USER_NAMEvalue: "admin"    - name: SPRING_SECURITY_USER_PASSWORDvalue: "Admin@2024"ports:- name: webcontainerPort: 8080
---
apiVersion: v1
kind: Service
metadata:name: kafka-uinamespace: kafka
spec:selector:app: kafka-uitype: NodePortports:- name: webport: 8080targetPort: 8080nodePort: 30088
EOF
kubectl apply -f ~/kafka-yml/kafka-ui.yml
cat > ~/kafka-yml/kafka-ui-Ingress.yml << 'EOF'
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: kafka-ui-ingressnamespace: kafkaannotations:nginx.ingress.kubernetes.io/ssl-redirect: 'true'nginx.ingress.kubernetes.io/proxy-body-size: '4G'
spec:ingressClassName: nginxrules:- host: kafka-ui.openhhh.comhttp:paths:- path: /pathType: Prefixbackend:service:name: kafka-uiport:number: 8080tls:- hosts:- kafka-ui.openhhh.comsecretName: kafka-ui-ingress-tls
EOF
kubectl create secret -n kafka \
tls kafka-ui-ingress-tls \
--key=/root/ssl/openhhh.com.key \
--cert=/root/ssl/openhhh.com.pem
kubectl apply -f ~/kafka-yml/kafka-ui-Ingress.yml

访问地址:https://kafka-ui.openhhh.com

账号密码:admin、Admin@2024

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

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

相关文章

【Java题解】以二进制加法的方式来计算两个内容为二进制数字的字符串相加的结果

&#x1f389;欢迎大家收看&#xff0c;请多多支持&#x1f339; &#x1f970;关注小哇&#xff0c;和我一起成长&#x1f680;个人主页&#x1f680; &#x1f451;目录 分析&#xff1a;&#x1f680; 数字层面分析⭐ 字符串层面分析⭐ 代码及运行结果分析:&#x1f6…

生活实用英语口语“拆迁”用英文怎么说?柯桥成人学英语到蓝天广场

● 1. “拆迁”英语怎么说&#xff1f; ● 01. 其实国外也有拆迁 但国外的拆迁&#xff0c;只管拆 不管安置&#xff0c;你爱去哪去哪 英文可以说 housing removal 02. 但我们中国的“拆迁” 既管“拆”也管“迁” &#xff08;还是中国人幸福~&#xff09; 英文可以说 housin…

仓颉语言 -- 泛型

1、泛型概述 在仓颉编程语言中&#xff0c;泛型指的是参数化类型&#xff0c;参数化类型是一个在声明时未知并且需要在使用时指定的类型。类型声明与函数声明可以是泛型的。最为常见的例子就是 Array<T>、Set<T> 等容器类型。以数组类型为例&#xff0c;当使用数组…

网络安全基础知识及安全意识培训(73页可编辑PPT)

引言&#xff1a;在当今数字化时代&#xff0c;网络安全已成为企业和个人不可忽视的重要议题。随着互联网的普及和技术的飞速发展&#xff0c;网络威胁日益复杂多变&#xff0c;从简单的病毒传播到高级持续性威胁&#xff08;APT&#xff09;、勒索软件攻击、数据泄露等&#x…

【Python】Facebook开源时间序列数据预测模型Prophet

文章目录 一、简介二、项目的文件解读三、Prophet类主要方法和参数3.1 主要参数3.2 主要方法 四、用法示例 一、简介 Prophet 是由 Facebook 开发的一个开源工具&#xff0c;用于时间序列数据的预测。它特别适用于处理具有强季节性和趋势的时间序列数据&#xff0c;并且对节假…

09-软件易用性

易用性是用户体验的一个重要方面&#xff0c;网站建设者一般会沉溺于自己的思维习惯&#xff0c;而造成用户使用的不畅。易用性不仅是专业UI/UE人员需要研究&#xff0c;对于网站建设其他岗位的人也应该了解一定的方法去检验和提升网站的易用性。通常对易用性有如下定义: 易理解…

【iOS】isMemberOfClassisKindOfClass

目录 前言class方法isMemberOfClass和isKindOfClass实例方法分析类方法分析 实例验证总结 前言 认识这两个方法之前&#xff0c;首先要了解isa指向流程和继承链&#xff08;【iOS】类对象的结构分析&#xff09;关系&#xff0c;以便理解得更透彻 上经典图&#xff1a; 要注意…

AM62x和rk3568的异同点

AM62x 和 RK3568 是两款不同的处理器&#xff0c;分别来自 Texas Instruments&#xff08;TI&#xff09;和 Rockchip。它们在设计目标、架构、性能和应用领域等方面存在一些异同。以下是这两款处理器的对比&#xff1a; 1. 基本架构 AM62x&#xff1a; 架构&#xff1a;基于…

与大数据相关的 Python 第三方库和工具

Python 在大数据领域有着广泛的应用&#xff0c;以下是一些与大数据相关的 Python 第三方库和工具&#xff1a; 1. **Pandas**&#xff1a;Pandas 是 Python 中最常用的数据处理和分析库之一&#xff0c;提供了高效的数据结构和数据分析工具&#xff0c;可以进行数据清洗、转换…

机器学习数学基础(1)--线性回归与逻辑回归

声明&#xff1a;本文章是根据网上资料&#xff0c;加上自己整理和理解而成&#xff0c;仅为记录自己学习的点点滴滴。可能有错误&#xff0c;欢迎大家指正。 1 线性回归和逻辑回归与机器学习的关系 线性回归属于机器学习 – 监督学习 – 回归 – 线性回归&#xff0c; 逻辑…

Maven概述

目录 1.Maven简介 2.Maven开发环境搭建 2.1下载Maven服务器 2.2安装&#xff0c;配置Maven 1.配置本地仓库地址 2.配置阿里云镜像地址 2.3在idea中配置maven 2.4在idea中创建maven项目 3.pom.xml配置 1.项目基本信息 2.依赖信息 3.构建信息 4.Maven命令 5.打包Jav…

企业微信报错,api forbidden 错误码 48002

业务场景是这边后端页面点同步就去企微接口拉取客户数据&#xff0c;然后报错如下。 后端抓包返回的json如下 {“errcode”:48002,“follow_user”:[],“errmsg”:“api forbidden, hint: [1721869790252850672734303], from ip: 203.88.203.216, more info at https://open.w…

数据结构(链表)

&#x1f30f;个人博客主页&#xff1a;心.c 前言&#xff1a; 最近练习算法回去学了链表&#xff0c;收获挺大的&#xff0c;大概内容整理了一下&#xff0c;语言是用c写的&#xff0c;所以在这里分享给大家&#xff0c;希望大家可以有所收获 &#x1f525;&#x1f525;&…

2024年技校大数据实验室建设及大数据实训平台整体解决方案

随着信息技术的迅猛发展&#xff0c;大数据已成为推动产业升级和社会进步的重要力量。为适应市场需求&#xff0c;培养高素质的大数据技术人才&#xff0c;技校作为职业教育的重要阵地&#xff0c;亟需加强大数据实验室的建设与实训平台的打造。本方案旨在提出一套全面、可行的…

Synchronized关键字和乐观锁(CAS)

一、Sychronized关键字 在Java中&#xff0c;synchronized 是一个关键字&#xff0c;用于实现线程同步。当一个方法或一个代码块被synchronized修饰时&#xff0c;它被称为同步方法或同步代码块。这意味着每次只有一个线程可以进入该方法或代码块&#xff0c;其他线程必…

二维码的生成与识别(python)

二维码生成 from PIL import Image import qrcode from qrcode.image.styledpil import StyledPilImage from qrcode.image.styles.colormasks import SolidFillColorMask from qrcode.image.styles.moduledrawers import SquareModuleDrawer# 创建二维码对象 qr qrcode.QRCo…

Windows系统笔记本无法连接Wi-Fi常见原因及解决办法

在现代生活中&#xff0c;Wi-Fi已成为我们连接互联网不可或缺的方式之一。 然而&#xff0c;有时我们的Windows系统笔记本可能会遇到无法连接Wi-Fi的问题。 这种情况可能由多种原因引起&#xff0c;包括硬件故障、驱动问题、系统设置等。 以下是针对Windows 10和Windows 11系…

【STM32】stm32中GPIO_ReadInputDataBit()是什么意思

GPIO_ReadInputDataBit()函数用于读取指定GPIO端口的某一引脚上的电平状态&#xff0c;并返回该引脚的电平是高电平&#xff08;1&#xff09;还是低电平&#xff08;0&#xff09;。 在STM32单片机中&#xff0c;GPIO&#xff08;General-Purpose Input/Output&#xff09;端…

vue3在元素上绑定自定义事件弹出虚拟键盘

最近开发中遇到一个需求: 焊接机器人的屏幕上集成web前端网页, 但是没有接入键盘。这就需要web端开发一个虚拟键盘,在网上找个很多虚拟键盘没有特别适合,索性自己写个简单的 图片: 代码: (代码可能比较垃圾冗余,也没时间优化,凑合看吧) 第一步:创建键盘组件 为了方便使用…

【Django】 读取excel文件并在前端以网页形式显示-安装使用Pandas

文章目录 安装pandas写views写urls安装openpyxl重新调试 安装pandas Pandas是一个基于NumPy的Python数据分析库&#xff0c;可以从各种文件格式如CSV、JSON、SQL、Excel等导入数据&#xff0c;并支持多种数据运算操作&#xff0c;如归并、再成形、选择等。 更换pip源 pip co…