Я использую клиент python kubernetes для управления развертыванием ресурсов. Я хотел бы опрашивать состояние нескольких ресурсов одновременно, чтобы обеспечить обратную связь почти в реальном времени о том, когда данный набор ресурсов доступен. Сейчас мне приходится запрашивать каждый ресурс индивидуально, что кажется чрезмерным в системе, где каждый устанавливать ресурсов масштабируется N пользователями (так, если есть 6 ресурсов, будет N (6) запросов на проверку статуса).
Есть ли способ запросить API и получить статус всех ресурсов, соответствующих заданному селектору меток? Если нет, то есть ли другой подход, который мне следует рассмотреть?
получить статус всех ресурсов, соответствующих заданному селектору меток?
Я начал с того, что увидел, как kubectl
делает это, потому что на достаточно высоком уровне детализации он показывает фактические базовые HTTP-транзакции:
kubectl --v=8 get deploy,pod -l app.kubernetes.io/name=something
кажется, выпускает два отдельных GET
вызовы, поэтому я считаю, что он просто запускает их одновременно, а затем ожидает потоков.
Что касается второй половины вашего вопроса,
kubectl --v=8 get all -l app.kubernetes.io/name=something
делает то же самое, что и версия CSV, но вместо этого, похоже, делает что-то вроде kubectl api-resources
(или, возможно, имеет жестко запрограммированный список того, что он считает all
?) и затем делает то же самое: добавление нескольких GET
в полете и в ожидании ниток
Возможно, вам будет интересно узнать, как kubectl rollout status
работает, чтобы посмотреть, поможет ли это вам. Я также пробовал добавить --watch
к get all
и был проинформирован:
F0730 21: 55: 36.819494 2887268 helpers.go: 115] ошибка: вы можете указать только один тип ресурса