Kubernetes官方java客戶端之四:內部應用
阿新 • • 發佈:2021-01-06
### 歡迎訪問我的GitHub
[https://github.com/zq2599/blog_demos](https://github.com/zq2599/blog_demos)
內容:所有原創文章分類彙總及配套原始碼,涉及Java、Docker、Kubernetes、DevOPS等;
### 概覽
1. 本文是《Kubernetes官方java客戶端》系列的第四篇,以下提到的java客戶端都是指client-jar.jar;
2. 前文[《Kubernetes官方java客戶端之三:外部應用》](https://blog.csdn.net/boling_cavalry/article/details/107528068)中,咱們開發了一個名為OutsideclusterApplication的SpringBoot應用,該應用並未部署在K8S環境,而是遠端訪問K8S環境內部的API Server,整體結構如下:
![在這裡插入圖片描述](https://img2020.cnblogs.com/other/485422/202101/485422-20210106084032033-33507307.png)
3. 除了前文中部署在外部的方式,還有一種常見場景:使用java客戶端的應用自身也部署在K8S環境中,如下圖所示,名為DemoApplication的SpringBoot應用部署在K8S環境內,呼叫java客戶端庫的API對K8S進行各種操作,整體結構如下:
![在這裡插入圖片描述](https://img2020.cnblogs.com/other/485422/202101/485422-20210106084032305-1975420303.png)
4. 本文的內容就是開發上圖中名為DemoApplication的應用,並且部署在K8S環境中進行驗證;
### 額外準備
- 前文[《Kubernetes官方java客戶端之三:外部應用》](https://blog.csdn.net/boling_cavalry/article/details/107528068)的實戰是一次常規的SpringBoot應用開發,本文的實戰和前文略有不同,您需要對以下知識點有所瞭解:
1. SpringBoot製作成docker映象,首選官方推薦的方式,參考[《體驗SpringBoot(2.3)應用製作Docker映象(官方方案)》](https://blog.csdn.net/boling_cavalry/article/details/106597358)、[《詳解SpringBoot(2.3)應用製作Docker映象(官方方案)》](https://blog.csdn.net/boling_cavalry/article/details/106598189)
2. SpringBoot應用在K8S環境下的探針技術,參考[《掌握SpringBoot-2.3的容器探針:基礎篇》](https://blog.csdn.net/boling_cavalry/article/details/106605264)、[《掌握SpringBoot-2.3的容器探針:深入篇》](https://blog.csdn.net/boling_cavalry/article/details/106606442)、[《掌握SpringBoot-2.3的容器探針:實戰篇》](https://blog.csdn.net/boling_cavalry/article/details/106607225)
### 原始碼下載
1. 如果您不想編碼,可以在GitHub下載所有原始碼,地址和連結資訊如下表所示(https://github.com/zq2599/blog_demos):
| 名稱 | 連結 | 備註|
| :-------- | :----| :----|
| 專案主頁| https://github.com/zq2599/blog_demos | 該專案在GitHub上的主頁 |
| git倉庫地址(https)| https://github.com/zq2599/blog_demos.git | 該專案原始碼的倉庫地址,https協議 |
| git倉庫地址(ssh)| [email protected]:zq2599/blog_demos.git | 該專案原始碼的倉庫地址,ssh協議 |
2. 這個git專案中有多個資料夾,本章的應用在kubernetesclient資料夾下,如下圖紅框所示:
![在這裡插入圖片描述](https://img2020.cnblogs.com/other/485422/202101/485422-20210106084032488-222754474.png)
### 開發K8S環境內的應用:DemoApplication
1. 開啟[《Kubernetes官方java客戶端:準備》](https://blog.csdn.net/boling_cavalry/article/details/107480015)中建立的的kubernetesclient工程,在裡面建立子工程,名為helloworld,這是個SpringBoot工程,pom.xml內容如下:
```xml
```
2. 編寫java程式碼,建立DemoApplication.java,這裡為了簡單起見,將引導類和web controller的程式碼都寫在DemoApplication類中:
```java
package com.bolingcavalry.demo;
import com.google.gson.Gson;
import io.kubernetes.client.openapi.ApiClient;
import io.kubernetes.client.openapi.Configuration;
import io.kubernetes.client.openapi.apis.CoreV1Api;
import io.kubernetes.client.openapi.models.V1PodList;
import io.kubernetes.client.util.Config;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.stream.Collectors;
@SpringBootApplication
@RestController
@Slf4j
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
@RequestMapping(value = "/hello")
pub