Потоковые журналы модуля из kubernetes через API-интерфейс kubernetes - PullRequest
0 голосов
/ 03 марта 2020

, поэтому я использую следующий API-интерфейс kubernetes для потоковой передачи логов текущего запущенного модуля в моем кластере kubernetes (я не хочу использовать kubectl, так как мне нужно вызывать этот API из кода приложения):

GET /api/v1/namespaces/{namespace}/pods/{name}/log

Это задокументировано здесь https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.10/#read -log

Я передаю параметр "follow = true" в вызове API, поскольку я в основном хочу отправить запрос API-интерфейс kubernetes, оставляйте соединение открытым, и API-интерфейс kubernetes постоянно отправляет мне логи, по крупицам. Когда я использую kubectl, чтобы сделать то же самое, я использовал параметр verbose и обнаружил, что все, что он действительно делает, это отправляет один запрос с использованием вышеуказанного API (с follow = true), и журналы возвращаются обратно.

Когда kubectl делает это, он просто отправляет один запрос, подобный описанному выше, и может передавать его обратно, и он не использует кодирование передачи и т.п. или как-то в этом роде ... Как я могу эмулировать это из кода уровня приложения ? Когда я пытаюсь сделать это в своем коде приложения (я использую java), он ожидает полного завершения запроса, прежде чем сможет распечатать журналы. Для справки вот мой код:

    PodLogStreamer podLogStreamer = new PodLogStreamer();
    InputStream is = podLogStreamer
            .getLogStream("asdf", "asdfasd", "asdfas");

    BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(is));

    String line;
    while ((line = bufferedReader.readLine()) != null && !line.equals("ENDLOGS")) {
        System.out.println(line);
        Thread.sleep(100);
    }

    bufferedReader.close();

PodLogStreamer () - это класс, который я создал, который просто вызывает API выше, как я упоминал ранее. Есть ли способ запросить со стороны клиента, что сервер API kubernetes должен поддерживать постоянное соединение и передавать журналы обратно?

...