k8s部署springboot项目

Posted 爱上口袋的天空

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了k8s部署springboot项目相关的知识,希望对你有一定的参考价值。

1.首先我们将项目打成jar包

2.制作Dockerfile文件,生成jdk镜像,我们这里总共两台服务器,k8s-master和k8s-node,全部要操作

  1. 将jdk上传到Linux服务器上
  2. 编写Dockerfile文件
    内容如下:
    FROM centos:latest
    MAINTAINER kgf
    ADD jdk-8u191-linux-x64.tar.gz /usr/local/java
    ENV JAVA_HOME /usr/local/java/jdk1.8.0_191
    ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    ENV PATH $PATH:$JAVA_HOME/bin
    CMD java -version

  3. 构建jdk镜像
    命令:docker build -t jdk1.8.0_191 .

     

3.创建项目镜像(两台都操作)

  1. 上传我们的jar包并且创建Dockerfile文件

    内容如下:
    #基于我们刚刚创建的jdk镜像
    FROM jdk1.8.0_191
    MAINTAINER kgf
    ADD springboot-test-demo.jar /opt
    RUN chmod +x /opt/springboot-test-demo.jar
    #运行jar
    CMD java -jar /opt/springboot-test-demo.jar
     
  2. 构建项目镜像
    命令:docker build -t springboot-test-demo .

     
  3. 空运行测试生成我们的yaml文件
    1)命令:
         kubectl create deployment deployment名称 --image=我们项目的镜像名称 --dry-run -o yaml > 要生成的yaml文件
         注意:--dry-run表示空运行测试,不会真正的运行
                   -o 表示测试输出

    2)执行命令生成我们的yaml模板
          命令:kubectl create deployment springboot-k8s --image=springboot-test-demo --dry-run -o yaml > deploy.yaml
          
          文件的内容如下:
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      creationTimestamp: null
      labels:
        app: springboot-k8s
      name: springboot-k8s
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: springboot-k8s
      strategy: {}
      template:
        metadata:
          creationTimestamp: null
          labels:
            app: springboot-k8s
        spec:
          containers:
          - image: springboot-test-demo
            name: springboot-test-demo
            resources: {}
    status: {}

4.下面我们以yaml文件的方式部署springboot项目

  1. 对上面生成的deploy.yaml文件进行修改,让它使用本地的镜像,因为它默认是去中心仓库拉取镜像的
  2. 通过命令去操作deploy.yaml文件
    命令:kubectl apply -f deploy.yaml


     
  3. 暴露端口
    命令:kubectl expose deployment springboot-k8s --port=8080 --type=NodePort
  4. 通过浏览器去查看效果,两台服务器都可以访问,注意:目前这里的对外端口是不固定的,后面我们可以通过ingress组件对外暴露一个固定的端口

以上是关于k8s部署springboot项目的主要内容,如果未能解决你的问题,请参考以下文章

K8S 部署 SpringBoot 项目

K8S 部署 SpringBoot 项目

K8S 部署 SpringBoot 项目

K8S 部署 SpringBoot 项目

K8S 如何部署SpringBoot项目

springboot 项目部署在Kubernetes (k8s)集群上的demo