使用 Bitnami Helm 安装 Kafka
服务器端 K3S 上部署 Kafka Server
Kafka 安装
️ Quote:
charts/bitnami/kafka at master · bitnami/charts (github.com)
输入如下命令添加 Helm 仓库:
> helm repo add tkemarket https://market-tke.tencentcloudcr.com/chartrepo/opensource-stable
"tkemarket" has been added to your repositories
> helm repo add bitnami https://charts.bitnami.com/bitnami
"bitnami" has been added to your repositories
Tip:
tkemarket 镜像没有及时更新,建议使用 bitnami 仓库。
但是 bitmani 在海外,有连不上的风险。
查找 Helm Chart kafka:
> helm search repo kafka
NAME CHART VERSION APP VERSION DESCRIPTION
tkemarket/kafka 11.0.0 2.5.0 Apache Kafka is a distributed streaming platform.
bitnami/kafka 15.3.0 3.1.0 Apache Kafka is a distributed streaming platfor...
bitnami/dataplatform-bp1 9.0.8 1.0.1 OCTO Data platform Kafka-Spark-Solr Helm Chart
bitnami/dataplatform-bp2 10.0.8 1.0.1 OCTO Data platform Kafka-Spark-Elasticsearch He...
使用 bitnami 的 helm 安装 kafka:
helm install kafka bitnami/kafka \
--namespace kafka --create-namespace \
--set global.storageClass=<storageClass-name> \
--set kubeVersion=<theKubeVersion> \
--set image.tag=3.1.0-debian-10-r22 \
--set replicaCount=3 \
--set service.type=ClusterIP \
--set externalAccess.enabled=true \
--set externalAccess.service.type=LoadBalancer \
--set externalAccess.service.ports.external=9094 \
--set externalAccess.autoDiscovery.enabled=true \
--set serviceAccount.create=true \
--set rbac.create=true \
--set persistence.enabled=true \
--set logPersistence.enabled=true \
--set metrics.kafka.enabled=false \
--set zookeeper.enabled=true \
--set zookeeper.persistence.enabled=true \
--wait
Tip:
参数说明如下:
--namespace kafka --create-namespace
: 安装在kafka
namespace, 如果没有该 ns 就创建;global.storageClass=<storageClass-name>
使用指定的 storageclasskubeVersion=<theKubeVersion>
让 bitnami/kafka helm 判断是否满足版本需求,不满足就无法创建image.tag=3.1.0-debian-10-r22
: 20220219 的最新镜像,使用完整的名字保证尽量减少从互联网 pull 镜像;replicaCount=3
: kafka 副本数为 3service.type=ClusterIP
: 创建kafka
service, 用于 k8s 集群内部,所以 ClusterIP 就可以--set externalAccess.enabled=true --set externalAccess.service.type=LoadBalancer --set externalAccess.service.ports.external=9094 --set externalAccess.autoDiscovery.enabled=true --set serviceAccount.create=true --set rbac.create=true
创建用于 k8s 集群外访问的kafka-<0|1|2>-external
服务 (因为前面 kafka 副本数为 3)persistence.enabled=true
: Kafka 数据持久化,容器中的目录为/bitnami/kafka
logPersistence.enabled=true
: Kafka 日志持久化,容器中的目录为/opt/bitnami/kafka/logs
metrics.kafka.enabled=false
不启用 kafka 的监控 (Kafka 监控收集数据是通过kafka-exporter
实现的)zookeeper.enabled=true
: 安装 kafka 需要先安装 zookeeperzookeeper.persistence.enabled=true
: Zookeeper 日志持久化,容器中的目录为:/bitnami/zookeeper
--wait
: helm 命令会一直等待创建的结果
输出如下:
creating 1 resource(s)
creating 12 resource(s)
beginning wait for 12 resources with timeout of 5m0s
Service does not have load balancer ingress IP address: kafka/kafka-0-external
...
StatefulSet is not ready: kafka/kafka-zookeeper. 0 out of 1 expected pods are ready
...
StatefulSet is not ready: kafka/kafka. 0 out of 1 expected pods are ready
NAME: kafka
LAST DEPLOYED: Sat Feb 19 05:04:53 2022
NAMESPACE: kafka
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
CHART NAME: kafka
CHART VERSION: 15.3.0
APP VERSION: 3.1.0
---------------------------------------------------------------------------------------------
WARNING
By specifying "serviceType=LoadBalancer" and not configuring the authentication
you have most likely exposed the Kafka service externally without any
authentication mechanism.
For security reasons, we strongly suggest that you switch to "ClusterIP" or
"NodePort". As alternative, you can also configure the Kafka authentication.
---------------------------------------------------------------------------------------------
** Please be patient while the chart is being deployed **
Kafka can be accessed by consumers via port 9092 on the following DNS name from within your cluster:
kafka.kafka.svc.cluster.local
Each Kafka broker can be accessed by producers via port 9092 on the following DNS name(s) from within your cluster:
kafka-0.kafka-headless.kafka.svc.cluster.local:9092
To create a pod that you can use as a Kafka client run the following commands:
kubectl run kafka-client --restart='Never' --image docker.io/bitnami/kafka:3.1.0-debian-10-r22 --namespace kafka --command -- sleep infinity
kubectl exec --tty -i kafka-client --namespace kafka -- bash
PRODUCER:
kafka-console-producer.sh \
--broker-list kafka-0.kafka-headless.kafka.svc.cluster.local:9092 \
--topic test
CONSUMER:
kafka-console-consumer.sh \
--bootstrap-server kafka.kafka.svc.cluster.local:9092 \
--topic test \
--from-beginning
To connect to your Kafka server from outside the cluster, follow the instructions below:
NOTE: It may take a few minutes for the LoadBalancer IPs to be available.
Watch the status with: 'kubectl get svc --namespace kafka -l "app.kubernetes.io/name=kafka,app.kubernetes.io/instance=kafka,app.kubernetes.io/component=kafka,pod" -w'
Kafka Brokers domain: You will have a different external IP for each Kafka broker. You can get the list of external IPs using the command below:
echo "$(kubectl get svc --namespace kafka -l "app.kubernetes.io/name=kafka,app.kubernetes.io/instance=kafka,app.kubernetes.io/component=kafka,pod" -o jsonpath='{.items[*].status.loadBalancer.ingress[0].ip}' | tr ' ' '\n')"
Kafka Brokers port: 9094
Kafka 测试验证
测试消息:
先用如下命令创建一个 kafka-client pod:
kubectl run kafka-client --restart='Never' --image docker.io/bitnami/kafka:3.1.0-debian-10-r22 --namespace kafka --command -- sleep infinity
然后进入到 kafka-client 中,运行如下命令测试:
kafka-console-producer.sh --broker-list kafka-0.kafka-headless.kafka.svc.cluster.local:9092 --topic test
kafka-console-consumer.sh --bootstrap-server kafka-0.kafka-headless.kafka.svc.cluster.local:9092 --topic test --from-beginning
kafka-console-producer.sh --broker-list 10.109.205.245:9094 --topic test
kafka-console-consumer.sh --bootstrap-server 10.109.205.245:9094 --topic test --from-beginning
效果如下:
至此,kafka 安装完成。
Kafka 卸载
Danger:
(按需)删除整个 kafka 的命令:
helm delete kafka --namespace kafka
总结
Kafka
Kafka 通过 Helm Chart bitnami 安装,安装于:K8S 集群的
kafka
namespace;- 安装模式:三节点
- Kafka 版本:3.1.0
- Kafka 实例:3 个
- Zookeeper 实例:1 个
- Kafka、Zookeeper、Kafka 日志均已持久化,位于:
/data/rancher/k3s/storage
- 未配置 sasl 及 tls
在 K8S 集群内部,可以通过该地址访问 Kafka:
kafka.kafka.svc.cluster.local:9092
在 K8S 集群外部,可以通过该地址访问 Kafka:
<loadbalancer-ip>:9094
Kafka 的持久化数据截图如下:
三人行, 必有我师; 知识共享, 天下为公. 本文由东风微鸣技术博客 EWhisper.cn 编写.
使用 Bitnami Helm 安装 Kafka的更多相关文章
- Helm 安装Kafka
helm镜像库配置 helm repo add stable http://mirror.azure.cn/kubernetes/charts helm repo add incubator http ...
- kubernetes(k8s) helm安装kafka、zookeeper
通过helm在k8s上部署kafka.zookeeper 通过helm方法安装 k8s上安装kafka,可以使用helm,将kafka作为一个应用安装.当然这首先要你的k8s支持使用helm安装.he ...
- helm安装kafka集群并测试其高可用性
介绍 Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写.Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据. 这种动作( ...
- kubernetes实战(十):k8s使用Helm安装harbor
1.基本概念 对于复杂的应用中间件,需要设置镜像运行的需求.环境变量,并且需要定制存储.网络等设置,最后设计和编写Deployment.Configmap.Service及Ingress等相关yaml ...
- PHP安装kafka插件
在工作中我们经常遇到需要给php安装插件,今天把php安装kafka的插件的步骤整理下,仅供大家参考 1:需要先安装librdkafka git clone https://github.com/ed ...
- 附录E 安装Kafka
E.1 安装Kafka E.1.1 下载Kafka Kafka是由LinkedIn设计的一个高吞吐量.分布式.基于发布订阅模式的消息系统,使用Scala编写,它以可水平扩展.可靠性.异步通信 ...
- Windows 安装Kafka
Windows 7 安装Apache kafka_2.11-0.9.0.1 下载所需文件 Zookeeper: http://www.apache.org/dyn/closer.cgi/zoo ...
- Redis安装,mongodb安装,hbase安装,cassandra安装,mysql安装,zookeeper安装,kafka安装,storm安装大数据软件安装部署百科全书
伟大的程序员版权所有,转载请注明:http://www.lenggirl.com/bigdata/server-sofeware-install.html 一.安装mongodb 官网下载包mongo ...
- bitnami redmine安装、配置、备份、恢复(这篇文章靠谱)
bitnami redmine安装.配置.备份.恢复 2012-12-17 12:33 2596人阅读 评论(0) 收藏 举报 1. 安装时语言选择英文,不可以选择中文,否则不能正常运行,可以在账户里 ...
- 通过 BitNami 轻松安装 Redmine
一.简介 最近彭老师要我搭建 Redmine 来管理 WPF 项目,至于问什么要选择 Redmine 网上的资料都有说明,在这里就不做过多评论.查阅了好久资料,走了不少弯路,像我这样的新手,如果严格按 ...
随机推荐
- python实现给定K个字符数组,从这k个字符数组中任意取一个字符串,按顺序拼接,列出所有可能的字符串组合结果!
题目描述:给定K个字符数组,从这k个字符数组中任意取一个字符串,按顺序拼接,列出所有可能的字符串组合结果! 样例: input:[["a","b"," ...
- 认识 Redis client-output-buffer-limit 参数与源码分析
概述 Redis 的 client-output-buffer-limit 可以用来强制断开无法足够快从 redis 服务器端读取数据的客户端.保护机制规则如下: [hard limit] 大小限制, ...
- [WPF] 抄抄超强的苹果官网滚动文字特效实现
1. 前言 今天 ChokCoco 大佬发布了一篇博客 超强的苹果官网滚动文字特效实现,iPhone 我是买不起的,但不妨碍我对抄特效感兴趣,正好我这周安排的工作已经完成了,于是有空练练手实现了一个 ...
- Silky微服务框架之服务引擎
构建服务引擎 在注册Silky微服务应用一节中,我们了解到在ConfigureServices阶段,通过IServiceCollection的扩展方法AddSilkyServices<T> ...
- JWT中token的理解
今天我们来聊一聊关于JWT授权的事情. JWT:Json Web Token.顾名思义,它是一种在Web中,使用Json来进行Token授权的方案. 既然没有找好密码,token是如何解决信任问题的呢 ...
- linux重置密码
方法一: 进入grub菜单界面 按e键 在linux开头的行按ctrl+e 或者end跳到行尾,输入rd.break 按ctrl+x mount -o remount,rw /sysroot chro ...
- 优雅处理Golang中的异常
我们在使用Golang时,不可避免会遇到异常情况的处理,与Java.Python等语言不同的是,Go中并没有try...catch...这样的语句块,我们知道在Java中使用try...catch.. ...
- ThreadLocal的使用及原理解析
# 基本使用 JDK的lang包下提供了ThreadLocal类,我们可以使用它创建一个线程变量,线程变量的作用域仅在于此线程内.<br />用2个示例来展示一下ThreadLocal的用 ...
- for in 和 for of 的区别和v-for指令的三种使用方法
for...in 循环:只能获得对象的键名,不能获得键值 for...of 循环:允许遍历获得键值 var arr = ['red', 'green', 'blue'] for(let item in ...
- mybatis的映射
//一对一 <resultMap id="给resultMap取的id名" type="类名"> <result property=" ...