Java 客户端库,用于与 Kubernetes API 交互,支持以编程方式管理集群、Pod、部署及其他资源,并提供身份验证、Watch、Exec 和端口转发操作。
用于 kubernetes API 的 Java 客户端。
Java 客户端采用 Semantic Versioning(语义化版本控制)。每当为新的 Kubernetes 版本重新生成客户端时,我们会递增主版本号(见下表)。每次这样做都会新增 API,并且生成的 Kubernetes API 存根中可能包含破坏性变更。升级主版本时,请做好应对潜在破坏性变更的准备。
要将 Java 客户端库安装到本地 Maven 仓库,只需执行:
git clone --recursive https://github.com/kubernetes-client/java
cd java
mvn install
更多信息请参考 官方文档。
将此依赖添加到项目的 POM 文件中:
<dependency>
<groupId>io.kubernetes</groupId>
<artifactId>client-java</artifactId>
<version>8.0.2</version>
</dependency>
compile 'io.kubernetes:client-java:8.0.2'
首先执行以下命令生成 JAR 文件:
git clone --recursive https://github.com/kubernetes-client/java
cd java/kubernetes
mvn package
然后手动安装以下 JAR 文件:
我们为常见用例准备了几个示例,如下所示:
kubectl patch。kubectl get <resource> -w。kubectl logs。kubectl exec。kubectl port-forward。kubectl attach。kubectl cp。client-java-extended 模块)
列出所有 Pod:
import io.kubernetes.client.openapi.ApiClient;
import io.kubernetes.client.openapi.ApiException;
import io.kubernetes.client.openapi.Configuration;
import io.kubernetes.client.openapi.apis.CoreV1Api;
import io.kubernetes.client.openapi.models.V1Pod;
import io.kubernetes.client.openapi.models.V1PodList;
import io.kubernetes.client.util.Config;
import java.io.IOException;
public class Example {
public static void main(String[] args) throws IOException, ApiException{
ApiClient client = Config.defaultClient();
Configuration.setDefaultApiClient(client);
CoreV1Api api = new CoreV1Api();
V1PodList list = api.listPodForAllNamespaces(null, null, null, null, null, null, null, null, null);
for (V1Pod item : list.getItems()) {
System.out.println(item.getMetadata().getName());
}
}
}
监视命名空间对象:
import com.google.gson.reflect.TypeToken;
import io.kubernetes.client.openapi.ApiClient;
import io.kubernetes.client.openapi.ApiException;
import io.kubernetes.client.openapi.Configuration;
import io.kubernetes.client.openapi.apis.CoreV1Api;
import io.kubernetes.client.openapi.models.V1Namespace;
import io.kubernetes.client.util.Config;
import io.kubernetes.client.util.Watch;
import java.io.IOException;
public class WatchExample {
public static void main(String[] args) throws IOException, ApiException{
ApiClient client = Config.defaultClient();
Configuration.setDefaultApiClient(client);
CoreV1Api api = new CoreV1Api();
Watch<V1Namespace> watch = Watch.createWatch(
client,
api.listNamespaceCall(null, null, null, null, null, 5, null, null, Boolean.TRUE, null, null),
new TypeToken<Watch.Response<V1Namespace>>(){}.getType());
for (Watch.Response<V1Namespace> item : watch) {
System.out.printf("%s : %s%n", item.type, item.object.getMetadata().getName());
}
}
}