k8s api(官方api)调用(java版)
获取API
在GitHub上找到该项目
下载到Maven仓库
在maven仓库的文件夹里面执行下面代码
git clone --recursive https://github.com/kubernetes-client/java cd java mvn install
这样在maven就可以直接导入给项目(可以在在maven仓库的java文件下面查看是否安装成功) 在pom文件中添加相关依赖
<dependency>
<groupId>io.kubernetes</groupId>
<artifactId>client-java</artifactId>
<version>5.0.0</version>
<scope>compile</scope>
</dependency>
获取K8S集群认证
K8S 需要获取相关认证才能通过api访问,这个认证在K8S集群初始化的时候自动创建。在根目录下面 ~/.kube
然后可以用 sz config 命令 把文件拷贝下来 这个就是访问K8S集群的认证 里面有关于K8S集群的配置认证 现在把配置文件放到java 项目中
编写简单测试代码
import io.kubernetes.client.ApiClient;
import io.kubernetes.client.ApiException;
import io.kubernetes.client.Configuration;
import io.kubernetes.client.apis.CoreV1Api;
import io.kubernetes.client.models.V1Pod;
import io.kubernetes.client.models.V1PodList;
import io.kubernetes.client.util.ClientBuilder;
import io.kubernetes.client.util.KubeConfig;
import java.io.FileReader;
import java.io.IOException;
public class apiClient {
public static void main(String[] args) throws IOException, ApiException {
//读取k8s集群配置文件
String kubeConfigPath = "config";
//加载k8s,confg
//加载群集内配置,包括:
// 1.服务帐户CA.
// 2. service-account bearer-token
// 3.服务帐户命名空间
// 4.来自预设环境变量的主端点(ip,端口)
ApiClient client =
ClientBuilder.kubeconfig(KubeConfig.loadKubeConfig(new FileReader(kubeConfigPath))).build();
//将加载confi的client设置为默认的client
Configuration.setDefaultApiClient(client);
//创建一个api对象
CoreV1Api api = new CoreV1Api();
//打印所有的pod
V1PodList list = api.listPodForAllNamespaces(null, null, null, null, null, null, null, null, null);
for (V1Pod item : list.getItems()) {
System.out.println(item.getMetadata().getName());
}
}
}
运行结果
这样一个简单的api调用就完成了。但是通过api调用的时候,权限比较高。调用不规范,请rm -rf /*
