本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com
Apache Kafka 是一个分布式流处理平台,旨在构建实时数据管道,可作为消息代理或大数据应用的日志聚合解决方案替代品。
Apache Kafka 官方概述
商标说明:本软件列表由 Bitnami 打包。所提及的商标分属各自公司所有,使用此类商标不意味着任何关联或背书。
通过以下命令快速部署:
helm install my-release oci://registry-1.docker.io/bitnamicharts/kafka
提示:该应用也可作为 Kubernetes 应用在 Azure Marketplace 中获取。Kubernetes 应用是在 AKS 上部署 Bitnami 的最简单方式,详见 Azure Marketplace 列表。
如需生产环境使用 Apache Kafka,可尝试 VMware Tanzu Application Catalog(Bitnami 目录的商业版)。
自 2025年8月28日 起,Bitnami 将升级其公共目录,通过新的 Bitnami Secure Images 计划 提供精选的强化安全镜像。主要变更如下:
这些变更旨在通过推广软件供应链完整性最佳实践和最新部署方式,提升所有 Bitnami 用户的安全态势。详见 Bitnami Secure Images 公告。
本 Helm Chart 通过 Helm 包管理器在 Kubernetes 集群上部署 Kafka。
以发布名称 my-release 为例,执行以下命令部署:
helm install my-release oci://REGISTRY_NAME/REPOSITORY_NAME/kafka
注意:需将占位符
REGISTRY_NAME和REPOSITORY_NAME替换为实际的 Helm 仓库地址。例如,Bitnami 官方仓库需使用REGISTRY_NAME=registry-1.docker.io和REPOSITORY_NAME=bitnamicharts。
上述命令将以默认配置在 Kubernetes 集群中部署 Kafka。可通过 参数配置 部分自定义部署选项。
提示:使用
helm list查看所有已部署的 release。
本 Chart 支持自动配置 4 种监听器:
如需复杂配置,可手动设置 listeners、advertisedListeners 和 listenerSecurityProtocolMap 参数。
可针对不同监听器配置认证协议。例如,客户端通信使用 sasl_tls,控制器和 broker 间通信使用 tls。支持的协议及安全特性如下表:
| 协议方法 | 认证方式 | 是否通过 TLS 加密 |
|---|---|---|
| plaintext | 无 | 否 |
| tls | 无 | 是 |
| mtls | 双向认证 | 是 |
| sasl | 通过 SASL 认证 | 否 |
| sasl_tls | 通过 SASL 认证 | 是 |
通过以下参数分别设置客户端、控制器、broker 间通信的认证协议:
listeners.client.protocollisteners.controller.protocollisteners.interbroker.protocol若某监听器启用 SASL 认证,需通过以下参数设置凭据:
sasl.client.users/sasl.client.passwordssasl.interbroker.user/sasl.interbroker.passwordsasl.controller.user/sasl.controller.password需为每个 Kafka 节点创建包含 Java Key Stores(JKS)文件的 Secret:信任库(kafka.truststore.jks)和密钥库(kafka.keystore.jks),部署时通过 tls.existingSecret 参数传入 Secret 名称。
注意:若 JKS 文件受密码保护(推荐),需通过
tls.keystorePassword和tls.truststorePassword提供密码。
示例:为 2 节点 Kafka 集群创建 JKS Secret:
kubectl create secret generic kafka-jks-0 --from-file=kafka.truststore.jks=./kafka.truststore.jks --from-file=kafka.keystore.jks=./kafka-0.keystore.jks kubectl create secret generic kafka-jks-1 --from-file=kafka.truststore.jks=./kafka.truststore.jks --from-file=kafka.keystore.jks=./kafka-1.keystore.jks
说明:上述命令需预先准备好 JKS 文件。可使用 此脚本 生成 JKS 文件。
升级时,Chart 会复用之前生成的 Secret 或 sasl.existingSecret 指定的 Secret。如需更新凭证,可:
helm upgrade 并通过 sasl 部分参数传入新凭证helm upgrade 并通过 sasl.existingSecret 指定新 Secret需配置额外的监听器和暴露监听器,并为每个 Kafka Pod 创建独立服务。支持以下三种方式:
选项 A:自动发现随机 Load* IP**(需 initContainer 等待 IP 就绪):
externalAccess.enabled=true externalAccess.broker.service.type=Load*** externalAccess.controller.service.type=Load*** externalAccess.broker.service.ports.external=9094 externalAccess.controller.service.ports.external=9094 defaultInitContainers.autoDiscovery.enabled=true serviceAccount.create=true broker.automountServiceAccountToken=true controller.automountServiceAccountToken=true rbac.create=true
注意:若集群启用 RBAC,需创建 RBAC 规则。
选项 B:手动指定 Load* IP**:
externalAccess.enabled=true externalAccess.controller.service.type=Load*** externalAccess.controller.service.containerPorts.external=9094 externalAccess.controller.service.load***IPs[0]='external-ip-1' # 替换为实际 IP externalAccess.broker.service.type=Load*** externalAccess.broker.service.ports.external=9094 externalAccess.broker.service.load***IPs[0]='external-ip-3' # 替换为实际 IP
选项 A:自动发现随机 NodePort:
externalAccess.enabled=true externalAccess.controller.service.type=NodePort externalAccess.broker.service.type=NodePort defaultInitContainers.autoDiscovery.enabled=true serviceAccount.create=true rbac.create=true
选项 B:手动指定 NodePort:
externalAccess.enabled=true externalAccess.controller.service.type=NodePort externalAccess.controller.service.nodePorts[0]='node-port-1' # 替换为实际端口
选项 C:手动指定外部 IP:
externalAccess.enabled=true externalAccess.controller.service.type=NodePort externalAccess.controller.service.externalIPs[0]='172.16.0.20' # 替换为实际 IP
externalAccess.enabled=true externalAccess.controller.service.type=ClusterIP externalAccess.controller.service.ports.external=9094 externalAccess.controller.service.domain='ingress-ip' # 替换为 Ingress IP externalAccess.broker.service.type=ClusterIP externalAccess.broker.service.ports.external=9094 externalAccess.broker.service.domain='ingress-ip' # 替换为 Ingress IP
可通过 resources 参数设置容器资源请求(requests)和限制(limits)。生产环境建议根据实际需求调整,而非依赖 resourcesPreset 预设(预设可能无法完全适配场景)。详见 Kubernetes 容器资源管理文档。
设置 metrics.jmx.enabled=true 即可集成 Prometheus。此时会在所有 Pod 中部署 jmx_exporter 边车容器,并创建带自动采集注解的 metrics 服务。
需已安装 Prometheus 或 Prometheus Operator。推荐使用 Bitnami Prometheus Helm Chart 快速部署。
设置 metrics.serviceMonitor.enabled=true 可部署 ServiceMonitor 对象,需确保集群已安装 Prometheus Operator CRD。
Bitnami Kafka 镜像将数据存储在容器内 /bitnami/kafka 路径,通过 Persistent Volume Claim(PVC)实现数据持久化,支持 GCE、AWS、minikube 等环境。
默认以非 root 用户运行镜像,需确保持久卷可写。可通过以下方式实现:
volumePermissions.enabled=true,通过 initContainer 调整卷权限。使用 Velero(Kubernetes 备份工具)备份源部署的持久卷,并将其挂载到新部署中。详见 Velero 使用指南。
参数名 global.imageRegistry | 描述 | 默认值 |
|---|---|---|
| 全局 Docker 镜像仓库地址 | 为空则使用官方仓库 | "" |
global.imagePullSecrets | 全局镜像拉取密钥数组 | [] |
注意:完整参数列表超出本文长度限制,详见 GitHub 完整文档。
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429