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_CONNECTzookeeper.zookeeper.svc.cluster.local:2181
KAFKA_CFG_LISTENERSPLAINTEXT://:9092,INTERNAL://:9093
KAFKA_CFG_ADVERTISED_LISTENERSPLAINTEXT://kafka.kafka.svc.cluster.local:9092,INTERNAL://kafka.kafka.svc.cluster.local:9093
KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAPPLAINTEXT:PLAINTEXT,INTERNAL:PLAINTEXT
KAFKA_CFG_INTER_BROKER_LISTENER_NAMEINTERNAL
KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLEtrue
KAFKA_CFG_DELETE_TOPIC_ENABLEtrue
KAFKA_CFG_LOG_RETENTION_HOURS24
ALLOW_PLAINTEXT_LISTENERyes

访问与监控

集群内通过两个 ClusterIP Service 访问,无 Ingress、无对外暴露:

  • kafka(ClusterIP)暴露 9092,供客户端连接,地址 kafka.kafka.svc.cluster.local:9092
  • kafka-headless(headless,clusterIP: None)暴露 9092 与 9093,为 StatefulSet 提供稳定网络标识。

网络访问由两条 NetworkPolicy 控制。kafka 策略同时管 Ingress 与 Egress:入站只放行来自 sentrysnuba 命名空间到 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 组件总览

评论