K8S发布应用步骤详解
2024-10-21 04:03:53
前言
首先以SpringBoot应用为例介绍一下k8s的发布步骤。
1.从代码仓库下载代码,比如GitLab;
2.接着是进行打包,比如使用Maven;
3.编写Dockerfile文件,把步骤2产生的包制作成镜像;
4.上传步骤3的镜像到远程仓库,比如Harhor;
5.编写Deployment文件;
6.提交Deployment文件到k8s集群;
从以上步骤可以看出,发布需要的工具和环境至少包括:代码仓库(GitLab)、打包环境(Maven)、镜像制作(Docker)、镜像仓库(Harbor)、k8s集群等。
当前,也可以借助一些开源的系统来发布你的应用,比如:Jenkins、DHorse等。
详细步骤
假如有一个名为Hello的SpringBoot应用,服务端口是8080,并且有一个/hello接口。
打包
这里直接从GitLab下载到本地,执行maven打包命令,这里打为Jar包:
mvn clean package
完成以后,生成的包为:hello-1.0.0.jar
制作镜像
以下步骤在具有Docker环境的Linux机器上操作。
- 把hello-1.0.0.jar放到/usr/local/hello目录下,并在该目录下创建Dockerfile文件,内容为:
FROM openjdk:8-jdk-alpine
ADD hello-1.0.0.jar /usr/local/hello.jar
ENTRYPOINT ["java", "-jar", "/usr/local/hello.jar"]
则/usr/local/hello目录的文件为:
-rw-r--r-- 1 root root 119 Feb 22 17:50 Dockerfile
-rw-r--r-- 1 root root 21863457 Feb 22 17:07 hello-1.0.0.jar
- 制作镜像,在/usr/local/hello目录下执行命令:
docker build -t 192.168.109.134:20080/dhorse/hello:1.0.0 .
其中,192.168.109.134:20080是Harbor镜像仓库地址,dhorse是项目名。
- 登录仓库并上传镜像
docker login 192.168.109.134:20080 -u admin -p Harbor12345
docker push 192.168.109.134:20080/dhorse/hello:1.0.0
编写Deployment文件
创建hello-k8s.yml文件,内容如下:
apiVersion: apps/v1
kind: Deployment
metadata:
name: hello
labels:
app: hello
spec:
replicas: 1
selector:
matchLabels:
app: hello
template:
metadata:
labels:
app: hello
spec:
containers:
- name: hello
image: 192.168.109.134:20080/dhorse/hello:1.0.0
imagePullPolicy: Always
部署应用
以下操作在k8s集群的mater机器上执行。
把hello-k8s.yml文件复制/user/local目录下,并在当前目录执行如下命令:
kubectl apply -f hello-k8s.yml
稍后,再执行如下命令:
kubectl get pods -o wide
输出结果如下:
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
hello-79d56dc985-7dz6q 1/1 Running 0 8s 10.32.1.180 centos06 <none> <none>
然后在访问/hello接口:
curl http://10.32.1.180:8080/hello
至此,发布结束,同时欢迎使用DHorse进行自动发布。
最新文章
- JavaScript DOM节点和文档类型
- CCF 模拟C 找最大矩形+输入输出外挂
- [Android Pro] Android性能优化典范第一季
- 快速反编绎jar war包
- Entity Framework 第九篇 关于自增列的事务处理
- easylui datagrid 动态生成列
- axis2 WebService的发布与调用
- px,dp,sp单位转换工具类
- pyqt4制作透明无边框窗体
- MYSQL create database 和 create table 做了一些什么!
- Curious Robin Hood(树状数组+线段树)
- ssh无密码登陆(转)
- 阻塞与非阻塞、同步与异步 I/O模型
- Windows和Linux如何使用Java代码实现关闭进程
- CentOS 6 安装Hadoop集群
- Linux如何查看端口
- MySQL高级知识(十二)——全局查询日志
- bzoj 1222
- 牛客国庆集训派对Day5 数论之神
- oc中的各种遍历(迭代)方法
热门文章
- 关于更改 lightdm 主题的方法
- python-面向过程与函数式
- 【Java EE】Day06 JDBC连接池介绍、C3P0连接池实现、Druid连接池实现、JDBCTemplate
- K8s 超详细总结
- <;二>;vector向量容器
- 记一次 .NET 某安全生产信息系统 CPU爆高分析
- 【Vue】启动vue项目报错: errno: -4058, code: ‘ENOENT‘, syscall: ‘spawn cmd‘
- 百度智能云 API调用PythonSDK
- Lombok中@Builder和@SuperBuilder注解的用法
- python之路44 jQuery语法应用 与Bootstrap框架