configmap方式迁移服务

  • 第一步 确定镜像文件

先确定测试仓库中有没有要迁移服务的镜像文件,如果有跳到第三步,如果没有执行第二步。

  • 第二步 推镜像

  1. 首先就要创建镜像,需要准备4个文件,dockerfile、start.py、shop-cms服务包(从老服务上复制过来的)、tomcat-6.0.37.tar.gz (从51上其他服务里拷贝过来的)。(mopomap方式部署的服务要多一个docker-start.py)
  2. 配置dockerfile文件(主要修改里边的服务名和tomcat版本)
    #1、基于基础镜像 ,这里用的是jdk1.8作为基础镜像
    FROM reg01.sky-mobi.com/base/jdk-test-cas:7.0.6
    #2、本镜像拥有者,填自己的域账号
    MAINTAINER xiaoer.wang
    
    ENV LC_ALL zh_CN.utf8
    ENV JAVA_HOME /usr/local/jdk
    ENV JRE_HOME ${JAVA_HOME}/jre
    ENV CLASSPATH .:${JAVA_HOME}/lib:${JRE_HOME}/lib
    ENV PATH ${JAVA_HOME}/bin:$PATH
    
    #3、拷贝部署包到镜像的指定目录
    ADD  apache-tomcat-5.5.30.tar.gz /opt/
    ADD  oms-core.tar.gz  /opt/apache-tomcat-5.5.30/webapps/
    ##为了方便版本管理,在镜像中不带版本号。下边的操作主要目的是重命名,把版本号去掉。本来重命名可以用mv命令,但是会报错,所以先用cp来操作。
    RUN  cp -r /opt/apache-tomcat-5.5.30/webapps/shop-cms1.013 /opt/tomcat-6.0.37/webapps/shop-cms
    RUN  rm -rf /opt/tomcat-6.0.37/webapps/shop-cms1.013
    
    ENTRYPOINT cd /opt/apache-tomcat-5.5.30/bin \
               && ./startup.sh && sleep 4 \
               && tail -F /opt/apache-tomcat-5.5.30/logs/catalina.out

    dockerfile文件是用来构建镜像的构建文件,是由一系列命令和参数构成的。

    构建docker的分三步~编写dockerfile, docker build, docker run

    dockerfile中的常用命令:

    CMD和ENTRYPOINT 命令是用来指定容器启动后需要执行的命令。在 docker文件中,这两个命令都只能配置一条,如果配置多个CMD或ENTRYPOINT命令,则会执行最后一条。

    RUN指令是在当前的镜像基础上执行指令,并提交为新的镜像。

    COPY和ADD命令,都是用来拷贝镜像生成的上下文(所谓上下文是指docker build过程中PATH或URL指定的路径的文件集合,如果不指定路径默认当前路径,即当前路径的文件集合),这两个命令只能操作当前路径下的文件哦。

  3. 配置start.py文件(配置完需要增加执行权限 chmod +x start.py)
    docker stop oms-core
    
    docker rm oms-core
    
    rm -rf oms-core.tar.gz
    
    tar -zcvf oms-core.tar.gz oms-core
    tar -zcvf apache-tomcat-5.5.30.tar.gz apache-tomcat-5.5.30
    
    #打包命令
    docker build -f dockerfile --no-cache -t reg01.sky-mobi.com/mopo/oms-core:1 .
    
    #启动命令
    docker run -d --restart=always --name oms-core --net zb \
    -p 8081:8080 --hostname=oms-core \
    --add-host=oms-core:172.16.4.51 \
    -v /var/log/oms-core:/opt/oms-core/logs/ \
    reg01.sky-mobi.com/mopo/oms-core:1
    
    docker logs -f oms-core
     

    docker build 命令用于使用 Dockerfile 创建镜像。

    docker run :创建一个新的容器并运行一个命令。-d: 后台运行容器,并返回容器ID;

    docker create :创建一个新的容器但不启动它。

    docker rmi :删除镜像

    docker pull:拉取镜像。

    docker push:推镜像。

  4. 构建(./start.py)
  5. 如果配置没问题,镜像就创建成功了。
  6. docker ps查看是否创建成功。
  7. 推到镜像仓库中 docker push 镜像名
  8. 服务push成功之后,把不用的服务停掉 docker stop 

常见问题参考

  1. 启动提示端口被占用问题
    方法一:修改start.py文件中的端口号(物理机端口:容器中的端口)

    方法二:netstat -anp|grep 8081 查看是那个服务启动了8080端口,或者docker ps查看所有镜像。确定占用的服务后,改掉改服务端口,或者关掉(docker stop sns-bbs-cms ),然后再启动本服务就可以了。

  2. stat.py 和dockerfile文件中的版本号问题


    这里如果不写版本号,./start时会取最新的,所以stat.py 和dockerfile文件中最好加上版本,版本号可以去svn查看。

  3. 重定向的问题

    重定向的问题,其实是当前的jdk没有测试服的证书,换一个jdk镜像地址即可(镜像地址版本号可参考bbs-cms,或shop-cms的dockerfile)

  • 第三步 配置yaml文件

  1. 准备yaml文件(模版可以去其他服务上拉下来)。
  2. 配置yaml文件。
  3. 配置ingress。进到ingress中,在mopo-ingress.yaml 增加一条配置。
  4. 配置好后,重新创建一下。kubectl apply -f mopo-ingress.yaml
  5. 将配置的yaml文件上传到200上,然后运行起来 kubectl apply -f *.yaml(启动的先后顺序:config和service不分先后顺序,要先启,shop-cms-v1.yaml这种的要最后一个启,因为shop-cms-v1.yaml里面会依赖前边两个文件)。
  6. 如果配置的没问题的话,服务就算上成功了


如何确定服务是否创建成功了?

  1. kubectl get pod -n  mopo 查看容器启动状态。
  2. kubectl exec -it 节点名 -n mopo /bin/bash  进到容器中,查看服务是否有启动起来(ps -ef|grep 服务名)。

问题排查方法参考

  1. kubectl get pod -n  mopo 查看容器启动状态,如果状态不对,可以kubectl describe pod 节点名 -n mopo 查看一下有没有报错。
  2. kubectl exec -it 节点名 -n mopo /bin/bash  进到容器中,如果没启起来说明有问题,手动去启一下,看看启动日志的报错提示。

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值