本项目完全兼容 KRaft, 不依赖 ZooKeeper,最小化的 Kafka 集群仅启动一个 Pod 即可。也可以单独用 Docker 启动,便于本地开发调试,详情请参考 Docker 启动 Kafka
helm repo add kafka-repo https://helm-charts.itboon.top/kafka
helm repo update kafka-repo
helm upgrade --install kafka \
--namespace kafka-demo \
--create-namespace \
--set broker.combinedMode.enabled="true" \
--set broker.persistence.enabled="false" \
kafka-repo/kafka
helm upgrade --install kafka \
--namespace kafka-demo \
--create-namespace \
--set broker.persistence.size="20Gi" \
kafka-repo/kafka
默认已开启持久化存储。
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
更多 values 请参考 examples/values-production.yml
开启 Kubernetes 集群外访问:
helm upgrade --install kafka \
--namespace kafka-demo \
--create-namespace \
--set broker.external.enabled="true" \
--set broker.external.service.type="LoadBalancer" \
--set broker.external.domainSuffix="kafka.example.com" \
kafka-repo/kafka
上面部署成功后请完成域名解析配置。
Key | Type | Default | Description |
---|---|---|---|
broker.combinedMode.enabled | bool |
| Whether to enable the combined mode |
broker:
combinedMode:
enabled: true
replicaCount: 1
heapOpts: "-Xms1024m -Xmx1024m"
persistence:
enabled: true
size: 20Gi
In order to connect to the Kafka server outside the cluster, each Broker must be exposed and advertised.listeners
must be correctly configured.
There are two ways to expose, NodePort
and LoadBalancer
, each broker node needs a NodePort
or LoadBalancer
.
Key | Type | 默认值 | 描述 |
---|---|---|---|
broker.external.enabled | bool |
| 是否开启集群外访问 |
broker.external.service.type | string |
|
|
broker.external.service.annotations | object |
| External serivce annotations |
broker.external.nodePorts | list |
| NodePort 模式,至少提供一个端口号,如果端口数量少于 broker 数量,则自增 |
broker.external.domainSuffix | string |
| If you use |
## NodePort example
broker:
replicaCount: 3
external:
enabled: true
service:
type: "NodePort"
annotations: {}
nodePorts:
- 31050
- 31051
- 31052
## LoadBalancer example
broker:
replicaCount: 3
external:
enabled: true
service:
type: "LoadBalancer"
annotations: {}
domainSuffix: "kafka.example.com"
version: "3"
volumes:
kafka-data: {}
services:
kafka:
image: kafkace/kafka:v3.5
# restart: always
ports:
- "29092:29092"
volumes:
- kafka-data:/opt/kafka/data
environment:
- KAFKA_HEAP_OPTS=-Xmx512m -Xms512m
- KAFKA_BROKER_EXTERNAL_HOST=kafka.example.com ## 对外暴露的主机名,可以是域名或IP地址
- KAFKA_BROKER_EXTERNAL_PORT=29092
## kafka web 管理 (可选)
kafka-ui:
image: provectuslabs/kafka-ui:v0.7.1
# restart: always
ports:
- "18080:8080"
environment:
- KAFKA_CLUSTERS_0_NAME=demo-kafka-server
- KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS=kafka:9092
### 内部网络
## broker 默认内部端口 9092
## bootstrap-server: kafka:9092
### 外部网络
## broker 默认外部端口 29092
## bootstrap-server: ${KAFKA_BROKER_EXTERNAL_HOST}:29092
变量 | 默认值 | 描述 |
---|---|---|
| 随机生成 | Cluster ID |
|
| broker 端口号,如果配置了 |
|
| controller 端口号,如果配置了 |
| null | 对外暴露的主机名,可以是域名或IP地址,如果配置了 |
|
| 对外暴露的端口号,不能跟内部端口重复,如果配置了 |
|
| Kafka Java Heap size. 例如: |
https://github.com/itboon/kafka-docker
所有以 KAFKA_CFG_
开头的环境变量都将映射到其相应的 Apache Kafka 配置项。
例如 KAFKA_CFG_LISTENERS
对应配置参数 listeners
,KAFKA_CFG_ADVERTISED_LISTENERS
对应配置参数 advertised.listeners
Variable examples:
变量 | 配置项 |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
log.dir
和log.dirs
已经被锁定,无法使用环境变量进行覆盖。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。