https://github.com/zq2599/blog_demosjava
內容:全部原創文章分類彙總及配套源碼,涉及Java、Docker、Kubernetes、DevOPS等;git
<dependency> <groupId>io.kubernetes</groupId> <artifactId>client-java</artifactId> <version>8.0.2</version> <scope>compile</scope> </dependency>
本文是《Kubernetes官方java客戶端》系列的第一篇,主要內容是瞭解概念,再爲後續章節的作好準備工做;程序員
回想我們一般是如何操做K8S環境的,例如部署deployment,能夠在dashboard頁面上傳yaml文件,也能在SSH終端執行kubectl命令,這些操做的去向都是K8S的API Server,以下圖:
github
從上圖可見,若是能把請求發送到API Server,就能夠像kubectl命令那樣操做K8S了,K8S官方java客戶端(Kubernetes Java Client)就是擁有這樣能力的SDK,使得java應用擁有kubectl那樣的能力,以下圖所示,加載了K8S官方java客戶端庫的SpringBoot應用,能夠直接將請求發送到K8S環境:
spring
《Kubernetes官方java客戶端》是以實戰爲主的系列文章,爲了後面實戰順利進行,會在本章進行準備工做,包括硬件、軟件、配置等方面,接下來會逐一列出;shell
我這邊用來編碼的環境以下:數據庫
編碼完成後要運行在K8S環境,該環境只有一臺CentoOS電腦,信息以下:apache
kubectl create namespace kubernetesclient
apiVersion: v1 kind: ServiceAccount metadata: name: kubernates-client-service-account namespace: kubernetesclient --- kind: ClusterRoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: name: kubernates-client-cluster-role-binding subjects: - kind: ServiceAccount name: kubernates-client-service-account namespace: kubernetesclient roleRef: kind: ClusterRole name: cluster-admin apiGroup: rbac.authorization.k8s.io
由於項目中用到了Slf4j註解,請在IEDA上安裝lombok插件,不然編寫log相關代碼的時候會有紅叉:
api
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.3.1.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.bolingcavalry</groupId> <artifactId>kubernetesclient</artifactId> <version>1.0-SNAPSHOT</version> <packaging>pom</packaging> <modules> <module>helloworld</module> <module>outsidecluster</module> </modules> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> <exclusions> <exclusion> <groupId>org.junit.vintage</groupId> <artifactId>junit-vintage-engine</artifactId> </exclusion> </exclusions> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>io.kubernetes</groupId> <artifactId>client-java</artifactId> <version>7.0.0</version> <scope>compile</scope> </dependency> </dependencies> </dependencyManagement> </project>
因爲這是個父工程,所以目前除了pom.xml暫時沒有其餘內容,後面的實戰會往裏面添加子工程;springboot
名稱 | 連接 | 備註 |
---|---|---|
項目主頁 | https://github.com/zq2599/blog_demos | 該項目在GitHub上的主頁 |
git倉庫地址(https) | https://github.com/zq2599/blog_demos.git | 該項目源碼的倉庫地址,https協議 |
git倉庫地址(ssh) | git@github.com:zq2599/blog_demos.git | 該項目源碼的倉庫地址,ssh協議 |
微信搜索「程序員欣宸」,我是欣宸,期待與您一同暢遊Java世界...
https://github.com/zq2599/blog_demos