主题
中间件概览
部署架构
所有中间件通过 Helm Chart 部署到 K3s 集群,使用 local-path StorageClass 持久化数据。
k8s-apps/04-helm/
├── 01-zookeeper/ ZooKeeper 3.9.3
├── 02-mysql/ MySQL 8.0.35(原生 MySQL,tidb namespace)
├── 02-tidb/ TiDB 分布式数据库(可选替代方案)
├── 03-kafka/ Kafka 3.5.1
├── 04-storm/ Storm(可选)
├── 05-redis/ Redis HA(可选)
├── 05-rediscluster/ Redis Cluster 7.2.5(默认)
├── 06-minio/ MinIO 对象存储
├── 07-elasticsearch/ Elasticsearch 6.8.23(含拼音分词)
├── 07-elasticsearch7/ ES 7.x(可选)
├── 10-clickhouse/ ClickHouse(可选)
├── 11-apollo/ Apollo 配置中心(可选)
└── 12-rancher/ Rancher 管理平台(可选)节点亲和性
每个中间件组件通过 nodeSelector 绑定特定节点标签,确保调度可控:
| 组件 | nodeSelector |
|---|---|
| ZooKeeper | zookeeper: "true" |
| Kafka | kafka: "true" |
| MySQL | mysql: "true" |
| Redis Cluster | rediscluster: "true" |
| MinIO | minio: "true" |
| Elasticsearch | elasticsearch: "true" |
资源配置汇总
| 组件 | CPU 请求 | 内存请求 | 存储 |
|---|---|---|---|
| ZooKeeper | 1c | 1Gi | 8Gi × 副本 |
| Kafka | 1c | 2Gi | 按 logRetentionBytes |
| MySQL | - | - | PVC 动态分配 |
| Redis Cluster | - | - | 内存 |
| MinIO | - | - | 按需 |
| Elasticsearch | 2c | 4Gi | 20Gi × 副本 |
服务发现
所有中间件通过 K8s Service 名称访问(集群内 DNS):
| 组件 | Service 地址 |
|---|---|
| ZooKeeper | zookeeper.yidun-infra.svc:2181 |
| Kafka | kafka-yidun-0.kafka-yidun-headless.yidun-infra:9092 |
| MySQL | mysql-yidun.tidb.svc:3306 或 NodePort 32000 |
| Redis | redis-cluster0-headless.yidun-infra.svc:6379 |
| MinIO | minio-yidun.yidun-infra.svc:9000 或 NodePort 31311 |
| Elasticsearch | elasticsearch-yidun-master.yidun-infra.svc:9200 或 NodePort 30092 |