k8s api(官方api)調用(java版)

獲取API

在GitHub上找到該項目 https://github.com/kubernetes-client/java/

下載到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 /*

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章