獲取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 /*