大规模集群优化
Kubernetes 自 v1.6 以来,官方就宣称单集群最大支持 5000 个节点。不过这只是理论上,在具体实践中从 0 到 5000,还是有很长的路要走,需要见招拆招。
官方标准如下:
- 不超过 5000 个节点
- 不超过 150000 个 pod
- 不超过 300000 个容器
- 每个节点不超过 100 个 pod
Master 节点配置优化
GCE 推荐配置:
- 1-5 节点: n1-standard-1
- 6-10 节点: n1-standard-2
- 11-100 节点: n1-standard-4
- 101-250 节点: n1-standard-8
- 251-500 节点: n1-standard-16
- 超过 500 节点: n1-standard-32
AWS 推荐配置:
- 1-5 节点: m3.medium
- 6-10 节点: m3.large
- 11-100 节点: m3.xlarge
- 101-250 节点: m3.2xlarge
- 251-500 节点: c4.4xlarge
- 超过 500 节点: c4.8xlarge
对应 CPU 和内存为:
- 1-5 节点: 1vCPU 3.75G内存
- 6-10 节点: 2vCPU 7.5G内存
- 11-100 节点: 4vCPU 15G内存
- 101-250 节点: 8vCPU 30G内存
- 251-500 节点: 16vCPU 60G内存
- 超过 500 节点: 32vCPU 120G内存
kube-apiserver 优化
高可用
- 方式一: 启动多个 kube-apiserver 实例通过外部 LB 做负载均衡。
- 方式二: 设置
--apiserver-count
和--endpoint-reconciler-type
,可使得多个 kube-apiserver 实例加入到 Kubernetes Service 的 endpoints 中,从而实现高可用。
不过由于 TLS 会复用连接,所以上述两种方式都无法做到真正的负载均衡。为了解决这个问题,可以在服务端实现限流器,在请求达到阀值时告知客户端退避或拒绝连接,客户端则配合实现相应负载切换机制。