Канал Piped Streams и Fabric8 Kubernetes - неверная сумма md5sum скопированного файла и слишком медленная передача

Я пытаюсь реализовать загрузку файлов в стручок Kubernetes. Я решил пойти на kubernetes-клиент Fabric8 и пришел с этим блоком кода:

        try(KubernetesClient client = new DefaultKubernetesClient()) {

        final ExecWatch watch = client
                .pods()
                .inNamespace("default")
                .withName("laughing-pug-jenkins-856f744489-tzjkl")
                .redirectingInput()
                .redirectingError()
                .exec("tar", "xf","-","-C", "/");

        on(watch.getInput()).field("sink").set("buffer", new byte[16384 * 16384]);

        try(final FileInputStream stream = new FileInputStream("/home/x/Development/kubernetes-client/backup/test.file")) {
            final TarArchiveEntry entry = new TarArchiveEntry("/test.file");

            try (TarArchiveOutputStream tarOut = new TarArchiveOutputStream(watch.getInput());
                 ByteArrayOutputStream byteOut = new ByteArrayOutputStream()) {
                IOUtils.copyLarge(stream, byteOut);
                entry.setSize(byteOut.size());
                tarOut.putArchiveEntry(entry);
                byteOut.writeTo(tarOut);
                tarOut.closeArchiveEntry();
            }

        }

Я использую jOOR для рефлексивного изменения размера буфера. Размер буфера по умолчанию приводит к очень медленной передаче файла - он загружает около 1 КБ / с.

Файл загружен, и процесс заканчивается, но сумма md5 обоих файлов не совпадает.

Есть ли способ обойти это? Кажется, что flush() должен быть вызван, но я попробовал это, и это не помогло.

Можно ли реализовать это таким образом, чтобы обеспечить последовательную загрузку файлов с нормальной скоростью?

0 ответов

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