
用于 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。列出所有 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());
}
}
}
更多示例可在 examples 文件夹中找到。要运行示例,请执行此命令:
mvn exec:java -Dexec.mainClass="io.kubernetes.client.examples.Example"
所有 API 和模型的文档可在 生成的客户端文档 中找到。
键值:
✓ java-client 与 Kubernetes 版本中的功能和 API 对象完全相同。+ java-client 可能包含 Kubernetes 集群中不存在的功能或 API 对象,但它们共有的部分可以正常工作。- Kubernetes 集群包含 java-client 库无法使用的功能(额外的 API 对象等)。有关 java-client 版本之间的详细变更说明,请参阅 CHANGELOG。
请参阅 CONTRIBUTING.md 了解如何贡献。
参与 Kubernetes 社区需遵守 CNCF 行为准则。
代码由 openapi-generator 项目 生成。
我们构建了通用的跨语言代码生成工具,托管在 kubernetes-client/gen 仓库中。
要开始使用,请在一个 非 你的 java 客户端目录的根目录下,例如你的目录结构可能是:
${HOME}/
src/
gen/
java/
...
然后克隆 gen 仓库,运行:
cd ${HOME}/src
git clone https://github.com/kubernetes-client/gen
export GEN_ROOT=${PWD}
然后更新客户端:
cd ${HOME}/src/java
${GEN_ROOT}/gen/openapi/java.sh kubernetes ./settings
这将会运行一个较长的构建过程,涉及 docker,最终在 kubernetes 目录中生成一组新的代码。
kubectl exec。kubectl port-forward。kubectl attach。kubectl cp。client-java-extended 模块)
| client version | 1.11 | 1.12 | 1.13 | 1.14 | 1.15 | 1.16 |
|---|
| 3.0.0 | ✓ | - | - | - | - | - |
| 4.0.0 | + | ✓ | - | - | - | - |
| 5.0.0 | + | + | ✓ | - | - | - |
| 6.0.1 | + | + | + | ✓ | - | - |
| 7.0.0 | + | + | + | + | ✓ | ✓ |
| 8.0.2 | + | + | + | + | + | ✓ |