Как я могу получить все объекты Kubernetes в виде моментального снимка и потокового изменения?Python

Программы на Python
Anonymous
Как я могу получить все объекты Kubernetes в виде моментального снимка и потокового изменения?

Сообщение Anonymous »

Я пытаюсь найти «правильный» способ отслеживания изменений на сервере API Kubernetes, когда мне также необходимо сохранять снимки существующих объектов.
Мне нужно, чтобы мой код знал, когда он получил все объекты изначально, т. е. мне нужно, чтобы он имел полный снимок перед завершением инициализации и сообщением о готовности. И затем мне нужно, чтобы он транслировал изменения по мере их возникновения.
Я могу как получить снимок, так и передать изменения, но не могу понять, как передавать в потоковом режиме только те изменения, которые произошли после моментального снимка.
Я пытался использовать ресурсVersion, сохраняя числовую максимальную версию ресурса, а затем передавая ее в часы:

Код: Выделить всё

# self._resource_version holds the int maximum
# resourceVersion from previous requests
kwargs = {} if self._resource_version is None else {"resource_version": self.resource_version}
w = watch.Watch()
async for event in w.stream(api.list_custom_object_for_all_namespaces, self._group, self._version, self._kind, **kwargs):
# ...

Но это сразу же приводит к ошибке:

Код: Выделить всё

kubernetes_asyncio.client.exceptions.ApiException: (410)
Reason: Expired: too old resource version: 13661954 (14468401)
Обратите внимание, что я извлекаю все типы ресурсов для всех пространств имен.
Как я могу отслеживать изменения, которые происходят после исходного снимка, не передавая одновременно все из исходного снимка?

Вернуться в «Python»