Kubernetes大规模集群
Kubernetes资源限制
Kubernetes 单个集群支持的最大节点数为 5,000。Kubernetes标准的配置:
- 每个节点的 Pod 数量不超过 110
- 节点数不超过 5,000
- Pod 总数不超过 150,000
- 容器总数不超过 300,000
你可以通过添加或删除节点来扩展集群。集群扩缩的方式取决于集群的部署方式
以下集群规划是从外到内实现
Kubernetes集群设计
多云设计
- 方案一,多个可用区组成高可用Kubernetes业务集群,可以解决以下风险
- Kubernetes升级造成的未知风险
- Kubernetes业务集群瘫痪、脑裂等问题
- Kubernetes调度故障、服务故障、环境问题等
- 方案二,IDC+公有云方式,需要企业IDC与公有云机房建立专线连接,使其符合企业业务可接受的响应时间
业务集群
当企业业务规模很大,通常会按业务线、业务关联性、业务核心级别等其它属性创建独立的集群,提高业务可用性,服务快速响应
控制面组件
控制面组件高可用,Kubernetes支持控制面组件跨多个failure zones,是一个region的逻辑隔离区域,公有云厂商称之为可用区,在不同的可用区提供相同的服务(Kubernetes控制面组件,APIServer、Controller manager、scheduler manager)
ETCD
https://v1-27.docs.kubernetes.io/zh-cn/docs/setup/best-practices/cluster-large/#etcd-storage
”https://v1-27.docs.kubernetes.io/zh-cn/docs/setup/production-environment/tools/kubeadm/ha-topology/#stacked-etcd-topology“
如果希望ETCD与Kubernetes控制面组件独立,可以独立部署,提高节点故障冗余性
Kubernetes节点冗余
根据可用区设计服务高可用
在企业S级服务运行的Kubenetes node可以分布在不同的公有云可用区,这些节点打应用服务标签,运行企业核心服务以此提高服务的高可用性
如果你的集群跨了多个可用区或者地理区域,你可以使用节点标签,结合 Pod 拓扑分布约束 来控制如何在你的集群中多个失效域之间分布 Pods。这里的失效域可以是 地理区域、可用区甚至是特定节点。 这些提示信息使得调度器 能够更好地分布 Pods,以实现更好的可用性,降低因为某种失效给整个工作负载 带来的风险
根据服务资源的特性设计
在不同的可用区定义不同的规格的服务器(高IO型、计算型、内存型、通用型)打上对应的标签,实现不同类型的服务调度到所需要的资源类型节点
根据服务类型划分节点分类
企业服务经常会有前端服务、后端服务、基础服务、数据库等,根据服务功能为节点打不同的标签,实现不同类型的服务被调度不同的节点上