• 利用Kubernetes(K8S)部署JAVA项目


    一、jar包和war包区别

    首先简单介绍一下jar包和war包区别,当时就没分清,导致部署总是傻傻分不清楚.

    jar包:jar包就是java的类进行编译生成的class文件就行打包的压缩包。里面是一些class文件。当我们自己使用maven写一些java程序,进行打包生成jar包。同时在可以在其他的工程下使用,但是我们在这个工程依赖的jar包,在其他工程使用该jar包也要导入。

    war包:其实就是一个web程序进行打包便于部署的压缩包,里面包含我们web程序需要的一些东西,其中包括web.xml的配置文件,前端的页面文件,以及依赖的jar。文件数量对于jar包,这样便于我们部署工程,直接放到tomcatwebapps目录下,直接启动tomcat即可。同时可以使用WinRAR查看war包,直接将后缀.war改成.rar

    原文链接:https://blog.csdn.net/shu616048151/article/details/81136164

    二、创建JAVA项目,并打包成jar

    我的目录结构

    这里是利用SpringBoot写的一个小DEMO,不熟悉的,可以去看入门视频

    链接:https://www.bilibili.com/video/av38657363/?p=6

    三、创建Dockerfile文件

    我看了这篇文章作为参考,但COPY时候,他的有target/目录,我不明白哪儿来的,折腾了半天

    文章链接:https://cloud.tencent.com/developer/article/1512705

    Dockerfile文件

    #基础镜像,如果本地仓库没有,会从远程仓库拉取

    FROM openjdk:8-jdk-alpine

    #容器中创建目录

    RUN mkdir -p /usr/local/pasq

    #编译后的jarcopy到容器中创建到目录内

    COPY target/demo1-0.0.1-SNAPSHOT.jar /usr/local/pasq/myapp.jar

    #指定容器启动时要执行的命令

    ENTRYPOINT ["java","-jar","/usr/local/pasq/myapp.jar"]

     

    #基础镜像,如果本地仓库没有,会从远程仓库拉取

    FROM openjdk:8-jdk-alpine

    #容器中创建目录

    RUN mkdir -p /usr/local/pasq

    #编译后的jarcopy到容器中创建到目录内

    COPY demo1-0.0.1-SNAPSHOT.jar /usr/local/pasq/myapp.jar

    #指定容器启动时要执行的命令

    ENTRYPOINT ["java","-jar","/usr/local/pasq/myapp.jar"]

    我所遇到的问题,开始对于jar包的位置没有相对于dockerfile文件,导致一直不能创建成功

    四、构建镜像

    1、构建命令

    docker build -f Dockerfile文件位置 -t 镜像名:版本 .    【末尾有个点,一点要注意】
    
    docker build -f /myDir/Dockerfile3 -t myapp:1.0 .

    Dockerfile一般位于构建上下文的根目录下,

    -f指定该文件的位置

    -t参数指定构建成后,镜像的仓库、标签等

    利用docker images命令查看自己所构建的镜像

    2、镜像推送push、获取pull

    镜像推送,我是自己做了个harbor仓库,hub.lqz.com是我的仓库地址

    视频地址链接:https://www.bilibili.com/video/av66617940/?p=14

    登录仓库:docker login hub.lqz.com

     

    标记镜像:docker tag myapp:1.0 hub.lqz.com/library/myapp:1.0

    推送镜像:docker push hub.lqz.com/library/myapp:1.0

     

    获取镜像:docker pull hub.lqz.com/library/myapp:1.0

     

    仓库命令

     

    五、DeploymentServiceyaml文件

    1Deployment.yaml

    deployment为申明式,所以构建用apply

    一般将DeploymentService写在一起,但我太菜,初步选择了分开写(其中service选择了nodePort)

    [root@master manifests]# vim svc-deployment.yaml

    apiVersion: apps/v1

    kind: Deployment

    metadata:

      name: myapp-deploy

      namespace: default

    spec:

      replicas: 3

      selector:

        matchLabels:

          app: myapp

          release: stabel

      template:

        metadata:

          labels:

            app: myapp

            release: stabel

            env: test

        spec:

          containers:

          - name: myapp

            image: hub.lqz.com/library/nginx:latest

            imagePullPolicy: IfNotPresent

            ports:

            - name: http

              containerPort: 80

    创建: kubectl apply -f svc-deployment.yaml

    2service.yaml

    [root@master manifests]# vim svc-nodePort.yaml

    apiVersion: v1

    kind: Service

    metadata:

      name: myapp

      namespace: default

    spec:

      type: NodePort

      selector:

        app: myapp

        release: stabel

      ports:

      - name: http

        port: 8080

        targetPort: 8080

        nodePort: 30080

     

    创建svc: kubectl apply -f svc-nodePort.yaml

    问题:在构建过程中,svc-nodePort.yaml一直没写nodePort,导致创建成功,但一直访问失败,需要更加熟悉熟悉

     

    查看pod,看是否构建成功

     

    查看svc,并访问nodePort

     

    最后,访问   ip地址:30080(根据自身设置的为准)

     

    访问成功,但没页面,根据我的jar包,加/hello,访问成功

     

    六、总结

       看起来就一点的篇幅,本以为很快就能搞定的东西,写出来也花了我近一个小时,果然,什么事都不能想当然啊。这只是一个很基础的练习,没有添加太多的东西,但我却在其中周周转转了一两周之久,网上也没有找到适合我自己这种超级小白的资料,每一个现在看起来超级白痴的问题,在当时却足以让我寸步难行。自学这种事,可真TMD让人眼瞎,理不清主干思想,抓不住重点,把握不住节奏,做的也不够完善。但无论怎么样,那怕自己是一只胖菜鸟,今天也终于挥动了一下翅膀,不值得骄傲,却值得留念!

           望每一个在学习道路上踽踽独行的人都能守得云开见月明!

      2019-10-18打卡,今天也是FPX 小凤凰S9小组第一出现的日子,小IG,RNG冲鸭!!!

  • 相关阅读:
    关于我的博客园皮肤效果
    Typora结合Git打造完美的个人云笔记本
    linux查看占用端口的进程号并杀死该进程
    关于将ISO 8601格式的时间字符串转化为yyyy-MM-dd hh:mm:ss格式字符串用于前后台传输数据方法
    前后端分离_Vue_axios本地跨域(前端localhost:8080到后端localhost:8090)
    T-SQL 查询分区详细信息和行计数
    INSERT INTO vs SELECT INTO
    SQL Server
    T-SQL 常用语句
    T-SQL Datetime转换成字符类型
  • 原文地址:https://www.cnblogs.com/LiuQizhong/p/11699528.html
Copyright © 2020-2023  润新知