Я тестирую свое приложение на чистом кластере Kubernetes (версия 1.22.1), и у меня возникла проблема при запуске моего приложения в качестве задания.
В моем кластере два узла (главный и рабочий), но рабочий оцеплен. На главном узле для приложения доступно 21 ГБ памяти.
Я попытался запустить свое приложение как три разных задания одновременно. Поскольку я установил 16 ГБ памяти как для запроса ресурсов, так и для ограничения, было запущено только одно задание, а остальные два находятся в состоянии ожидания. Я установил backoffLimit: 0 для рабочих мест.
ИМЯ ГОТОВ СТАТУС ПЕРЕЗАПУСКА ВОЗРАСТ
app1--1-8pp6l 0/1 В ожидании 0 42 с
app2--1-42ssl 0/1 В ожидании 0 45 с
app3--1-gxgwr 0/1 Выполняется 0 46 с
После завершения первого модуля следует запустить только один из двух модулей, находящихся в состоянии ожидания. Однако один был запущен, а другой находился в состоянии OutOfMemory, несмотря на то, что в поде не было запущено ни одного контейнера.
ИМЯ ГОТОВ СТАТУС ПЕРЕЗАПУСКА ВОЗРАСТ
app1--1-8pp6l 0/1 Выполняется 0 90 с
app2--1-42ssl 0/1 OutOfmemory 0 93 с
app3--1-gxgwr 0/1 Завершено 0 94 с
События OutOfMemory Pod следующие:
События:
Тип Причина Возраст от сообщения
---- ------ ---- ---- -------
Предупреждение FailedScheduling 3m41s (x2 over 5m2s) планировщик по умолчанию Доступно 0/2 узла: 1 Недостаточно памяти, 1 узел (узлы) не удалось запланировать.
Обычный Запланировано 3 м 38 с Планировщик по умолчанию Успешно назначен test/app2--1-42ssl для мастера
Предупреждение OutOfmemory 3m38s kubelet Узлу не хватило ресурса: памяти, запрошено: 16000000000, использовано: 31946743808, емкость: 37634150400
Кажется, что Pod назначен узлу, хотя для него недостаточно места, так как другой Pod только что был запущен.
Я предполагаю, что это не ожидаемое поведение Kubernetes, кто-нибудь знает причину этой проблемы?