1. 计算公式及含义
coredns副本数计算公式:
replicas = max( ceil( cores × 1/coresPerReplica ) , ceil( nodes × 1/nodesPerReplica ) )
其中
- cores:表示集群中的总核心数。
- coresPerReplica:每个副本所需的核心数。
- nodes:集群中的节点总数。
- nodesPerReplica:每个副本所需的节点数。
- ceil:向上取整函数,即取不小于该数的最小整数。
公式含义:在保证每个副本有足够的核心和节点资源的前提下,尽可能多地创建副本以提高系统的可用性或负载能力。这样的计算可以帮助自动扩展服务或应用程序,确保其能够有效地利用集群资源。
2. 计算公式推导
集群中coredns由dns-autoscaler控制dns的水平自动扩缩容,查看dns-autoscaler配置
eg:集群节点包括3个master、3个etcd、node节点4797个,其中master节点配置为 96C192G,etcd节点配置为8C32G,node节点2C4G
则总核心数cores:
cores = 3 * 96 + 3 * 8 + 4797 * 2 = 9906
以5000节点测试集群为例,已知当前集群总核心数cores=9906,节点数nodes=4803,每个副本所需核心数coresPerReplica当前配置为256,每个副本所需节点数nodesPerReplica当前配置为16.
则有
replicas = max( ceil( cores * 1/coresPerReplica ) , ceil( nodes * 1/nodesPerReplica ) )
= max(ceil(9906 * 1/256), ceil(4803 * 1/16))
= max(ceil(38.695), ceil(300.188))
= max(39,301)
= 301
因此,当前集群coredns数量为301个,验证:
3. dns水平自动扩缩容工作原理
扩容参数和数据会基于ConfigMap提供给autoscaler,每次轮询时刷新参数表,以与最近期望的扩缩参数保持一致。
提供了两种控制模式:Linear和Ladder