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