
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
Apache Kafka 是一个分布式流处理平台,旨在构建实时数据管道,可作为消息代理或大数据应用的日志聚合解决方案替代品。
[Apache Kafka 官方概述]
商标说明:本软件列表由 Bitnami 打包。所提及的商标分属各自公司所有,使用此类商标不意味着任何关联或背书。
通过以下命令快速部署:
consolehelm 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 为例,执行以下命令部署:
consolehelm 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.protocolSASL 认证配置
若某监听器启用 SASL 认证,需通过以下参数设置凭据:
sasl.client.users/sasl.client.passwordssasl.interbroker.user/sasl.interbroker.passwordsasl.controller.user/sasl.controller.passwordTLS 认证/加密配置
需为每个 Kafka 节点创建包含 Java Key Stores(JKS)文件的 Secret:信任库(kafka.truststore.jks)和密钥库(kafka.keystore.jks),部署时通过 tls.existingSecret 参数传入 Secret 名称。
注意:若 JKS 文件受密码保护(推荐),需通过
tls.keystorePassword和tls.truststorePassword提供密码。
示例:为 2 节点 Kafka 集群创建 JKS Secret:
consolekubectl 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 创建独立服务。支持以下三种方式:
方式一:使用 Load*** 服务
选项 A:自动发现随机 Load* IP**(需 initContainer 等待 IP 就绪):
consoleexternalAccess.enabled=true externalAccess.broker.service.type=LoadBalancer externalAccess.controller.service.type=LoadBalancer 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**:
consoleexternalAccess.enabled=true externalAccess.controller.service.type=LoadBalancer externalAccess.controller.service.containerPorts.external=9094 externalAccess.controller.service.loadBalancerIPs[0]='external-ip-1' # 替换为实际 IP externalAccess.broker.service.type=LoadBalancer externalAccess.broker.service.ports.external=9094 externalAccess.broker.service.loadBalancerIPs[0]='external-ip-3' # 替换为实际 IP
方式二:使用 NodePort 服务
选项 A:自动发现随机 NodePort:
consoleexternalAccess.enabled=true externalAccess.controller.service.type=NodePort externalAccess.broker.service.type=NodePort defaultInitContainers.autoDiscovery.enabled=true serviceAccount.create=true rbac.create=true
选项 B:手动指定 NodePort:
consoleexternalAccess.enabled=true externalAccess.controller.service.type=NodePort externalAccess.controller.service.nodePorts[0]='node-port-1' # 替换为实际端口
选项 C:手动指定外部 IP:
consoleexternalAccess.enabled=true externalAccess.controller.service.type=NodePort externalAccess.controller.service.externalIPs[0]='172.16.0.20' # 替换为实际 IP
方式三:使用 ClusterIP 服务(需配合 Ingress)
consoleexternalAccess.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] 快速部署。
与 Prometheus Operator 集成
设置 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 完整文档] 。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务
以下是 bitnamicharts/kafka 相关的常用 Docker 镜像,适用于 不同场景 等不同场景: