首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Kubernetes 部署 Kafka 集群 「Helm 部署案例」

Kubernetes 部署 Kafka 集群 「Helm 部署案例」

原创
作者头像
sir5kong
修改于 2025-01-14 23:24:50
修改于 2025-01-14 23:24:50
6.3K0
举报

本项目完全兼容 KRaft, 不依赖 ZooKeeper,最小化的 Kafka 集群仅启动一个 Pod 即可。

Prerequisites

  • Kubernetes 1.22+
  • Helm 3.3+

获取 helm 仓库

代码语言:shell
AI代码解释
复制
helm repo add kafka-repo https://helm-charts.itboon.top/kafka
helm repo update kafka-repo

部署 Kafka

部署单节点 Kafka 集群

代码语言:shell
AI代码解释
复制
## 下面的部署案例关闭了持久化存储,仅作为演示
helm upgrade --install kafka \
  --namespace kafka-demo \
  --create-namespace \
  --set broker.persistence.enabled="false" \
  kafka-repo/kafka
代码语言:shell
AI代码解释
复制
## 默认已开启持久化存储
helm upgrade --install kafka \
  --namespace kafka-demo \
  --create-namespace \
  kafka-repo/kafka

独立部署 controller 模块

生产环境推荐独立部署 controller 模块, 方便 broker 横向扩缩容。

代码语言:shell
AI代码解释
复制
helm upgrade --install kafka \
  --namespace kafka-demo \
  --create-namespace \
  --set controller.enabled="true" \
  --set controller.replicaCount="1" \
  --set broker.replicaCount="1" \
  kafka-repo/kafka

kafka-repo/kafka 默认关闭 controller 独立部署,kafka-repo/kafka-ha 默认开启。

部署高可用集群

代码语言:shell
AI代码解释
复制
## kafka-repo/kafka-ha 默认部署 3 controller + 3 broker
helm upgrade --install kafka \
  --namespace kafka-demo \
  --create-namespace \
  kafka-repo/kafka-ha
代码语言:shell
AI代码解释
复制
## 调整集群资源配额
helm upgrade --install kafka \
  --namespace kafka-demo \
  --create-namespace \
  --set controller.replicaCount="3" \
  --set broker.replicaCount="3" \
  --set broker.heapOpts="-Xms4096m -Xmx4096m" \
  --set broker.resources.requests.memory="8Gi" \
  --set broker.resources.limits.memory="16Gi" \
  kafka-repo/kafka-ha

More values please refer to examples/values-production.yml

Kafka Broker 配置

代码语言:yaml
AI代码解释
复制
## 单节点 Broker 配置
broker:
  replicaCount: 1
  config:
    num.partitions: "2"
代码语言:yaml
AI代码解释
复制
## 高可用集群推荐配置
broker:
  replicaCount: 3
  config:
    num.partitions: "6"
    default.replication.factor: "3"
    min.insync.replicas: "2"

broker.config 某些关键配置会被启动脚本覆盖,例如: node.id advertised.listeners controller.quorum.voters 等

集群外访问

代码语言:yaml
AI代码解释
复制
## NodePort example
broker:
  external:
    enabled: true
    service:
      type: "NodePort"
      annotations: {}
    autoDiscovery:
      enabled: true

更多集群外案例请参考 https://github.com/itboon/kafka-helm/blob/main/docs/external.md

其他 Kafka Kubernetes 部署方案

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Prerequisites
  • 获取 helm 仓库
  • 部署 Kafka
    • 部署单节点 Kafka 集群
    • 独立部署 controller 模块
    • 部署高可用集群
  • Kafka Broker 配置
  • 集群外访问
  • 其他 Kafka Kubernetes 部署方案
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档