Как не пропустить исторические события удаления с помощью часов API

Я реализую пользовательский контроллер ресурсов, используя API часов. Он должен создавать / удалять объекты в aws, когда объекты создаются / удаляются в kubernetes.

Когда он запускает часы, он получает список исторических событий. Однако я заметил, что если объект создается, а затем удаляется, эти события "отменяются" в потоке исторических событий. То есть, когда я запускаю часы, вместо того, чтобы видеть событие ADDED и событие DELETED для данного объекта, я вообще не вижу событий, как будто их никогда не было. Это означает, что если объект удален, когда контроллер не работает, он полностью пропустит это событие удаления при запуске резервного копирования.

Для контроллеров, которым необходимо выполнить действие при удалении объекта kubernetes (например, при удалении объекта в AWS), какой метод рекомендуется? Есть ли способ заставить kubernetes хранить события DELETED? Ожидается ли, что контроллеры будут работать, опрашивая список всех объектов во всех пространствах имен, а не используя watch API?

1 ответ

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

Если вы полагаетесь только на просмотр мгновенных событий, таких как CREATE и DELETE, рано или поздно вы получите несинхронизированные системы.

Единственный надежный источник информации о событиях в Kubernetes apiserver, который я могу себе представить, - это журнал аудита.

Другие вопросы по тегам