k8s部署springboot项目本文演示如何使用k8s快速部署一个springboot项目,体验k8s与实际项目的结合1.环境准备操作系统:Centos7(CentOSLinuxrelease7.9.2009)Master主节点:1台虚拟机Node计算节点:2台虚拟机K8s版本:v1.23.5(选择较新的版本)Docker版本:20.10.14环境与之前的kubeadm一致,搭建k8s二、部署流程概述创建一个SpringBoot项目,打开一个/k8s的/hello接口用于测试。通过编写dockerfile,添加springboot项目构建镜像并将镜像推送到对应的阿里云仓库(或harbor等)编写k8syaml部署2副本+ingress实现基本负载均衡kubectl部署访问请求测试路径3.创建springboot工程,省略工程创建步骤提供/k8s/hello接口,接收name参数,打印返回4.编写Dockerfile构建镜像。dockerfile很简单启动上面的springboot项目4.1DockerfileFileFROMopenjdk:8-alpineCOPY./target/springboot-k8s-0.0.1-SNAPSHOT.jar/app/springboot-k8s-demo.jarENTRYPOINT["java","-jar","/app/springboot-k8s-demo.jar"]4.2执行构建命令dockerbuild-tboot-k8s-demo:v1#构建镜像5.将镜像推送到对应的阿里云仓库这里直接使用阿里云镜像仓库作为镜像存放位置,可以根据实际情况例如上传到Harbor等dockertagboot-k8s-demo:v1registry.cn-hangzhou.aliyuncs.com/askajohnny/k8s:v1#上传到Ah的标签丽云镜像仓库dockerlogin--username=176xxxxx741registry.cn-hangzhou.aliyuncs.comdockerpushregistry.cn-hangzhou.aliyuncs.com/askajohnny/k8s:v1#推送镜像到阿里云仓库6.写k8syamlfordeployment2个replicas+ingress实现基本的负载均衡在deployment中简单的定义了一个Deployment和一个Service,最后定义了一个Ingress资源文件,前提是已经部署了Ingress-nginx来解析这个文件(详见前面关于如何部署Ingress-nginx的文章)apiVersion:apps/v1kind:Deployment#Deploymentmetadata:name:springboot-appspec:replicas:2#2replicasselector:matchLabels:app:springboot-apptemplate:metadata:labels:app:springboot-appspec:containers:-name:springboot-appimage:registry.cn-hangzhou.aliyuncs.com/askajohnny/k8s:v1#刚刚推送到阿里云ports上的镜像地址:-containerPort:8080#springboot默认端口---apiVersion:v1kind:Servicemetadata:name:springboot-appspec:selector:app:springboot-app#选择上面的Deploymentports:-port:7003#External7003porttargetPort:8080---#IngressapiVersion:networking.k8s。io/v1kind:入口元数据:name:myingresslabels:name:myingressspec:IngressClass:nginxrules:-host:springboot.demo.com#所有对这个域名的主机请求都转发到上面的Service=springboot-apphttp:paths:-pathType:Prefixpath:"/"backend:service:name:springboot-app#转发到这个Serviceport:number:70037.kubectldeploydeploy-springboot-k8s.yaml使用kubectl部署上面的部署文件kubectapply-fdeploy-springboot-k8s.yamlkubectlgetall#Vieweverything默认情况下可以看到2个replicapod已经running8了。在访问测试访问的请求路径之前,需要将springboot.demo.com域名添加到宿主机的/etc/hosts中,保证能正常解析到ingress-那台机器上的nginx(可以看前面的文章详解)请求接口:http://springboot.demo.com/k8...查看两份的日志,可以看到Ingress默认的轮训负载均衡策略也生效了,k8s部署springboot项目告一段落。总结本文主要讲解k8s如何部署springboot项目。这个过程非常简单。目前只是半人工部署。后面会引入CICD,实现真正的自动化部署。欢迎大家访问我的个人博客:https://www.askajohnny.com欢迎大家访问我的个人博客JohnnyHut
