一些概念:
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也会被自动删除


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