栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

打包docker镜像,推送远程服务器,部署到k8s步骤

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

打包docker镜像,推送远程服务器,部署到k8s步骤

打包docker镜像

前提条件

1、docker服务器已开启远程访问,参考《远程docker服务器携带证书连接》。

2、服务器上已经搭建好k8s集群,本文是k8s单点集群用于测试。

在之前的文章中我们已经通过idea的docker插件测试了远程docker服务器已经能够正常访问,虽然利用这个docker插件也可以完成docker镜像的打包及推送,但本文我们将换一种方式,使用maven的docker-maven-plugin插件完成docker镜像的打包,以及推送到远程docker服务器。

Dockerfile文件

  1. 指定jdk环境版本,基于java8创建镜像
    1. FROM java:8
  2. 挂载临时目录
    1. VOLUME /tmp
  3. 添加指定jar包到容器(此处为项目打包所产生的jar包全名)
    1. ADD    ./product/target/*.jar  ./app.jar
       
  4. 容器向外暴露的端口号(项目运行占用的端口)
    1. EXPOSE 8080
  5. 容器启动后执行的命令
    1. ENTRYPOINT [ "java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "./app.jar" ]

pom.xml配置

pom文件的相关配置如下,注意填入远程服务器的ip,并指明上述Dockerfile路径以及访问远程docker需要的pem证书文件的路径。



    

        

            org.springframework.boot

            spring-boot-maven-plugin

        

        

        

            com.spotify

            docker-maven-plugin

            1.2.2

            

            

                

                    build-image

                    

                    package

                    

                        build

                    

                

            

            

                true

                

                practice-job

                

                

                    latest

                

                

                ${project.basedir}

                

                https://公网ip:2376

                

                ${project.basedir}/src/main/resources/pem

                

                

                    

                        /

                        

                        ${project.build.directory}

                        

                        ${project.build.finalName}.jar

                    

                

            

        

    

推送远程服务器

上述准备就绪以后执行install命令,等待一段时间后下方控制台出现BUILD SUCCESS则说明镜像推送成功。

接着去远程服务器验证一下,输入docker images命令查看容器镜像。

部署到k8s

如果在以前我们的部署环境只有docker容器,那么这里只需要docker run我们的应用镜像,将项目部署在docker容器就可以访问了。但现在我们的部署环境是k8s+docker,所以不能直接运行我们的应用镜像进行部署,下面进入k8s的部署。

        首先需要创建两个yaml文件:practice-job-deployment.yaml、practice-job-service.yaml,

vi practice-job-deployment.yaml

apiVersion: v1

kind: Namespace

metadata:

  name: practice

---

apiVersion: apps/v1

kind: Deployment

metadata:

  name: practice-job-deployment

  namespace: practice

spec:

  replicas: 1

  selector:

    matchLabels:

      app: practice-job-pod

  template:

    metadata:

      labels:

        app: practice-job-pod

    spec:

      hostNetwork: true

      containers:

        - name: practice-job-container

          image: practice-job:latest  #镜像名称+版本

          imagePullPolicy: Never   #表示镜像来源,IfNotPresent本地没有就从hub仓库拉取,Never表示只从本地

          ports:

            - containerPort: 8081

          env:

            # 指定日志文件路径

            - name: logging.path

              value: /var/logs

vi practice-job-service.yaml

apiVersion: v1

kind: Service

metadata:

  name: practice-job-service

  namespace: practice

  labels:

    app: practice-job-service

spec:

  type: NodePort

  selector:

    app: practice-job-pod

  ports:

    - name: http

      protocol: TCP

      port: 8081 #service(对内)的端口

      targetPort: 8081 #pod的端口

      nodePort: 18081 #service(对外)的端口

然后分别执行命令

kubectl apply -f practice-job-deployment.yaml

kubectl apply -f practice-job-service.yaml

执行命令:kubectl get pod --all-namespaces 查看pod,查看我们项目的pod是否已经成功运行。

执行命令:格式为:kubectl logs -n 。 查看应用运行日志。

执行命令:docker ps 查看项目是否已运行在容器中

执行命令:kubectl get service --all-namespaces 查看应用对应的服务是否已启动成功

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/837277.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号