- 开发工具:IntelliJ IDEA 2019.3.2 (Ultimate Edition)
运行环境
编码完成后要运行在K8S环境,该环境只有一台CentoOS电脑,信息如下:
-
操作系统:CentOS Linux release 7.8.2003
-
K8S:1.15.3
选定client-java版本
- K8S有多个版本,java客户端也有多个版本,用的时候如何选择呢?请参考官方给出的兼容性列表:
- 如上图,横向是K8S版本,纵向是java客户端版本,表格中有三种符号,含义如下:
-
✓ 表示从特性到API,客户端和K8S环境都匹配;
-
+ 表示客户端有些特性和API与K8S环境无法匹配,但是他们共有的特性和API都能正常运行;
-
- 表示当前K8S环境上有些特性和API是客户端无法提供的;
-
我的K8S版本是1.15,可见7.0.0版本的客户端是最合适的,后续的实战中也就选用该版本了,请您根据自己K8S的情况选择对应版本;
SpringBoot应用操作权限
-
后面的实战中,咱们的SpringBoot应用会以Pod的形式运行在K8S环境,通过client-java的API操作K8S,而K8S自然不会允许Pod随意对环境中的pod、deployment这些资源进行操作,因此我们要遵照K8S的规范进行RBAC相关的操作;
-
K8S的角色设置可以非常详细,但也会更复杂,咱们还是不要花太多时间在这上面吧,这里我选择了使用K8S自带的最高权限的角色:cluster-admin,您可以按照自己的实际情况定制角色,下面是具体操作;
-
SSH登录K8S,创建namespace:
kubectl create namespace kubernetesclient
- 创建文件rbac.yaml,内容如下:
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
- 今后的实战中,SpringBoot应用都会部署在名为kubernetesclient的namespace之下,使用名为kubernates-client-service-account的Service Account;
IEDA安装插件
因为项目中用到了Slf4j注解,请在IEDA上安装lombok插件,否则编写log相关代码的时候会有红叉:
创建所有java应用的父工程
-
后面的实战要创建多个SpringBoot应用,有必要提前创建一个父maven工程,将依赖库的定义和版本都放在在此;
-
创建名为kubernetesclient的maven工程,pom.xml如下:
<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”>
4.0.0
org.springframework.boot
spring-boot-starter-parent
2.3.1.RELEASE
com.bolingcavalry
kubernetesclient
1.0-SNAPSHOT
pom
helloworld
outsidecluster
<java.version>1.8</java.version>
org.springframework.boot
spring-boot-starter-test
test
org.junit.vintage
junit-vintage-engine
1200页Java架构面试专题及答案
小编整理不易,对这份1200页Java架构面试专题及答案感兴趣劳烦帮忙转发/点赞
百度、字节、美团等大厂常见面试题
1200页Java架构面试专题及答案
小编整理不易,对这份1200页Java架构面试专题及答案感兴趣劳烦帮忙转发/点赞
[外链图片转存中…(img-vQojH8YG-1714411955131)]
[外链图片转存中…(img-sZABP8FV-1714411955131)]
百度、字节、美团等大厂常见面试题
[外链图片转存中…(img-EeWIMbao-1714411955131)]