kubernetes - Replicaset-controller 为什么需要burstReplicas
问题描述
我正在研究 Kubernetes 自愈功能。我想知道 rsc.burstReplicas 的含义
func (rsc *ReplicaSetController) manageReplicas(filteredPods []*v1.Pod, rs *apps.ReplicaSet) error {
diff := len(filteredPods) - int(*(rs.Spec.Replicas))
rsKey, err := controller.KeyFunc(rs)
if err != nil {
utilruntime.HandleError(fmt.Errorf("Couldn't get key for %v %#v: %v", rsc.Kind, rs, err))
return nil
}
if diff < 0 {
diff *= -1
if diff > rsc.burstReplicas {
diff = rsc.burstReplicas
}
~~~
解决方案
我猜这实际上是 Kubernetes 的核心。当前状态与期望状态。burstReplicas
是它可以一次创建或删除的副本数量。
1.- 检查当前的 pod 数量是否高于或低于预期:
diff := len(filteredPods) - int(*(rs.Spec.Replicas))
2.- 如果低于,则需要创建 pod。但首先它将检查您要创建的 pod 数量是否高于或低于它可以创建的最大 pod 数量(500)。
if diff < 0 {
diff *= -1
if diff > rsc.burstReplicas { # If you need more then 500 pods,
diff = rsc.burstReplicas # it is going to create 500.
} # Then, will check again
3.- 如果超过,则需要杀死 pod,但同样,它需要检查它需要杀死的 pod 数量是否高于它可以杀死的最大值:
} else if diff > 0 {
if diff > rsc.burstReplicas {
diff = rsc.burstReplicas
}
推荐阅读
- angular - 将填充有字符串的模型解析为另一个填充有日期的模型
- javascript - 如何将 HTML 元素值设置为用户输入的值
- c++ - 将无符号整数分配给宽度较小的有符号整数时会发生什么?
- learning-locker - 多个代理的活动查询语句
- eclipse - 如何使用 JDK 11/Maven/Eclipse IDE 运行 JavaFX 应用程序
- sql-server - 如何在使用 Oracle DB 和 SQL Server DB 之间切换实体框架?
- jquery - 使用多个模型时的 Asp.net Core 发布表单数据
- c# - XmlSerializer 忽略来自 ISerializable 的 GetObjectData()
- wordpress - “#_no-deeplink-found_”自动附加到主页网址
- c++ - 为琐碎的赋值和析构函数提升无锁队列断言