k8s-部署springboot容器化应用

一些概念:

master节点控制执行命令在Node节点部署容器,从Node->service->deploy->pod->docker容器镜像,pod里边是docker容器,deploy里边是pod

流程:

springboot项目打包、制作jdk镜像、制作spring boot镜像、空运行测试生成yaml文件、k8s命令通过yaml文件部署,当然也可以不生成yaml文件,即直接k8s命令部署spring boot项目镜像

自定义jdk镜像:

1.服务器上传jdk软件安装包+制作jdk的docker file文件

服务器上上传jdk软件安装包,制作dockerfile文件(实际不太清楚,难道直接cat个文件就行了???),感觉这个docker文件中的内容就是在当前服务器下安装jdk的过程

2.把dockerfile文件运行制作成jdk镜像:

docker build -t jdk1.8.0_251.含义:-t相当于起了个jdk1.8.0_251标签名字,.指的是当前目录下

执行完命令后就会如下第2张图docker images查询到jdk镜像,

构建spring boot项目镜像

1.先把spring boot项目打包成jar包或者war包吧放到服务器上,并制作成dockerfile文件

(实际我不知道咋制作的,要重新学一下docker了),可能跟制作jdk镜像一样,也是直接cat个文件吗???dockerfile文件中的内容如下:

要运行spring boot项目需要有jdk,所以要先继承jdk镜像即From jdk镜像名称,在自定义jdk镜像中制作的jdk镜像名称为jdk1.8.0_251,即docker file中的文件内容为From jdk1.8.0_251

2.把dockerfile文件运行制作成spring boot项目镜像:

docker build -t 38-springboot-k8s-1.0.0-jar.含义:.的含义是当前目录,意思是运行当前目录下的dockerfile文件,然后构建成一个叫38-springboot-k8s-1.0.0-jar的spring boot镜像,运行命令之后看如下第3张图查询images镜像出现spring boot项目镜像

空运行测试+部署spring boot项目镜像

1.空运行测试生成yaml文件,下边步骤2可以使用ymal文件部署spring boot镜像:

制造出spring boot的项目镜像之后,剩下的就是跟k8s部署tomcat、nginx容器化一样了,直接执行kubectl create deployment springboot-k8s --image=38-springboot-k8s-1.0.0-jar镜像,即创建一个叫springboot-k8s的控制器,并创建pod,拉取38-springbott-k8s-1.0.0-jar镜像,并让控制器运行Pod。命令后加了--dry run -o yaml即为空运行测试,空运行测试实际没有执行命令,但是会输出执行命令的效果,空运行测试就是--dry-run,-o指的是output输出,-o yaml指的是执行命令后最终输出一个yaml文件,yaml文件内容如下第3、4张图。即springboot项目镜像在k8s运行时可以是以yaml文件的方式提交给k8s的api server去运行。

空运行测试实际没有执行命令,即执行命令后不会创建deploy、pod等,控制器名字不能是以数字开头,要以英文字母开头

执行kubectl create deployment springboot-k8s --image=38-springboot-k8s-1.0.0-jar --dry -o yaml >boot-delpoy.yaml命令:将yaml内容输入到boot-delpoy.yaml文件中

2.通过yaml文件部署或通过命令直接部署spring boot项目容器:

k8s启动运行springboot镜像,可以通过运行上边步骤1输出的ymal文件,即kubectl apply -f bootdeploy.yaml文件,apply应用,-f指的是-file,即应用步骤4输出的boot-deploy.yaml文件,好处是可以改动yaml文件中的启动参数,或者直接通过运行像nginx或者tomcat镜像那样直接运行即kubectl create deployment 控制器名称 --image=spring boot项目镜像名称

通过yaml文件部署:

(1)修改yaml文件k8s拉取镜像策略,把默认从远程中央仓库拉取镜像改成从本地获取(实际生产中还是得确认下改不改吧,视频中说的是因为springboot项目镜像在本地服务器,并没有把镜像放到远程仓库,所以k8s肯定从远程仓库拉取不下来镜像,所以要修改拉取策略,实际生产中不确定,会不会把spring boot镜像也放到远程仓库???)

控制器名字不能是以数字开头,要以英文字母开头

(2)暴露端口,允许浏览器访问部署在k8s的spring boot服务:

k8s中一个master对应多个node,每个Node里边有好多Pod,每个Pod里边有好多docker容器镜像???

用户浏览器访问k8s中的spring-boot项目镜像路径:

浏览器----》nginx+keepalive(nginx只需部署在当前服务器上做个高可用,不需要做容器化)-----》ingress(对k8s中的服务做负载均衡和统一service端口映射)---->k8s中的service-------->k8s中的deploy------>k8s中的pod------->k8s中的docker容器镜像

linux:

springboot项目下dockerfile镜像内容:

linux删除文件命令:

k8s相关命令:

k8s删除service:kubectl delete service service名称(当把应用暴露端口之后就会有service)

k8s删除控制器:kubectl delete deploy 控制器名称,注:删除控制器之后对应pod也会被自动删除

。。。。。。。。。。。。。。。。。。。。。。。人生漫漫。。。。。。。。

相关推荐
A-Jie-Y8 分钟前
JAVA框架-SpringBoot环境搭建指南
java·spring boot
SPC的存折14 分钟前
2、Docker命令与镜像、容器管理
linux·运维·服务器·docker·容器·eureka
深兰科技16 分钟前
深兰科技与淡水河谷合作推进:矿区示范加速落地
java·人工智能·python·c#·scala·symfony·深兰科技
码界奇点28 分钟前
基于Spring Boot的前后端分离商城系统设计与实现
java·spring boot·后端·java-ee·毕业设计·源代码管理
一叶飘零_sweeeet30 分钟前
深度剖析:Java 并发三大量难题 —— 死锁、活锁、饥饿全解
java·死锁·活锁·饥饿
IT乐手36 分钟前
java 对比分析对象是否有变化
android·java
云烟成雨TD40 分钟前
Spring AI Alibaba 1.x 系列【18】Hook 接口和四大抽象类
java·人工智能·spring
Hachi被抢先注册了1 小时前
Docker学习记录
java·云原生·eureka
devilnumber1 小时前
Spring Boot 2 vs Spring Boot 3:50 条核心区别 + 升级优势 + 避坑指南
java·spring boot·springboot升级
武超杰1 小时前
Spring Cloud Alibaba Nacos 进阶:配置隔离、集群、持久化与开机自启
java·开发语言