springboot调用kubernetes-client方法填坑
引入步骤:
1.构建springboot工程
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.7</version>
<relativePath/>
</parent>
注意:这里使用的版本号:2.6.7,当前2.*的最新版,尝试过使用2.1.5-RELEASE和3.0.0-M2等版本,均不适用
2.添加kubernetes-client工程
<dependency>
<groupId>io.kubernetes</groupId>
<artifactId>client-java</artifactId>
<version>14.0.0</version>
</dependency>
注意:当前所使用的14.0.0是最新版工程,因为实际部署的kubernetes版本为1.22.0版本,看了一下版本表对应关系,发现14.0.0最合适,当然最新版有15.0.1,暂未尝试。
3.构建kubernetes config类
public ApiClient getConnection() {
try {
client = Config.defaultClient();
} catch (IOException e) {
e.printStackTrace();
return null;
}
Configuration.setDefaultApiClient(client);
return client;
}
4.构建调用list的方法进行尝试
public static void main(String[] args) throws IOException, ApiException{
K8sConfig config = new K8sConfig();
ApiClient client = config.getConnection();
CoreV1Api api = new CoreV1Api();
V1PodList podlist = api.listPodForAllNamespaces(null, null, null, null, null, null, null, null, null, null);
for (V1Pod item : podlist.getItems()) {
System.out.println(item.getMetadata().getName());
}
}
5.拷贝环境变量
将k8s master中的~/.kube/config拷贝到本地(相应node)的~/.kube文件夹下
6.设置hosts
执行hosts需要查看config文件中的api-server的hosts
本文需要设置的域名为:apiserver.cluster.local
7.再次尝试调用步骤4中的方法,通过。