Skip to content

第八部分 性能调优与大规模运维

大规模 Kubernetes 集群面临 etcd、API Server、Scheduler、网络等多方面挑战。本部分讲解性能调优和大规模运维实践。


第 29 章 etcd 调优

29.1 etcd 的重要性

etcd 是 K8s 的数据库,所有集群状态都存储在 etcd 中。etcd 性能直接影响整个集群。

29.2 etcd 性能指标

  • 提交延迟(commit duration)
  • 应用延迟(apply duration)
  • WAL 同步时间
  • 数据库大小
  • leader 变更次数

29.3 etcd 调优建议

  • 使用 SSD 磁盘
  • etcd 独立节点部署
  • 增加内存
  • 定期压缩和碎片整理
  • 限制事件和 Pod 数量
bash
# 查看 etcd 状态
ETCDCTL_API=3 etcdctl endpoint status --write-out=table   --endpoints=https://127.0.0.1:2379   --cacert=/etc/kubernetes/pki/etcd/ca.crt   --cert=/etc/kubernetes/pki/etcd/server.crt   --key=/etc/kubernetes/pki/etcd/server.key

# 压缩历史版本
ETCDCTL_API=3 etcdctl compact <REVISION>

# 碎片整理
ETCDCTL_API=3 etcdctl defrag

29.4 本章练习

  1. 查看 etcd 状态指标。
  2. 执行 etcd 压缩和碎片整理。
  3. 了解 etcd 的告警和配额机制。

第 30 章 API Server 与 Scheduler 优化

30.1 API Server 优化

  • 启用缓存和分页
  • 限制 List 请求
  • 使用 Watch 替代轮询
  • 调整 --max-requests-inflight
  • 水平扩展 API Server

30.2 Scheduler 优化

  • 使用 ipvs 模式减少 iptables 规则数量
  • 合理设置节点资源
  • 避免过多空跑 Pod
  • 使用自定义调度器分担压力

30.3 本章练习

  1. 查看 API Server 的 QPS 和延迟。
  2. 分析 Scheduler 的调度延迟。
  3. 了解 K8s 大集群规模限制。

第 31 章 大规模集群运维实践

31.1 大集群规模参考

对象建议上限
节点5000
Pod150000
容器300000
Service10000

31.2 大规模挑战

  • etcd 性能瓶颈
  • API Server 负载高
  • 调度延迟增加
  • 网络广播域大
  • 监控数据爆炸

31.3 解决方案

  • 多集群拆分
  • 使用联邦或多集群编排
  • 优化事件保留策略
  • 使用高效 CNI
  • 分片 Prometheus

31.4 本章练习

  1. 了解 K8s 官方大集群支持上限。
  2. 设计一个 1000 节点集群的架构。
  3. 列出大规模集群需要重点监控的指标。

第八部分总结

完成本阶段学习后,你应该能够:

  • 调优 etcd、API Server、Scheduler
  • 理解大规模集群的挑战和解决方案
  • 设计可扩展的 K8s 架构

进入第九部分:综合实战与面试进阶。