k8s部署KRaft集群
时间: 2023-09-21 10:07:37 浏览: 187
在k8s中部署KRaft集群需要依赖kafka和zookeeper。首先,你需要在k8s中部署zookeeper集群,你可以参考https://blog.csdn.net/MssGuo/article/details/127773132中的指南来制作对应版本的kafka镜像。然后,你可以使用rbac鉴权来为kafka服务创建ServiceAccount、ClusterRole和ClusterRoleBinding。这样,你就可以在k8s中部署KRaft集群了。
相关问题
跨主机docker部署kraft
### 跨多台主机部署 Docker Kafka KRaft 模式
#### 准备工作
为了成功在多个主机上部署Kafka KRaft模式,需确保每台机器已安装并配置好Docker环境。此外,各节点间网络互通良好,能够通过IP地址相互访问。
#### 编写 `compose-docker.yml` 文件
创建一个名为 `compose-docker.yml` 的文件用于定义服务。此文件应包含所有必要的参数来启动Kafka实例以及设置其为KRaft模式运行[^2]:
```yaml
version: '3'
services:
kafka-node1:
image: bitnami/kafka:latest
environment:
- KAFKA_BROKER_ID=1
- KAFKA_PROCESS_ROLES=controller,broker
- KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092,CONTROLLER://0.0.0.0:9093
- KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://${HOST_IP}:9092
- KAFKA_INTER_BROKER_LISTENER_NAME=PLAINTEXT
- KAFKA_CONTROLLER_QUORUM_VOTERS=1@node1_ip:9093,2@node2_ip:9093,3@node3_ip:9093
- KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=3
- "9092:9092"
networks:
- kafka-net
kafka-node2:
image: bitnami/kafka:latest
environment:
- KAFKA_BROKER_ID=2
- KAFKA_PROCESS_ROLES=controller,broker
- KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092,CONTROLLER://0.0.0.0:9093
- KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://${HOST_IP}:9092
- KAFKA_INTER_BROKER_LISTENER_NAME=PLAINTEXT
- KAFKA_CONTROLLER_QUORUM_VOTERS=1@node1_ip:9093,2@node2_ip:9093,3@node3_ip:9093
- KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=3
- ALLOW_PLAINTEXT_LISTENER=yes
ports:
- "9092:9092"
networks:
- kafka-net
kafka-node3:
image: bitnami/kafka:latest
environment:
- KAFKA_BROKER_ID=3
- KAFKA_PROCESS_ROLES=controller,broker
- KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092,CONTROLLER://0.0.0.0:9093
- KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://${HOST_IP}:9092
- KAFKA_INTER_BROKER_LISTENER_NAME=PLAINTEXT
- KAFKA_CONTROLLER_QUORUM_VOTERS=1@node1_ip:9093,2@node2_ip:9093,3@node3_ip:9093
- KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=3
- ALLOW_PLAINTEXT_LISTENER=yes
ports:
- "9092:9092"
networks:
- kafka-net
networks:
kafka-net:
```
上述YAML片段展示了如何配置三个独立的Kafka节点作为控制器和代理角色的一部分。请注意替换 `${HOST_IP}` 和 `nodeX_ip` 变量的实际值为对应服务器的真实IP地址。
#### 启动集群
将编写的 `compose-docker.yml` 文件放置于任意目录下,并依次执行如下命令以启动各个节点上的Kafka服务:
```bash
docker-compose -f /path/to/compose-docker.yml up -d kafka-node1
docker-compose -f /path/to/compose-docker.yml up -d kafka-node2
docker-compose -f /path/to/compose-docker.yml up -d kafka-node3
```
以上操作将在指定路径下的三台不同物理机或虚拟机环境中分别拉起对应的Kafka容器实例。
#### 测试连接性
一旦所有组件都正常运作之后,可以通过任一客户端工具向任何一个暴露在外网端口的服务发送消息来进行验证测试。如果一切顺利,则表明分布式架构搭建完成并且可以投入使用了。
centos7kafka部署kraft
### 如何在 CentOS 7 上部署 Kafka KRaft 模式
#### 准备工作环境
为了确保顺利部署,在开始前需确认操作系统已更新至最新状态并安装必要的工具包。对于CentOS 7而言,这通常意味着需要安装Java环境以及下载Kafka二进制文件。
#### 下载与解压Kafka
访问[Kafka官方网站](https://kafka.apache.org/downloads),获取最新的Kafka版本,并将其放置于服务器上的合适位置。接着使用命令行工具解开压缩包:
```bash
tar -xzf kafka_2.13-3.4.0.tgz
cd kafka_2.13-3.4.0
```
此过程基于官方快速入门指南[^2]。
#### 配置KRaft模式
编辑`config/kraft/server.properties`来启用KRaft特性。具体来说,取消注释或添加如下几项配置参数以适应生产环境需求:
```properties
process.roles=broker,controller
node.id=<unique_node_id>
listeners=PLAINTEXT://:9092
advertised.listeners=PLAINTEXT://<your_host>:9092
controller.quorum.voters=<comma_separated_list_of_controller_nodes>
log.dirs=/tmp/kraft-combined-logs
transaction.state.log.replication.factor=1
offsets.topic.replication.factor=1
```
上述设置来源于实际操作经验[^1]。
#### 初始化元数据
执行初始化脚本来准备集群所需的初始元数据:
```bash
bin/kafka-storage.sh format -t <cluster_unique_id> -c config/kraft/server.properties
```
这条指令同样遵循官方文档指导。
#### 启动服务
最后一步是启动Kafka broker实例和服务控制器组件。可以通过简单的Shell命令完成这一动作:
```bash
nohup bin/kafka-server-start.sh config/kraft/server.properties &
```
这里采用的是后台运行方式以便持续提供服务支持。
#### 测试连通性
一旦所有节点都成功上线之后,可以利用内置客户端测试消息传递功能是否正常运作。例如发送一条测试消息给指定主题:
```bash
echo "test message" | bin/kafka-console-producer.sh --topic test-topic --bootstrap-server localhost:9092
```
接收端则可通过下面这段代码监听来自同一主题的消息流:
```bash
bin/kafka-console-consumer.sh --topic test-topic --from-beginning --bootstrap-server localhost:9092
```
以上步骤均按照标准流程验证了系统的可用性和稳定性[^3]。
阅读全文
相关推荐













