Replicaset-контроллер зачем нужен burstReplicas - PullRequest
0 голосов
/ 22 января 2020

Я изучаю функцию самовосстановления kubernetes. Я хочу знать значение слова rs c .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
        }
~~~

1 Ответ

1 голос
/ 22 января 2020

Я собираюсь догадаться, что это, на самом деле, ядро ​​kubernetes; текущее состояние в сравнении с желаемым состоянием. И burstReplicas - это количество реплик, которые он может создавать или удалять одновременно.

1.- Проверка того, превышает ли текущее количество модулей желаемое или ниже:

diff := len(filteredPods) - int(*(rs.Spec.Replicas))

2.- Если оно ниже, ему нужно создать стручки. Но сначала он проверит, превышает ли количество стручков, которое вы хотите создать, максимальное или большее количество стручков, которое он может создать (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.- Если оно выше, оно нужно убивать капсулы, но опять же, нужно проверить, не превышает ли количество блокируемых капсул максимально возможное:

} else if diff > 0 {
    if diff > rsc.burstReplicas {
        diff = rsc.burstReplicas
    }
...