java 客户端开发_K8S官方java客户端之一:准备

欢迎访问我的GitHub

https://github.com/zq2599/blog_demos

内容:所有原创文章分类和汇总,及配套源码,涉及Java、Docker、Kubernetes、DevOPS等;

关于K8S官方java客户端

  • K8S官方java客户端全称是Kubernetes Java Client,是K8S官方推出的java库,以8.0.2版本为例,其maven坐标如下:
io.kubernetes    client-java    8.0.2compile
  • 本文是《K8S官方java客户端》系列的第一篇,主要内容是了解概念,再为后续章节的做好准备工作;
  • 回想咱们通常是如何操作K8S环境的,例如部署deployment,可以在dashboard页面上传yaml文件,也能在SSH终端执行kubectl命令,这些操作的去向都是K8S的API Server,如下图:
981cb9f9d9405fdc8088f1d4c53a5cce.png
  • 从上图可见,如果能把请求发送到API Server,就可以像kubectl命令那样操作K8S了,K8S官方java客户端(Kubernetes Java Client)就是拥有这样能力的SDK,使得java应用拥有kubectl那样的能力,如下图所示,加载了K8S官方java客户端库的SpringBoot应用,可以直接将请求发送到K8S环境:
0ad05c4df29bc599cb9afa3bc254312b.png

需要准备什么

《K8S官方java客户端》是以实战为主的系列文章,为了后面实战顺利进行,会在本章进行准备工作,包括硬件、软件、配置等方面,接下来会逐一列出;

开发环境

我这边用来编码的环境如下:

  1. 操作系统:macOS Catalina 10.15.5
  2. JDK:1.8.0_121
  3. Maven:33.3.9
  4. 开发工具:IntelliJ IDEA 2019.3.2 (Ultimate Edition)

运行环境

编码完成后要运行在K8S环境,该环境只有一台CentoOS电脑,信息如下:

  1. 操作系统:CentOS Linux release 7.8.2003
  2. K8S:1.15.3

选定client-java版本

  • K8S有多个版本,java客户端也有多个版本,用的时候如何选择呢?请参考官方给出的兼容性列表:
95f7a5dc08f42f9c4df89abfcc43947d.png
  • 如上图,横向是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: v1kind: ServiceAccountmetadata:  name: kubernates-client-service-account  namespace: kubernetesclient---kind: ClusterRoleBindingapiVersion: rbac.authorization.k8s.io/v1metadata:  name: kubernates-client-cluster-role-bindingsubjects:  - kind: ServiceAccount    name: kubernates-client-service-account    namespace: kubernetesclientroleRef:  kind: ClusterRole  name: cluster-admin  apiGroup: rbac.authorization.k8s.io

今后的实战中,SpringBoot应用都会部署在名为kubernetesclient的namespace之下,使用名为kubernates-client-service-account的Service Account;

IEDA安装插件

因为项目中用到了Slf4j注解,请在IEDA上安装lombok插件,否则编写log相关代码的时候会有红叉:

1c8e86187a5c8310cab32df465a1c1b7.png

创建所有java应用的父工程

  • 后面的实战要创建多个SpringBoot应用,有必要提前创建一个父maven工程,将依赖库的定义和版本都放在在此;
  • 创建名为kubernetesclient的maven工程,pom.xml如下:
<?xml version="1.0" encoding="UTF-8"?>4.0.0org.springframework.boot        spring-boot-starter-parent        2.3.1.RELEASEcom.bolingcavalry    kubernetesclient    1.0-SNAPSHOTpomhelloworldoutsidecluster1.8org.springframework.boot            spring-boot-starter-test            testorg.junit.vintage                    junit-vintage-engine                io.kubernetes                client-java                7.0.0compile

由于这是个父工程,因此目前除了pom.xml暂时没有其他内容,后面的实战会往里面添加子工程;

全系列源码下载

  • 后续整个《K8S官方java客户端》系列的源码,都可以在GitHub下载,地址和链接信息如下表所示(
    https://github.com/zq2599/blog_demos):
cb0b30152671360a6173006ef6c20dd4.png
  • 这个git项目中有多个文件夹,《K8S官方java客户端》系列的源码在kubernetesclient文件夹下,如下图红框所示:
f8fb007dc41ad1ef5d93c84c4798c4f5.png

以上就是实战前的准备工作了,感谢您的关注,后面的实战会更加精彩;

欢迎关注我的公众号:程序员欣宸

cfa1473324b98e3e74c67f6b14cc02f3.png
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值