Kubernetes pod планирует выселение pod к узлу уже под DiskPressure - PullRequest
3 голосов
/ 03 мая 2019

Мы работаем с кластером kubernetes (1.9.4) с 5 мастерами и 20 рабочими узлами.Мы запускаем один модуль с сохранением состояния с репликацией 3 среди других модулей в этом кластере.Первоначально пакеты с состоянием установлены на 3 узла.Однако pod-2 на узле-2 был удален из-за давления диска на узле-2.Однако, когда модуль pod-2 был удален, он перешел к узлу-1, где модуль pod-1 уже работал, а узел-1 уже испытывал давление узла.Согласно нашему пониманию, планировщик kubernetes не должен был запланировать pod (не критично) для узла, где уже есть давление на диск.Является ли это поведением по умолчанию, чтобы не планировать блоки для узла под давлением диска, или это разрешено.Причина в том, что в то же время мы наблюдаем узел 0 без каких-либо проблем с диском.Поэтому мы надеялись, что выселенный модуль на узле-2 в идеале должен прийти на узел-0 вместо узла-1, который находится под давлением диска.

Другое наблюдение, которое мы имели, было, когда модуль-2 на узле-2 было удалено, мы видим, что тот же модуль успешно запланирован и создан и перешел в рабочее состояние в узле-1.Однако мы все еще видим ошибку «Не удалось допустить модуль» в узле-2 много раз для того же модуля-2, который был удален.Это какая-то проблема с kube-планировщиком.

1 Ответ

0 голосов
/ 14 июня 2019

Да, планировщик не должен назначать новый модуль узлу с условием DiskPressure.

Однако я думаю, что вы можете подойти к этой проблеме под несколькими разными углами.

  1. Просмотрите конфигурацию вашего планировщика:

    • ./kube-scheduler --write-config-to kube-config.yaml

и убедитесь, что он требует каких-либо настроек.Вы можете найти информацию о дополнительных опциях для kube-планировщика здесь :

Вы также можете настроить дополнительный планировщик (и) в зависимости от ваших потребностей.Учебник для этого можно найти здесь

Проверьте журналы:

  • kubeclt logs: журналы событий kube-планировщика
  • journalctl -u kubelet: бревна кубелета
  • /var/log/kube-scheduler.log (на мастере)

Присмотритесь к порогам выселения Кубелета (мягкий и жесткий)и какой объем памяти узла установлен.

Имейте в виду, что:

  • Kubelet может не замечать достаточно быстрое давление ресурсов или
  • Kubelet может высвободить больше Стручков, чем необходимо из-запромежуток времени сбора статистики

Пожалуйста, ознакомьтесь с моими предложениями и дайте мне знать, если они помогли.

...