| etcd 磁盘 | 在大规模集群中,etcd 对磁盘 I/O 非常敏感。 | 为 etcd 数据目录使用专用的 NVMe SSD。 |
| etcd DB 大小 | 大于 ~8 GB 的数据库会显著增加延迟、资源使用和恢复时间。 | 将 etcd DB 保持在 ≤ 8 GB;删除未使用的对象,并保持频繁更新的对象较小(~≤100 KB)。 |
| etcd 键抖动 | 键的高读写频率会给 etcd 带来压力。 | 分析 etcd 指标以查找并减少热点键。 |
| etcd 中每种资源类型的数据大小 | 每种资源类型的总量过大会使全量列表操作代价高昂,并可能阻塞控制器。 | 将每种资源类型的总数据量保持在 ≤ 800 MB;清理未使用的 Deployment/Service。 1 |
| API server LB 带宽和连接数 | 负载均衡器的带宽或连接数限制可能导致节点变为 NotReady。 | 提前监控/预配 API server 的负载均衡器。 |
| 每个 namespace 中的 Service 数量 | 过多的 Service 会向 Pod 注入大量环境变量,并减慢启动速度。 | 将每个 namespace 中的 Service 数量控制在 < 5,000,或设置 enableServiceLinks: false。 2 |
| 集群中的 Service 总数 | 过多的 Service 会增加 kube-proxy 规则并影响性能。 | 将 Service 总数控制在 < 10,000,并清理未使用的 Service。 1 |
| CoreDNS | 大量 Pod 可能会降低 CoreDNS 性能。 | 运行 NodeLocal DNSCache (nodelocaldns)。 |
| Pod 更新速率 | 过高的更新速率会将 Endpoint/EndpointSlice 变更推送到所有节点,并可能引发风暴。 | 降低 Pod 抖动;对于 RollingUpdate,设置保守的 maxUnavailable/maxSurge。 |
| ServiceAccount token 挂载 | 每个 token Secret 都可能创建一个 watch;大量 watch 会加重控制平面负担。 | 对于不需要 API 访问的 Pod,设置 automountServiceAccountToken: false。 3 |
| 对象数量/大小 | 累积的 ConfigMaps、Secrets、PVCs 等会增加控制平面负载。 | 限制 ReplicaSet 历史记录(revisionHistoryLimit),并为 Jobs/CronJobs 使用 ttlSecondsAfterFinished。 |
| Pod requests/limits | requests 与 limits 之间的差距过大,在节点丢失时可能触发级联故障。 | 在可行的情况下,优先将 requests 设置为等于 limits。 |
| 控制器重启与监控 | 控制器或 API server 重启会触发重新列表,可能使 API server 过载。 | 监控控制器,设置合适的资源以避免重启,并减少不必要的控制平面操作。 |