Kafka · 集群内的事件流中枢
Kafka 是部署在 kafka 命名空间的单副本 StatefulSet,基于 bitnami/kafka:3.6 镜像,以 PLAINTEXT 模式运行,依赖独立的 zookeeper 做协调。
从 NetworkPolicy 可以看出它的消费方:Sentry 与 Snuba 通过 9092 端口接入,是当前明确放行的事件流生产/消费者;其余技术语义按 manifest 推断,不做业务臆测。
部署形态
- Name
- 命名空间
- Description
- kafka
- Name
- 工作负载
- Description
- StatefulSet(name: kafka,serviceName: kafka-headless)
- Name
- 镜像
- Description
- bitnami/kafka:3.6
- Name
- 副本数
- Description
- 1
- Name
- 调度
- Description
- nodeSelector workload: app(worker2 / worker4)
- Name
- 端口
- Description
- 9092(PLAINTEXT,对外)/ 9093(INTERNAL,broker 间)
- Name
- 存储
- Description
- volumeClaimTemplate data,10Gi,storageClass nfs-client,挂载到 /bitnami/kafka
- Name
- 资源
- Description
- requests 200m CPU / 512Mi,limits 1000m CPU / 2Gi
- Name
- 探针
- Description
- liveness/readiness 均为 tcpSocket 9092(liveness initialDelay 60s/period 20s,readiness 30s/10s)
该 StatefulSet 用 volumeClaimTemplates 声明 PVC,并通过 workload: app 标签调度到应用层节点(worker2、worker4 均带此标签)。它不是数据库层,没有钉在 node-role=database 的 worker3 上。
命名空间侧配有 ResourceQuota(requests 2 CPU / 4Gi,limits 4 CPU / 8Gi)与 LimitRange(容器默认 limits 1000m/2Gi、defaultRequest 200m/512Mi),与容器自身的 resources 设置一致。
配置与依赖
配置全部通过环境变量注入,没有单独的 ConfigMap 或 ExternalSecret —— PLAINTEXT 模式下不涉及凭据。
| 环境变量 | 值 |
|---|---|
| KAFKA_CFG_ZOOKEEPER_CONNECT | zookeeper.zookeeper.svc.cluster.local:2181 |
| KAFKA_CFG_LISTENERS | PLAINTEXT://:9092,INTERNAL://:9093 |
| KAFKA_CFG_ADVERTISED_LISTENERS | PLAINTEXT://kafka.kafka.svc.cluster.local:9092,INTERNAL://kafka.kafka.svc.cluster.local:9093 |
| KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP | PLAINTEXT:PLAINTEXT,INTERNAL:PLAINTEXT |
| KAFKA_CFG_INTER_BROKER_LISTENER_NAME | INTERNAL |
| KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE | true |
| KAFKA_CFG_DELETE_TOPIC_ENABLE | true |
| KAFKA_CFG_LOG_RETENTION_HOURS | 24 |
| ALLOW_PLAINTEXT_LISTENER | yes |
zookeeper.zookeeper.svc.cluster.local:2181)做协调;zookeeper 不可用时 broker 无法正常工作。topic 开启了自动创建(auto-create)与删除(delete enable),日志保留期 24 小时。访问与监控
集群内通过两个 ClusterIP Service 访问,无 Ingress、无对外暴露:
kafka(ClusterIP)暴露 9092,供客户端连接,地址kafka.kafka.svc.cluster.local:9092。kafka-headless(headless,clusterIP: None)暴露 9092 与 9093,为 StatefulSet 提供稳定网络标识。
网络访问由两条 NetworkPolicy 控制。kafka 策略同时管 Ingress 与 Egress:入站只放行来自 sentry、snuba 命名空间到 9092 的流量,以及 kafka pod 间 9092/9093 的内部通信;出站只放行到 zookeeper 命名空间 2181 端口和 kube-system 的 DNS(UDP 53)。另一条 allow-from-argo-workflows 额外放行 argo-workflows 命名空间到本命名空间所有 pod 的入站流量。
当前 manifest 目录下没有 ServiceMonitor、PrometheusRule、HPA、VPA 或 PDB —— 该组件未接入 Prometheus 抓取,也没有自动伸缩或中断预算配置(单副本 StatefulSet 也不适用 HPA)。
返回 messaging 组件总览