使用Storage API从Kubernetes部署的Google Cloud Bucket连接

问题描述 投票:0回答:2

我们在Kubernetes集群部署中运行了一个Java应用程序。我们将Google Cloud Bucket用作存储空间。我们使用Java Files.move方法将文件从我们的持久卷声明(PVC)移动到存储桶:

import java.nio.file.Files;

Files.move(source, target, StandardCopyOption.REPLACE_EXISTING)

但是我们的写入性能很差。因此,我们尝试探索Google Cloud Storage API将文件从我们的PVC移动到桶中。

try {
    log.info("before getService");

    Storage storage = StorageOptions.newBuilder()
            .setCredentials(GoogleCredentials.create(aToken)).build()
            .getService();

    // aToken is the access token of the service account

    log.info("after getService");
} catch (Exception e) {
    log.error("Error while creating storage object - ", e);
}

但只有“在getService之前”才会被记录。之后没有任何事情发生。没有异常被抛出。该过程陷入getService()

相同的应用程序适用于使用Google Storage Bucket进行本地部署,但不适用于Kubernetes部署。

kubernetes google-cloud-storage google-kubernetes-engine
2个回答
1
投票

对我来说,更新Google Storage API的版本解决了这个问题。在我的Gradle构建文件中,我使用的是1.36,在切换到1.42之后,它运行正常。


0
投票

问题是由于pom.xml中的api版本号(我们正在使用Maven)。在pom.xml中对版本1.23.0进行更改解决了这个问题。

    <dependency>
        <groupId>com.google.api-client</groupId>
        <artifactId>google-api-client</artifactId>
        <version>1.23.0</version>
    </dependency>
    <dependency>
        <groupId>com.google.http-client</groupId>
        <artifactId>google-http-client</artifactId>
        <version>1.23.0</version>
    </dependency>
    <dependency>
        <groupId>com.google.oauth-client</groupId>
        <artifactId>google-oauth-client-jetty</artifactId>
        <version>1.23.0</version>
    </dependency>
© www.soinside.com 2019 - 2024. All rights reserved.