1. 程式人生 > >Kubernetes官方java客戶端之四:內部應用

Kubernetes官方java客戶端之四:內部應用

### 歡迎訪問我的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