kafka对接Rancher日志

本文介绍了如何在Rancher环境中对接Kafka日志,包括正常对接步骤和开启SASL认证的方式。通过helm添加bitnami库,部署kafka集群,设置Rancher日志输出到Kafka主题,以及配置SASL认证参数,确保日志安全传输。同时,提供了kafka-client的相关操作命令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

kafka对接Rancher日志

概述

Rancher应用商店自带的kafka可以方便的对接Rancher日志,但是不支持sasl认证。

如果有认证需求,可以使用bitnami仓库的kafka,这个kafka带有相关的认证参数,可以很方便的开启sasl相关的认证。

参考:https://github.com/bitnami/charts/tree/master/bitnami/kafka

环境准备

软件 版本
kubernetes v1.19.3
Rancher v2.4.8 | v2.5.2
kafka 2.6.0
kafka-chart 11.8.9
helm 3.4.0

正常对接kafka集群

如果是需要开启SASL认证,可以直接跳到后面开启SASL认证方式的内容

1、helm添加bitnami库

helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update

2、下载 kafka 对应的chart压缩文件

bitnami库国内可能访问不太友好,需要翻一下墙。。。

helm pull bitnami/kafka --version 11.8.9

上述命令会下载一个kafka-11.8.9-tgz的压缩文件,解压该文件

tar -zxvf kafka-11.8.9-tgz

查看解压目录内容

# cd kafka/
# ls
charts  Chart.yaml  files  README.md  requirements.lock  requirements.yaml  templates  values-production.yaml  values.yaml

可以看到有两个values文件,分别是values.yamlvalues-production.yaml

其中values.yaml会启动一个最简单的kafka集群,

values-production.yaml中的配置会包含更多面向生产的配置,例如启用持久化存储,启用sasl相关认证等。

3、启动kafka集群

最简化启动kafka集群,可以添加这两个参数,取消持久化存储

kubectl create ns kafka
## 进入到kafka目录下再执行下面的命令
helm install kafka -n kafka -f values.yaml --set persistence.enabled=false --set zookeeper.persistence.enabled=false .

或者如果k8s有持久化存储,可以设置storage Class,将xxx替换为对应的storage Class

helm install kafka -n kafka -f values.yaml --set global.storageClass=xxx .

执行完helm install后会输出以下内容

NAME: kafka
LAST DEPLOYED: Wed Nov 25 17:04:50 2020
NAMESPACE: kafka
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
** 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:2.6.0-debian-10-r57 --namespace kafka --command -- sleep infinity
    kubectl exec --tty -i kafka-client --namespace kafka -- bash

    PRODUCER:
        ka
### Kafka 与 SeaTunnel 的集成教程 Kafka 和 SeaTunnel 是两种强大的分布式系统,分别专注于消息传递和数据集成。将 Kafka 与 SeaTunnel 集成可以实现从 Kafka 主题中读取数据或将数据写入 Kafka 主题的功能。以下是关于如何实现这种集成的详细说明。 #### 1. **SeaTunnel 简介** SeaTunnel(原名 Apache Apex)是一个高效的数据集成工具,支持多种数据源和目标之间的批量和流式传输[^2]。它能够与 Kafka 配合使用,从而实现实时数据处理和传输。 #### 2. **Kafka Connect 的作用** Kafka Connect 是 Kafka 提供的一种用于与其他系统集成的框架[^2]。虽然 SeaTunnel 并不属于 Kafka Connect 的一部分,但其功能类似于 Kafka Connect,可以作为外部工具来完成类似的任务。 #### 3. **集成步骤** ##### (1) **环境准备** 在开始之前,请确保已安装并配置好 Kafka 和 SeaTunnel。可以通过以下命令下载并解压 Kafka: ```bash $ tar -xzf kafka_2.13-2.8.0.tgz $ cd kafka_2.13-2.8.0 ``` 此外,还需要确保 SeaTunnel 已正确安装并运行[^4]。 ##### (2) **配置 SeaTunnel** 在 SeaTunnel 中,可以通过配置文件指定 Kafka 作为数据源或目标。以下是一个示例配置文件,展示如何从 Kafka 读取数据: ```yaml env { execution.parallelism = 1 } source { plugin_name = "kafka" topic = "input_topic" startup_mode = "earliest-offset" properties { bootstrap.servers = "localhost:9092" group.id = "seatunnel-group" } } transform { # 在此添加任何需要的转换逻辑 } sink { plugin_name = "console" # 或者其他目标插件 } ``` 上述配置文件中,`plugin_name` 指定了 Kafka 插件,`topic` 定义了要读取的 Kafka 主题,`startup_mode` 定义了从何处开始消费数据。 ##### (3) **编写代码** 如果需要通过编程方式实现 Kafka 与 SeaTunnel 的集成,可以参考以下代码示例: ```python from pyflink.datastream import StreamExecutionEnvironment from pyflink.table import StreamTableEnvironment, EnvironmentSettings # 创建执行环境 env = StreamExecutionEnvironment.get_execution_environment() env.set_parallelism(1) settings = EnvironmentSettings.new_instance().in_streaming_mode().use_blink_planner().build() table_env = StreamTableEnvironment.create(env, settings) # 添加 Kafka 表 table_env.execute_sql(""" CREATE TABLE kafka_table ( `user_id` BIGINT, `item_id` BIGINT, `behavior` STRING, `ts` TIMESTAMP(3) ) WITH ( 'connector' = 'kafka', 'topic' = 'input_topic', 'properties.bootstrap.servers' = 'localhost:9092', 'format' = 'json', 'scan.startup.mode' = 'earliest-offset' ) """) # 查询数据 table_result = table_env.sql_query("SELECT user_id, item_id, behavior FROM kafka_table") # 将结果输出到控制台 table_env.to_append_stream(table_result, Types.ROW([Types.LONG(), Types.LONG(), Types.STRING()])).print() # 启动执行 env.execute("Kafka to SeaTunnel Integration") ``` 上述代码展示了如何通过 Flink 的 Table API 将 Kafka 数据集成到 SeaTunnel 中[^3]。 #### 4. **关键点总结** - Kafka 可以作为 SeaTunnel 的数据源或目标。 - 使用 SeaTunnel 的 Kafka 插件可以轻松实现数据的读取和写入。 - 配置文件和代码都需要明确指定 Kafka 的主题、服务器地址以及其他必要的属性。 ####
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值