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包:

shell 复制代码
mvn clean package

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

制作镜像

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

  1. 把hello-1.0.0.jar放到/usr/local/hello目录下,并在该目录下创建Dockerfile文件,内容为:
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目录的文件为:

shell 复制代码
-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目录下执行命令:
shell 复制代码
docker build -t 192.168.109.134:20080/dhorse/hello:1.0.0 .

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

  1. 登录仓库并上传镜像
shell 复制代码
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文件,内容如下:

Deployment 复制代码
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目录下,并在当前目录执行如下命令:

shell 复制代码
kubectl apply -f hello-k8s.yml

稍后,再执行如下命令:

shell 复制代码
kubectl get pods -o wide

输出结果如下:

shell 复制代码
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接口:

shell 复制代码
curl http://10.32.1.180:8080/hello

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

相关推荐
季春二九4 小时前
解决 Docker 容器镜像拉取难题:全面指南
运维·docker·容器
^_^ 纵歌4 小时前
virtualbox和docker的区别和优缺点以及如何选择
运维·docker·容器
march of Time7 小时前
docker容器技术、k8s的原理和常见命令、用k8s部署应用步骤
docker·容器·kubernetes
板栗妖怪7 小时前
docker安装以及简单使用
docker·容器
乐之者v8 小时前
k8s 常用的命令
云原生·容器·kubernetes
蝎子莱莱爱打怪9 小时前
docker 重要且常用命令大全
java·spring cloud·docker·容器·eureka
小杰66610 小时前
安装docker版rabbitmq 3.12
docker·容器·rabbitmq
hay_lee11 小时前
K8S集群应用国产信创适配实战经验总结
云原生
明明跟你说过13 小时前
【云原生】服务网格(Istio)如何简化微服务通信
运维·微服务·云原生·容器·kubernetes·k8s·istio
Akamai中国14 小时前
Akamai+Noname强强联合 | API安全再加强
分布式·云原生·云计算·云服务·akamai