当前位置: 首页 > news >正文

k8s发布应用

前言

首先以SpringBoot应用为例介绍一下k8s的发布步骤。

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等。

详细步骤

假如有一个名为Hello的SpringBoot应用,服务端口是8080,并且有一个/hello接口。

打包

这里直接从GitLab下载到本地,执行maven打包命令,这里打为Jar包:

mvn clean package

完成以后,生成的包为:hello-1.0.0.jar

制作镜像

以下步骤在具有Docker环境的Linux机器上操作。

  1. 把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
  1. 制作镜像,在/usr/local/hello目录下执行命令:
docker build -t 192.168.109.134:20080/dhorse/hello:1.0.0 .

其中,192.168.109.134:20080是Harbor镜像仓库地址,dhorse是项目名。

  1. 登录仓库并上传镜像
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: hellolabels:app: hello
spec:replicas: 1selector:matchLabels:app: hellotemplate:metadata:labels:app: hellospec:containers:- name: helloimage: 192.168.109.134:20080/dhorse/hello:1.0.0imagePullPolicy: 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

至此,发布结束,同时欢迎使用https://github.com/512team/dhorse进行自动发布。

http://www.lryc.cn/news/136482.html

相关文章:

  • 微信小程序教学系列(4)
  • Netty核心源码解析(三)--NioEventLoop
  • Vue2学习笔记のVue核心
  • 把matlab的m文件打包成单独的可执行文件
  • redis 6个节点(3主3从),始终一个节点不能启动
  • 单体架构 Monolithic Architecture
  • HCIP的STP总结
  • Post Robot
  • HTML中,常用的布局方式
  • uboot源码结构
  • c++(8.23)类,this指针,构造函数,析构函数,拷贝构造函数
  • 前端网络相关知识(TCP和UDP的区别, TCP的三次握手)
  • 大数据-玩转数据-Flink营销对账
  • 中英双语对话大语言模型:ChatGLM-6B
  • MES生产报工管理
  • 五、修改官方FreeRTOS例程(STM32F1)
  • pytorch基础实践-数据与预处理
  • Java智慧工地系统源码(微服务+Java+Springcloud+Vue+MySQL)
  • PV3D: A 3D GENERATIVE MODEL FOR PORTRAITVIDEO GENERATION 【2023 ICLR】
  • Apache BeanUtils工具介绍
  • java 原子操作 笔记
  • 什么是线程安全性问题?Java中有哪些常用的同步机制来解决线程安全性问题?
  • Gitlab 安装全流程
  • pdf转word最简单方法~
  • Android 9.0 WiFi 扫描结果上报和获取流程
  • Java 项目日志实例:Log4j2
  • Effective C++条款14——在资源管理类中小心coping行为(资源管理)
  • 【网络教程】如何创建/添加钉钉机器人以及如何获取机器人的Token/Secret
  • wx原生微信小程序入门常用总结
  • 制作一个专属于安防监控业的小程序商城