前言

首先以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: 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

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

k8s发布应用的更多相关文章

  1. K8S发布解释型语言应用的最佳实践

    说明 我们知道,k8s在发布编译型语言的应用时,几乎不用多考虑,就会选择将编译好jar/war包(java语言)或者二进制文件(golang/c++)直接打到镜像当中,生成新的应用镜像,然后将镜像推到 ...

  2. k8s发布文件记录

    1.环境变量配置项 apiVersion: v1 # api版本 kind: ConfigMap # 配置项 metadata: name: common-key-svc # 名字 namespace ...

  3. K8S发布策略,无损发布

    大家好,相信大部分公司都已经使用K8S进行容器管理和编排了,但是关于K8S的发布策略,还有很多同学不太清楚,通过这篇文章的介绍,相信大家对目前K8S的发布情况有一个概括的认识.总结下来,共有如下几种: ...

  4. K8S发布应用步骤详解

    前言 首先以SpringBoot应用为例介绍一下k8s的发布步骤. 1.从代码仓库下载代码,比如GitLab: 2.接着是进行打包,比如使用Maven: 3.编写Dockerfile文件,把步骤2产生 ...

  5. 入门- k8s发布应用服务 (五)

    目标 了解 Kubernetes 的 Service(服务) 了解 Labels(标签)和 LabelSelector(标签选择器)与 Service(服务)的关系 在 kubernetes 集群中, ...

  6. k8s之发布管理架构图01

    k8s发布管理所用到的组件

  7. kubernetes(K8S)快速安装与配置集群搭建图文教程

    kubernetes(K8S)快速安装与配置集群搭建图文教程 作者: admin 分类: K8S 发布时间: 2018-09-16 12:20 Kubernetes是什么? 首先,它是一个全新的基于容 ...

  8. 比Minikube更快,使用Kind快速创建K8S学习环境

    简述 K8S 如火如荼的发展着,越来越多人想学习和了解 K8S,但是由于 K8S 的入门曲线较高很多人望而却步. 然而随着 K8S 生态的蓬勃发展,社区也呈现了越来越多的部署方案,光针对生产可用的环境 ...

  9. k8s中部署springcloud

    安装和配置数据存储仓库MySQL 1.MySQL简介 2.MySQL特点 3.安装和配置MySQL 4.在MySQL数据库导入数据 5.对MySQL数据库进行授权 1.MySQL简介 MySQL 是一 ...

  10. 2.k8s的架构

    之前了解了k8s到底是什么,接下来看看k8s的组成. 一.Kubernetes架构 学习k8s,最终目的是为了部署应用,部署一个完整的k8s, 就要知道k8s的组成.k8s主要包含两大部分: 中间包含 ...

随机推荐

  1. Django context must be a dict rather than UserProfile.

    context must be a dict rather than UserProfile. # 主页@login_requireddef index(request): data={} data ...

  2. [音视频处理] FFmpeg使用指北1-视频解码

    本文将详细介绍如何使用ffmpeg 4.4在C++中解码多种格式的媒体文件,这些媒体文件可以是视频.视频流.图片,或是桌面截屏或USB摄像头的实时图片.解码文件后,还将每帧图片转换为OpenCV的Ma ...

  3. Java(多态)

    1.多态 动态编译:类型 即同一方法可以根据发送对象的不同而采用不同的行为方式 一个对象的实际类型是确定的,但可以指向对象的引用可以有很多 多态存在条件 有继承关系 子类重写父类方法 父类引用指向子类 ...

  4. Win10环境配置(一)——C\C++篇

    Win10环境配置(一)--C\C++篇 1.工具准备 官网下载地址:https://sourceforge.net/projects/mingw-w64/ MinGW64下载地址:https://s ...

  5. sqlmap工具学习

    tryhackme:sqlmap github:https://github.com/sqlmapproject/sqlmap kali集成 参数介绍 sqlmap -h ___ __H__ ___ ...

  6. iOS气泡提示工具BubblePopup的使用

      在平时的开发中,通常新手引导页或功能提示页会出现气泡弹窗来做提示.如果遇到了这类功能通常需要花费一定的精力来写这么一个工具的,这里写了一个气泡弹窗工具,希望能帮你提升一些开发效率.   使用方法 ...

  7. 自然语言处理 Paddle NLP - 预训练语言模型及应用

    什么是语言理解? 关于疫情的一段对话: 中国:我们这边快完了 欧洲:我们这边快完了 中国:我们好多了 欧洲:我们好多了 挑战: 语言的复杂性和多样性 多义/同义/歧义现象 灵活多变的表达形式 语言背后 ...

  8. SpringMVC的执行原理

    1.HandlerMapping为处理器映射,DispatcherServlet调用HandlerMapping,HandlerMapping根据请求的url查找Handler 2.HandlerEx ...

  9. Subset Sum 问题单个物品重量限制前提下的更优算法

    前言 看了 ShanLunjiaJian 关于这个问题的文章,是完全没看懂,沙东队爷的中枢神经内核配置把我偏序了.叉姐在下面提了个论文,论文找不到资源,谁搞到了可以 Q 我一份之类的拜谢了.然后找到了 ...

  10. 11. Mybatis的逆向工程

    正向工程:先创建 Java 实体类,由框架负责根据实体类生成数据库表. Hibernate 是支持正向工 程的. 逆向工程:先创建数据库表,由框架负责根据数据库表,反向生成如下资源: Java 实体类 ...