如何用IDEA+maven+kubernetes-client訪問集群以及其中的資源


1.安裝IDEA,不在贅述

2.安裝git,官網安裝,不在贅述

2.安裝maven

maven是一種包管理工具,很方便就可以管理資源的版本以及下載依賴等

安裝maven最好配置一下本地倉庫(常用的jar包下載到本地倉庫中,之后就不要到遠程倉庫中拉取,效率++)

測試maven是否安裝成功,即觀察maven的版本

 

 

 

3.git bash 如下指令

如下指令將kubernetes-client所需要的所有jar包載入本地倉庫中

以下操作執行時間比較長,耐心等待,弄完之后就可以通過在pom.xml文件中直接申明dependencies調用本地倉庫中的jar包

git clone --recursive https://github.com/kubernetes-client/java
cd java
mvn install

 

 

 

4.在maven項目中的pom.xml文件中添加如下依賴,便可以將接口導入到項目中

<dependency>
  <groupId>io.kubernetes</groupId>
  <artifactId>client-java</artifactId>
  <version>10.0.0</version>
</dependency>

導入之后的結果大概是下面這個樣子(這個過程需要幾秒鍾)

 

 

 

5.創建一個java類,測試一下example:

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 test {
    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());
        }
    }
}

然后就掛了:

 6.上面的問題是集群的配置文件沒有導出到windows系統里面

7.安裝xshell7,然后按照下面的博客建立ssh連接

https://blog.csdn.net/liwan09/article/details/108022970?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-3.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-3.control

將虛擬機 中 /root/.kube/config這個文件通過ssh連接傳送到Windows系統下

我是將這個文件先通過下面的指令送到主目錄下面然后再通過ssh連接傳送到windows系統

cp /root/.kube/config /home/randylo/config

然后home目錄下看到這個文件,將這個文件通過sz config 傳遞到windows系統中

 

 將這個文件放在 C:根目錄下,此時的config文件目錄是C:/config

8.構建一個像這樣子的maven項目,然后其中pom.xml中添加如下的dependencies:

<dependency>
      <groupId>io.kubernetes</groupId>
      <artifactId>client-java</artifactId>
      <version>10.0.0</version>
    </dependency>

9.運行一個example,創建java類,然后代碼如下,這個代碼是用來獲取所有的pod的(在這之前保證集群都是Ready的狀態)

package test;

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.ClientBuilder;
import io.kubernetes.client.util.Config;
import io.kubernetes.client.util.KubeConfig;

import java.io.FileReader;
import java.io.IOException;

public class test2 {
    public static ApiClient client=null;
    public static void main(String[] args) throws IOException, ApiException{
        String kubeConfigPath = "C:\\config";
        client = ClientBuilder.kubeconfig(KubeConfig.loadKubeConfig(new FileReader(kubeConfigPath))).build();
        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());
        }
    }
}

然后run,就可以得到如下的結果,可以看到獲得了當前所有的pod名稱

coredns-7ff77c879f-84bzc
coredns-7ff77c879f-l8tmp
etcd-kube-1
kube-apiserver-kube-1
kube-controller-manager-kube-1
kube-flannel-ds-amd64-6sw87
kube-flannel-ds-amd64-bxzwl
kube-flannel-ds-amd64-vcczr
kube-proxy-lp8c7
kube-proxy-pc52q
kube-proxy-vp2nn
kube-scheduler-kube-1

10.如果想要測試其他接口可以參考kubernetes-client的wiki-example,其中也包括很多使用實例

https://github.com/kubernetes-client/java/wiki

 

 

 
       


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM