ZooKeeper · Kafka 的分布式协调服务
ZooKeeper 是 messaging 命名空间下的分布式协调组件,在本集群中作为 Kafka 的依赖运行(README 将其定位为"分布式协调")。它以单副本 StatefulSet 部署,持有客户端(2181)、follower(2888)、leader 选举(3888)三个端口,通过 ClusterIP Service 暴露给集群内部消费方,目前仅 Kafka 命名空间被 NetworkPolicy 放行访问其 2181 端口。
kustomization.yaml,而是由 applications/messaging/zookeeper/ 下的一组裸 YAML(StatefulSet、Service、NetworkPolicy、LimitRange、ResourceQuota、Namespace)直接构成,manifest 中未配置 ExternalSecret、ServiceMonitor、HPA/VPA、PDB。下文只陈述 manifest 可验证的事实。部署形态
- Name
- 命名空间
- Description
- zookeeper
- Name
- 工作负载类型
- Description
- StatefulSet(serviceName: zookeeper-headless)
- Name
- 镜像与版本
- Description
- bitnami/zookeeper:3.9
- Name
- 副本数
- Description
- 1
- Name
- 调度
- Description
- nodeSelector workload: app(对应 worker2 / worker4,见 README)
- Name
- 端口
- Description
- 2181 client、2888 follower、3888 election
- Name
- 存储
- Description
- volumeClaimTemplates data,storageClass nfs-client,5Gi,RWO,挂载到 /bitnami/zookeeper
- Name
- 资源
- Description
- requests 100m CPU / 256Mi,limits 500m CPU / 512Mi
存活与就绪探针均通过 echo ruok | nc localhost 2181 | grep imok 探测 ZooKeeper 的四字命令端口:livenessProbe initialDelaySeconds 30 / periodSeconds 10,readinessProbe initialDelaySeconds 10 / periodSeconds 5。
配置与依赖
配置通过容器环境变量注入,manifest 中只有两项:
| 环境变量 | 值 | 含义 |
|---|---|---|
| ALLOW_ANONYMOUS_LOGIN | yes | 允许匿名客户端连接(未启用认证) |
| ZOO_SERVER_ID | 1 | 本节点 server id,对应单副本部署 |
命名空间级别还配有两道护栏:LimitRange zookeeper-limitrange 为容器设置默认 limits 500m CPU / 512Mi、defaultRequest 100m CPU / 128Mi;ResourceQuota zookeeper-quota 限制命名空间总量 requests 1 CPU / 1Gi、limits 2 CPU / 2Gi。该服务不依赖外部 DB 或密钥(无 ExternalSecret),其数据持久化在 nfs-client PVC 上。
访问与监控
服务通过两个 ClusterIP Service 暴露,均无 Ingress,不对集群外开放:
| Service | 类型 | 端口 | 用途 |
|---|---|---|---|
| zookeeper | ClusterIP | 2181 client | 集群内客户端访问入口 |
| zookeeper-headless | Headless(clusterIP: None) | 2181 / 2888 / 3888 | StatefulSet 稳定网络标识 |
访问由两条 NetworkPolicy 控制:zookeeper 仅放行 kafka 命名空间内 app: kafka 的 Pod 访问 2181,并允许 app: zookeeper 自身 Pod 互访 2888 / 3888(集群内 follower 与选举通信);allow-from-argo-workflows 额外放行 argo-workflows 命名空间的全部入站流量。manifest 中没有 ServiceMonitor / PrometheusRule(无 Prometheus 抓取配置),也没有 HPA / VPA / PDB。
返回 messaging 总览