主题
RKE1 + Kubernetes 1.16.3 节点拆分后的集群规模与管理规划
一、背景
- 当前物理机数量:138 台
- 计划:将大规格物理机拆分为多台虚拟机,每个 VM 作为一个 K8s 节点
- 当前架构:RKE1 + Kubernetes 1.16.3 + docker
- 风险:节点数可能从 138 大幅增长到 552 ~ 1104+,进入中大型集群规模
本文档从控制面、网络、DNS、监控、运维等维度给出规划建议。
二、拆分后节点规模估算
| 拆分比例 | 物理机数 | K8s 节点数 | 集群规模 |
|---|---|---|---|
| 1 台物理机 = 2 VM | 138 | 276 | 中等 |
| 1 台物理机 = 4 VM | 138 | 552 | 较大 |
| 1 台物理机 = 8 VM | 138 | 1104 | 很大 |
K8s 1.16 + etcd 3.3 实践经验:
- 300 节点以下:相对轻松,常规优化即可;
- 500 节点左右:需要专门调优 etcd、Calico、CoreDNS;
- 1000 节点以上:RKE1 + 1.16 + docker 会比较吃力,建议升级架构或拆分成多集群。
三、控制面规划
1. etcd 是最大瓶颈
etcd 存储所有 Node、Lease、Pod、Endpoint、Service 等对象,节点数翻倍后,数据量和 watch 压力显著增加。
| 项目 | 建议 |
|---|---|
| etcd 节点数 | 至少 3 节点,500+ 节点建议 5 节点 |
| 磁盘 | 必须 SSD/NVMe,etcd 对磁盘延迟极度敏感 |
| 内存 | 每 etcd 节点至少 8GB,500+ 节点建议 16GB+ |
| 网络 | etcd 节点之间低延迟、高带宽,最好独立网段 |
| 参数调优 | 增大 quota-backend-bytes、调整 heartbeat-interval、election-timeout |
| 维护 | 定期 compaction 和 defrag,监控 etcd_db_total_size_in_bytes |
RKE1 cluster.yml 示例:
yaml
services:
etcd:
extra_args:
quota-backend-bytes: "8589934592" # 8GB
auto-compaction-retention: "1h"
heartbeat-interval: "500"
election-timeout: "2500"
backup_config:
enabled: true
interval_hours: 6
retention: 302. API Server / Controller Manager / Scheduler
- kube-controller-manager、kube-scheduler 在 RKE1 中为静态 Pod,运行在 control plane 节点;
- 节点数到 500+ 时,control plane 资源必须独立且充足。
| 组件 | 建议 |
|---|---|
| control plane 节点 | 独立 3~5 台,不与 worker 混部 |
| API Server | 多副本 + 外部负载均衡(LB / keepalived + haproxy) |
| Controller Manager / Scheduler | 确保 control plane 节点 CPU/内存充足 |
四、网络规划
1. PodCIDR 必须提前规划
默认 cluster-cidr=10.42.0.0/16,每节点 /24,最多支持 256 个节点。
| cluster-cidr | 每节点掩码 | 最大节点数 |
|---|---|---|
| 10.42.0.0/16 | /24 | 256 |
| 10.42.0.0/15 | /24 | 512 |
| 10.42.0.0/14 | /24 | 1024 |
| 10.40.0.0/13 | /24 | 2048 |
cluster-cidr一旦确定很难修改,必须在规划阶段覆盖未来 1~2 年的节点上限。
2. Calico / Canal 改用 Route Reflector
RKE1 默认 Canal 使用 BGP full mesh。节点数超过 100 后,BGP 邻居关系会爆炸增长。
建议:
- 改为 Route Reflector(RR)模式;
- 选择 3~5 台网络性能好的节点作为 RR;
- 或使用 Calico BGP peer 模板集中管理。
3. kube-proxy 模式
iptables 模式在节点数 >200 时规则数和锁竞争非常严重,必须改为 ipvs:
yaml
services:
kubeproxy:
extra_args:
proxy-mode: "ipvs"五、DNS 规划
| 项目 | 建议 |
|---|---|
| CoreDNS 副本数 | 按节点数比例扩容,建议每 50~100 节点 1 副本,上限 10~15 个 |
| NodeLocal DNSCache | 必须开启并确保全节点覆盖,降低 CoreDNS 压力 |
| CoreDNS 反亲和 | 配置 PodAntiAffinity,避免多个副本落在同一物理机/VM |
| DNS 缓存 TTL | 业务侧适当调整 DNS 缓存,减少 CoreDNS 查询 |
六、监控与日志
| 项目 | 建议 |
|---|---|
| Prometheus | 使用远程存储(Thanos、Cortex、VictoriaMetrics)或分片采集 |
| scrape 间隔 | 非核心指标放宽到 30s/60s |
| 指标裁剪 | 丢弃不必要的高基数 cAdvisor/kubelet 指标 |
| 日志采集 | Fluentd/Fluent Bit 按节点数评估吞吐,独立 ES/Loki 集群 |
| 告警 | 按物理机聚合,避免 VM 级告警噪音 |
七、节点命名、标签与调度策略
推荐命名规则
<机房>-<机架>-<物理机编号>-vm<VM编号>
例如:sz-rack05-szb13032-vm01推荐标签
| 标签 | 用途 |
|---|---|
topology.kubernetes.io/zone | 可用区/机房 |
physical-host | 所属物理机 |
node-type | worker / controlplane / etcd |
vm-index | VM 编号 |
resource-profile | cpu-intensive / memory-intensive |
调度策略
- 关键应用配置 PodAntiAffinity,避免多个副本落在同一物理机或同一 VM;
- 使用 topology spread constraints 分散副本;
- NUMA/本地盘敏感应用使用
nodeAffinity绑定到特定规格 VM。
八、运维管理
RKE1 手工维护 500+ 节点的 cluster.yml 不现实,建议引入自动化:
| 方向 | 建议 |
|---|---|
| 集群部署 | Terraform + cloud-init + RKE1,或迁移至 Rancher 管理 RKE/RKE2 |
| 节点扩缩容 | 使用 Rancher Node Pool / Cluster API |
| 升级策略 | 分批滚动升级,按 zone/物理机分组,配合 cordon + drain |
| 维护窗口 | 同一物理机上的 VM 分批操作,避免整台物理机同时不可用 |
| 镜像分发 | 私有镜像仓库 + 节点本地缓存 / P2P 分发(如 Dragonfly) |
九、是否该拆成多个 K8s 集群?
如果拆分后节点数预计超过 600~800,强烈建议考虑多集群:
| 拆分维度 | 适用场景 |
|---|---|
| 按业务域 | 每个业务独立集群,降低爆炸半径 |
| 按环境 | 生产 / 预发 / 测试 独立集群 |
| 按机房/可用区 | 苏州 / 上海 / 北京各一个集群 |
| 多集群管理 | Rancher Multi-Cluster、ArgoCD、Cluster Federation |
多集群优点:
- 单集群规模可控,etcd/API Server 压力小;
- 故障隔离;
- 升级风险低,可逐集群升级。
十、针对当前 138 台物理机的建议
| 目标节点数 | 建议 |
|---|---|
| 300~500 | 适度拆分(平均每物理机 2~4 VM),单集群可管理,需调优 etcd/Calico/DNS |
| 500~800 | 拆分 + 强控制面(5 etcd、独立 control plane、RR、NodeLocal DNS),RKE1+1.16 较吃力 |
| 800+ | 必须升级架构或拆分多集群,不建议在 RKE1+1.16+docker 上硬撑 |
十一、总结
| 维度 | 核心建议 |
|---|---|
| 规模 | 先算清楚拆分后节点数,控制在 500 以内较安全 |
| 控制面 | 独立 control plane、5 节点 etcd、SSD、参数调优 |
| 网络 | 提前扩大 PodCIDR、Calico 改 Route Reflector、kube-proxy 改 ipvs |
| DNS | NodeLocal DNSCache + CoreDNS 多副本 + 反亲和 |
| 监控 | Prometheus 远程存储、指标裁剪、日志独立集群 |
| 运维 | 自动化部署、分批升级、清晰的命名标签体系 |
| 长期 | 500+ 节点建议升级 RKE2/containerd 或多集群架构 |
文档生成时间:2026-07-23