golang получить ресурсы kubernetes (30000+ конфигурационных карт) не удалось - PullRequest
1 голос
/ 08 мая 2020

Я хочу использовать client- go для получения ресурсов в кластере Kubernetes. Из-за большого количества данных, когда я получаю, соединение configmap закрывается.

stream error when reading response body, may be caused by closed connection. Please retry. Original error: stream error: stream ID 695; INTERNAL_ERROR

configmaps:

$ kubectl -n kube-system get cm |wc -l
   35937

код:

cms, err := client.CoreV1().ConfigMaps(kube-system).List(context.TODO(), v1.ListOptions{})

Я пытаюсь Чтобы использовать параметр Limit, я могу получить некоторые данные, но не знаю, как получить все.

cms, err := client.CoreV1().ConfigMaps(kube-system).List(context.TODO(), v1.ListOptions{Limit: 1000 })

Я новичок в Go. Мы будем очень благодарны за любые указания относительно того, как go об этом.

1 Ответ

2 голосов
/ 08 мая 2020

В документации для v1.ListOptions описывается, как это работает:

limit - это максимальное количество ответов, возвращаемых для вызова списка. Если существует больше элементов, сервер установит в поле continue в метаданных списка значение, которое можно использовать с тем же начальным запросом для получения следующего набора результатов.

Это означает, что вам следует изучить ответ, сохранить значение поля continue (а также фактические результаты), затем повторно ввести ту же команду, но с continue, установленным на увиденное значение. Повторяйте до тех пор, пока возвращаемое поле continue не станет пустым (или не возникнет ошибка).

Подробную информацию об обработке фрагментов больших результатов см. На странице API .

...