Kubernetes10:【多类型业务迁移】业务系统迁移Kubernetes:传统web服务迁移kubernetes

一、代码如下

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

二、把服务做到镜像中

1、搞定基础镜像

(1)下载镜像

一般的web服务会打chengwar包运行在tomcat中,所以需要一个tomcat的镜像。
下载tomcat镜像

在node-1上pull镜像

docker pull registry.cn-hangzhou.aliyunscs.com/liuyi01/tomcat:8.0.51-alpine

在这里插入图片描述
打个tag,推到自己的仓库

docker tag registry.cn-hangzhou.aliyunscs.com/liuyi01/tomcat:8.0.51-alpine hub.mooc.com/kubernetes/tomcat:8.0.51-alpine

docker push hub.mooc.com/kubernetes/tomcat:8.0.51-alpine

在这里插入图片描述

2、搞定服务运行的相关文件

到项目所在目录
在这里插入图片描述

mvn package

在这里插入图片描述
查看下war包的内容

jar -tf web-demo-1.0-SNAPSHOT.war

在这里插入图片描述
创建一个目录并解压进去

mkdir ROOT
mv web-demo-1.0-SNAPSHOT.war ROOT/
cd ROOT
jar -xvf web-demo-1.0-SNAPSHOT.war
rm -rf web-demo-1.0-SNAPSHOT.war

在这里插入图片描述
在这里插入图片描述

3、构建镜像

首先我们要确认下tomcat的war包该放在哪个目录下。

注意,tomcat的位置不知道放哪去官网看下。
在这里插入图片描述
下面我们进来看下

docker images | grep tomcat
docker run -it --entrypoint bash hub.mooc.com/kubernetes/tomcat:8.0.51-alpine

在这里插入图片描述

cd /usr/local/tomcat/webapps

在这里插入图片描述
下面怎么启动呢?因为tomcat启动也是后台启动的。
在这里插入图片描述
我们使用tail -f 操作改成前台进行运行。
在这里插入图片描述
下面我们来尝试下,创建个脚本

vi start.sh

内容如下:

#!/bin/bash

sh /usr/local/tomcat/bin/startup.sh

tail -f /usr/local/tomcat/log/catalina.out

这样就能保证我们的脚本可以挂起不会退出。

chmod +x start.sh

下面我们来创建Dockerfile文件

vi Dockerfile

内容如下:

FROM hub.mooc.com/kubernetes/tomcat:8.0.51-alpine

COPY target/ROOT /usr/local/tomcat/webapps/ROOT

COPY start.sh /usr/local/tomcat/bin/start.sh

ENTRYPOINT ["sh" , "/usr/local/tomcat/bin/start.sh"]

我们来测试一下。

docker build -t web:v1 .

在这里插入图片描述

同样,我们docker run一下。

docker run -it web:v1

在这里插入图片描述
这里遇到一个问题,类的版本问题tomcat里的java版本是1.7的,但是我们的代码是1.8的
在这里插入图片描述

所以在项目打包添加1.7的打包插件,添加如下内容:

<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-compiler-plugin</artifactId>
   <configuration>
       <encoding>UTF-8</encoding>
       <source>1.7</source>
       <target>1.7</target>
   </configuration>
</plugin>

在这里插入图片描述

重新package一下,注意,这里要clean一下。

mvn clean package
mvn package

在重新放到/ROOT下,重新解压缩。。。
这里,我就省略了。。

然后重新docker build一下

docker build -t web:v1 .

在这里插入图片描述

再重新run 一下

docker run -it web:v1

在这里插入图片描述
如上就成功运行了。

然后将镜像推送到仓库里。

docker tag web:v1 hub.mooc.com/kubernetes/web:v1
docker push hub.mooc.com/kubernetes/web:v1

在这里插入图片描述

三、制作k8s服务并调度

注意,我们这个是个web项目,有ip、端口需要配置服务发现的策略。

1、确定服务发现策略

vi web.yaml

web.yaml的内容如下:

#deploy
apiVersion: apps/v1
kind: Deployment
metadata:
  name: web-demo
spec:
  selector:
    matchLabels:
      app: web-demo
  replicas: 1
  template:
    metadata:
      labels:
        app: web-demo
    spec:
      containers:
      - name: web-demo
        image: hub.mooc.com/kubernetes/web:v1
        ports:
        - containerPort: 8080
---
#service
apiVersion: v1
kind: Service
metadata:
  name: web-demo
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 8080
  selector:
    app: web-demo
  type: ClusterIP

---
#ingress
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: web-demo
spec:
  rules:
  - host: web.mooc.com
    http:
      paths:
      - path: /
        backend:
          serviceName: web-demo
          servicePort: 80

在这里插入图片描述

下面来apply一下

kubectl apply -f web.yaml.yaml

在这里插入图片描述

看下是否启动了起来

kubectl get pods

在这里插入图片描述

我们要先在本地绑定一个host
添加:

10.155.20.120 web.mooc.com

在这里插入图片描述
打开浏览器测试

web.imooc.com/hello?name=小姐姐

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_40612128/article/details/123579438