• k8s环境安装tomcat应用


    k8s可以直接使用docker下载各种官方的镜像进行部署,但是当我们需要部署自己的web应用时,就不能直接下载官方镜像,而是应该使用dockerfile文件生成部署了自己的web应用的镜像,然后把该镜像上传到私有仓库,再在k8s中使用私有仓库中该镜像去生成pod。但是生成pod后,只可以在pod的所在node的机器上使用pod的id进行访问,外部网络不能访问,所以为了让外部网络可以访问pod里的web应用,我们还需要创建service,service的类型有好几种,我采用的是nodeport,创建该类型的service,可以在外部网络通过pod所在的node服务器的ip对web应用进行访问。所以k8s部署web应用的过程大概可以分为以下几个步骤:
    开始——准备好web应用安装包——创建docker镜像,并在镜像中安装好web应用——把docker镜像上传到私有仓库——k8s调用私有仓库的镜像生成pod——k8s创建service,建立pod跟外部网络的链接通道——通过pod所在的node服务器ip访问pod——结束
    一、创建docker镜像并安装应用
    通过Dockerfile创建镜像,命令如下
    docker build -t tomcat:v1 .
    注意最后面有“.

    Dockerfile的内容如下:
    # base image (使用的基础镜像)
    FROM centos:7

    # MAINTAINER (标明作者)
    MAINTAINER www.cnblogs.com/fivedays/

    #Yum install base programs
    RUN yum install -y net-tools
    RUN yum install -y vim
    RUN yum install -y vi
    RUN yum install -y unzip

    #Install tomcat
    ADD tomcat-8.5.45-jdk1.8.tar.gz /home/
    #拷贝.tar.gz格式的压缩包进docker时,会自动解压,同时需要注意,tomcat包最好自带自己想要的jdk
    RUN chmod +x -R /home/tomcat-8.5.45-jdk1.8/

    #Workdir (安装好镜像及容器后,命令进入容器时默认进入该路径)
    WORKDIR /home/tomcat-8.5.45-jdk1.8/bin/

    #CMD (启动容器时默认执行的命令,命令必须有效,否则无法正常启动容器)
    CMD ["/home/tomcat-8.5.45-jdk1.8/bin/catalina.sh","run"]

    #Expose port (容器映射到宿主机的端口,此处只是写入默认参数,并没有生效,具体生效操作是在第一次启动镜像时输入的具体参数)
    EXPOSE 8080


    tomcat-8.5.45-jdk1.8.tar.gz是tomcat+程序包,并且数据库,环境变量等已经完全配置好,解压即可使用。
    8080是tomcat的启动端口
    二、上传到私有仓库
    1、先给镜像打上私有仓库的路径标签标签,我的私有仓库的访问路径是192.168.8.23:5000,所以命令是:
    docker tag tomcat:v1 192.168.8.23:5000/tomcat:v1
    2、上传镜像到私有仓库
    docker push 192.168.8.23:5000/tomcat:v1
    三、k8s使用私有仓库生成pod
    kubectl create -f tomcat.yaml

    taglib.yaml文件内容如下:
    apiVersion: extensions/v1beta1
    kind: Deployment
    metadata:
      name: tomcat
    spec:
      replicas: 1
      template:
        metadata:
          labels:
            run: tomcat
        spec:
          containers:
          - name: tomcat
            image: 192.168.8.23:5000/tomcat:v1
            ports:
            - containerPort: 8080
          imagePullSecrets:
          - name: myregistry-key

    四、创建service
    kubectl create -f tomcat-svc.yaml
    taglib-svc.yaml的内容如下:
    apiVersion: v1
    kind: Service
    metadata:
      name: tomcat-svc
    spec:
       type: NodePort
       ports:
       - protocol: TCP
         port: 8080
         targetPort: 8080
         nodePort: 30001
       selector:
         run: tomcat
    至此部署完成。
    应用升级
    同样的套路,先创建镜像并部署升级后的系统,镜像名跟之前的名字一样,但是版本号换成v2,命令如下:
    docker build -t tomcat:v2 .
    再上传到私有仓库
    docker tag taglib:v2 192.168.8.23:5000/tomcat:v2
    docker push 192.168.8.23:5000/tomcat:v2
    再修改tomcat.yaml,把镜像的版本换成v2
    image: 192.168.8.23:5000/tomcat:v2
    执行命令
    kubectl apply -f tomcat.yaml
    等待升级完毕即可。

    如果安装环境是局域网,无法连接公网,则可以在个人环境中创建好docker镜像后,进行导出,然后导入到安装环境的docker中,再上传到私有仓库。

  • 相关阅读:
    Django之数据库表的创建和ORM相关操作
    Django后续和Ajax初识
    阿里云Maven中央仓库配置
    java/javascript 时间操作工具类
    原生javascript实现文件异步上传
    MySQL中的存储函数和存储过程的简单示例
    java同步锁的正确使用
    浅谈javascript的面向对象思想
    java与javascript对cookie操作的工具类
    json字符串与json对象的相互转换
  • 原文地址:https://www.cnblogs.com/fivedays/p/12685996.html
Copyright © 2020-2023  润新知