Eviction
Eviction ініціює процес виселення, який в ідеалі повинен призвести до коректного виселення .spec.target (наприклад, завершення поду).
Контролер evictionrequest спостерігає за намірами всіх EvictionRequest і перетворює їх на Eviction. Він керує життєвим циклом Eviction. Запитувачі зберігаються в .status.requesters навіть після відкликання їхнього запиту. Якщо всі запитувачі відкличуть свій намір виселення для спільної цілі, виселення буде скасовано. Після видалення всіх EvictionRequest, що відповідають .spec.target цього Eviction, обʼєкт Eviction врешті-решт буде прибрано збирачем сміття.
Якщо ціллю є под, .status.targetResponders заповнюється з Pod.spec.evictionResponders.
Відповідачі повинні спостерігати та спілкуватися через .status, щоб допомогти з виселенням цілі, коли вони бачать свій стан == Active у .status.targetResponders. Структура ResponderStatus потім повинна періодично оновлюватися для вказівки прогресу або завершення процесу виселення кожним відповідачем у .status.responders. Якщо .status.responders[].heartbeatTime не оновлюється протягом терміну heartbeat, визначеного API Eviction (наразі 20 хвилин), виселення передається наступному відповідачу з нижчим пріоритетом.
Якщо інших відповідачів немає і ціллю є под, останній типовий імперативний відповідач imperative-eviction.k8s.io/evictor з пріоритетом 100 виселить под за допомогою імперативного API Eviction (pods/<name>/eviction subresource).