k8s部署springboot
综述
首先介绍发布步骤。
1.从代码仓库下载代码,比如GitLab;
2.接着是进行打包,比如使用Maven;
3.编写Dockerfile文件,把步骤2产生的包制作成镜像;
4.上传步骤3的镜像到远程仓库,比如Harhor;
5.编写Deployment文件;
6.提交Deployment文件到k8s集群;
从以上步骤可以看出,发布需要的工具和环境至少包括:代码仓库(GitLab)、打包环境(Maven)、镜像制作(Docker)、镜像仓库(Harbor)、k8s集群等。
当前,也可以借助一些开源的工具或平台来发布应用,比如:Jenkins、https://github.com/512team/dhorse等。
发布过程
假如有一个名为springboot的SpringBoot应用,服务端口是8080,并且有一个/hello接口,下面详细介绍发布过程。
打包
这里直接从GitLab下载到本地,执行maven打包命令,这里打为Jar包:
mvn clean package
生成的包为:springboot-1.0.0.jar
制作镜像
以下步骤在具有Docker环境的Linux机器上操作。
- 把springboot-1.0.0.jar放到/usr/local/springboot目录下,并在该目录下创建Dockerfile文件,内容为:
FROM openjdk:8-jdk-alpine
ADD springboot-1.0.0.jar /usr/local/springboot.jar
ENTRYPOINT ["java", "-jar", "/usr/local/springboot.jar"]
则/usr/local/springboot目录的文件为:
-rw-r--r-- 1 root root 119 Feb 22 17:50 Dockerfile
-rw-r--r-- 1 root root 21863457 Feb 22 17:07 springboot-1.0.0.jar
- 制作镜像,在/usr/local/springboot目录下执行命令:
docker build -t 192.0.10.22:20080/dhorse/springboot:1.0.0 .
其中,192.0.10.22:20080是Harbor镜像仓库地址,dhorse是项目名。
- 登录仓库并上传镜像
docker login 192.0.10.22:20080 -u admin -p Harbor12345
docker push 192.0.10.22:20080/dhorse/springboot:1.0.0
编写Deployment文件
创建springboot-k8s.yml文件,内容如下:
apiVersion: apps/v1
kind: Deployment
metadata:
name: springboot
labels:
app: springboot
spec:
replicas: 1
selector:
matchLabels:
app: springboot
template:
metadata:
labels:
app: springboot
spec:
containers:
- name: springboot
image: 192.0.10.22:20080/dhorse/springboot:1.0.0
imagePullPolicy: Always
部署应用
以下操作在k8s集群的mater机器上执行。
把springboot-k8s.yml文件复制/user/local目录下,并在当前目录执行如下命令:
kubectl apply -f springboot-k8s.yml
稍后,再执行如下命令:
kubectl get pods -o wide
输出结果如下:
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
springboot-79d56dc985-7dz6q 1/1 Running 0 8s 10.32.1.180 centos06 <none> <none>
然后访问/hello接口:
curl http://10.32.1.180:8080/hello
推荐一个不错的部署应用的工具,https://gitee.com/i512team/dhorse
至此,发布结束。
k8s部署springboot的更多相关文章
- 使用k8s部署springboot+redis简单应用
准备 本文将使用k8s部署一个springboot+redis应用,由于是示例,所以功能比较简单,只有设置值和获取值两个api. (1)设置值 (2)获取值 构建Web应用 (1)创建一个spring ...
- K8S 部署 SpringBoot 项目(一篇够用)
现在比较多的互联网公司都在尝试将微服务迁到云上,这样的能够通过一些成熟的云容器管理平台更为方便地管理微服务集群,从而提高微服务的稳定性,同时也能较好地提升团队开发效率. 但是迁云存在一定的技术难点,今 ...
- k8s部署spring-boot项目失败
现象:spring-boot项目启动到某个地方停止,然后容器重启 解决:扩大内存和核心数
- 从安装linux(centos7.6)系统到部署springboot java程序到k8s(大纲)
本文说明从安装linux系统开始,一直到在k8s运行springboot程序全过程 本文假设在自己电脑操作,因此linux系统使用vmware虚拟机,linux发行版使用centos 7.6.1810 ...
- k8s学习笔记(1)- 简单部署springboot应用
前言:k8s全称kubernetes,k8s是为容器服务而生的一个可移植容器的编排管理工具,越来越多的公司正在拥抱k8s,并且当前k8s已经主导了云业务流程,关于更多的k8s知识,可自行学习 1.k8 ...
- k8s学习笔记(2)- Rancher2.x部署springboot应用及高可用、扩容
前言:上一篇介绍基于k3s环境,使用kubectl部署springboot简单项目应用,本篇介绍基于rancher2.x部署应用程序 1.上篇已部署一个springboot应用,我们可以通过ranch ...
- jenkins流水线部署springboot应用到k8s集群(k3s+jenkins+gitee+maven+docker)(2)
前言:上篇已介绍了jenkins在k3s环境部署,本篇继续上篇讲述流水线构建部署流程 1.从gitlab上拉取代码步骤 在jenkins中,新建一个凭证:Manage Jenkins -> Ma ...
- 使用Cloud Toolkit部署SpringBoot项目到服务器
由于我们经常发布项目到测试服,在测试服上调试一些本地无法调试的东西,所以出现了各种打包,然后上传.启动,时间都耗费在这无聊的事情上面了,偶然在网上看到IntelliJ IDEA有 Cloud Tool ...
- 微服务从代码到k8s部署应有尽有系列(二、网关)
我们用一个系列来讲解从需求到上线.从代码到k8s部署.从日志到监控等各个方面的微服务完整实践. 整个项目使用了go-zero开发的微服务,基本包含了go-zero以及相关go-zero作者开发的一些中 ...
- SpringBoot入门教程(二)CentOS部署SpringBoot项目从0到1
在之前的博文<详解intellij idea搭建SpringBoot>介绍了idea搭建SpringBoot的详细过程, 并在<CentOS安装Tomcat>中介绍了Tomca ...
随机推荐
- [网络/Linux]CentOS7:OpenSSH升级到7.9p1 | 含: 安装Telnet/OpenSSH【telnet/ssh】
[Q0 OpenSSH/sshd/ssh/scp/sftp,及OpenSSL这些软件组件之间有什么联系吗?] 请跳转咱的另一篇博文,相信阅读完后,你会清楚很多: [网络/SSH]OpenSSH: ss ...
- 31-dll
webpack.dll.js /** * 使用dll技术,对某些库(第三方库:jquery.react.vue...)进行单独打包 * 当你运行 webpack 时,默认查找 webpack.conf ...
- Prometheus监控之SNMP Exporter介绍和数据展现
由于技术能力有限,文章仅能进行简要分析和说明,如有不对的地方,请指正,谢谢. 1 SNMP协议介绍 SNMP协议全称是:Simple Network Management Protocol,译为简单网 ...
- js对象方法大全
JavaScript中Object构造函数的方法 Object构造函数的方法节 Object.assign() 通过复制一个或多个对象来创建一个新的对象. Object.create() 使用指定的原 ...
- vue2路由导航守卫(钩子函数)
https://router.vuejs.org/zh/guide/advanced/navigation-guards.html#%E5%85%A8%E5%B1%80%E5%89%8D%E7%BD% ...
- 如何实现Spring中服务关闭时对象销毁执行代码
spring提供了两种方式用于实现对象销毁时去执行操作 1.实现DisposableBean接口的destroy 2.在bean类的方法上增加@PreDestroy方法,那么这个方法会在Disposa ...
- 2023-05-05:给定一个无向、连通的树 树中有 n 个标记为 0...n-1 的节点以及 n-1 条边 。 给定整数 n 和数组 edges , edges[i] = [ai, bi]表示树中的
2023-05-05:给定一个无向.连通的树 树中有 n 个标记为 0...n-1 的节点以及 n-1 条边 . 给定整数 n 和数组 edges , edges[i] = [ai, bi]表示树中的 ...
- 2022-10-10:以下go语言代码输出什么?A:[1 2 3 0 1 2];B:死循环;C:[1 2 3 1 2 3];D:[1 2 3]。 package main import “fmt“
2022-10-10:以下go语言代码输出什么?A:[1 2 3 0 1 2]:B:死循环:C:[1 2 3 1 2 3]:D:[1 2 3]. package main import "f ...
- 2022-08-10:为了给刷题的同学一些奖励,力扣团队引入了一个弹簧游戏机, 游戏机由 N 个特殊弹簧排成一排,编号为 0 到 N-1, 初始有一个小球在编号 0 的弹簧处。若小球在编号为 i 的弹
2022-08-10:为了给刷题的同学一些奖励,力扣团队引入了一个弹簧游戏机, 游戏机由 N 个特殊弹簧排成一排,编号为 0 到 N-1, 初始有一个小球在编号 0 的弹簧处.若小球在编号为 i 的弹 ...
- 安装vue后 vue -V查不到版本号 添加环境变量没反应
萌新一枚,今天听老大说后续有项目要用vue,于是找教程自己先看看, 验证vue是否安装成功时,提示 'vue' 不是内部命令,也不是可运行的程序 有说把vue路径添加环境变量的,试了一下,不行(后来看 ...