Как использовать автоматическое поведение в kubernetes? - PullRequest
0 голосов
/ 27 января 2020

Я читаю следующую документацию . Я хочу понять, как использовать behavior

Одна или несколько политик масштабирования могут быть указаны в разделе поведения spe c. Если указано несколько политик, политика, которая допускает наибольшее количество изменений, является политикой, выбранной по умолчанию. В следующем примере показано такое поведение при уменьшении масштаба:

behavior:
  scaleDown:
    policies:
    - type: Pods
      value: 4
      periodSeconds: 60
    - type: Percent
      value: 10
      periodSeconds: 60

Когда число модулей превышает 40, вторая политика будет использоваться для уменьшения. Например, если имеется 80 реплик и цель должна быть уменьшена до 10 реплик, то на первом этапе 8 реплик будут сокращены. На следующей итерации, когда количество реплик равно 72, 10% модулей равно 7,2, но число округляется до 8. На каждом l oop контроллера автоматического масштабирования количество изменяемых модулей пересчитывается на основе на количество текущих реплик. Когда количество реплик падает ниже 40, применяется первая политика (Pod), и 4 реплики будут сокращаться за раз. ...

Я понял, что когда автоскалер решает уменьшить масштаб - он уменьшает количество реплик на 10% порциями из-за правила:

- type: Percent
  value: 10
  periodSeconds: 60

, но я не могу понять смысл первого правила. Не могли бы вы уточнить?
Как можно иметь 80 узлов, когда у нас есть такой конфиг? Как можно иметь 80 узлов, если kubernetes начинает уменьшать количество узлов каждый раз, когда у нас> 40 узлов

1 Ответ

2 голосов
/ 27 января 2020

Как можно иметь 80 узлов, когда у нас есть такой конфиг?

Пример (в документации, на которую вы ссылаетесь) говорит о 80 пакетах, но это просто случайное число для иллюстрации конкретного примера.

Как можно иметь 80 узлов, если kubernetes начинает уменьшать количество узлов каждый раз, когда у нас> 40 узлов

Не каждый раз. Он начинает уменьшать количество модулей, только если / когда Autoscaler решает уменьшить масштаб.

Я понял, что когда Autoscaler решает уменьшить масштаб - это уменьшает количество повторений на 10% порциями

Вы правы, что в документации описан случай, когда было 80 модулей, и из-за отсутствия нагрузки пришло время "спустить" кластер для уменьшения количества модулей.

но я могу ' не понимаю смысла первого правила. Не могли бы вы уточнить?

Позволяет go пройти через него еще раз.

behavior:
  scaleDown:
    policies:
    - type: Pods
      value: 4
      periodSeconds: 60
    - type: Percent
      value: 10
      periodSeconds: 60

Здесь вы можете увидеть две политики. А именно Pods и Percent. Когда указано несколько политик, политика, которая допускает наибольшее количество изменений, является политикой, выбранной по умолчанию.

Именно поэтому в случае, если имеется 80 модулей, и система должна уменьшить масштаб, скажем до 10, она проверяет сколько модулей можно отключить с помощью каждой политики.

Pods позволяют отключать только 4 модуля за раз, тогда как Percent 80Pods * 10Percent = 8Pods. Выигрывает Percent, 8 Боксов отключаются, 72 Блока уходят, и процесс начинается снова.

На этот раз Percent позволяет отключить 72 * 0,1 = 7,2 стручка. Все еще больше 4. Значение округляется до 8. Поэтому 10% живых модулей снова закрываются. 72-8 = осталось 64 стручка.

На каждом l oop контроллера автомасштабера количество заменяемых модулей пересчитывается на основе количества текущих реплик.

Таким образом, прогресс будет равен 80 (-8) -> 72 (-8) -> 64 (-7) -> 57 (-6) -> 51 (-6) - -> 45 (-5) -> 40

Когда количество реплик падает ниже 40, применяется первая политика Pods и одновременно сокращаются 4 реплики.

С Осталось 40 стручков, и Pods, и Percent - это примерно 4 стручка.

36 стручков осталось, 10% - это 3,6 стручка (до округления), что определенно меньше 4 стручков по первому правилу. Pods выигрывает, 4 стручка выключаются.

Ход будет примерно 36 (-4) -> 32 (-4) -> 28 ... и т. Д.

Надеюсь, это поможет! :)

...