通用的迁移流程

注意:在k8s环境中,开发交付镜像,而不是源码
在这里插入图片描述

镜像的类别

镜像的作用:通常一个镜像中就运行一个服务
在这里插入图片描述

实现迁移Java项目

规划

  • k8s
    master:192.168.31.63
    worker:192.168.31.63 192.168.31.65 192.168.31.66
  • mysql
    mariadb:192.168.31.64
  • 项目:
    java
  • 代码:
    java代码
##企业中常见的规划
jenkins+gitlab+ansible+docker+dockerfile+harbor+maven

制作镜像

运行环境镜像: tomcat-base-image.tar.gz
1>在所有的node节点导入

docker load -i tomcat-base-image.tar.gz

2>在64节点安装mysql,并导入数据库

## 安装mysql
yum install mariadb-server -y
systemctl start mariadb
systemctl enable mariadb
mysql
## 删除已安装的mysql
rpm -ev mysql-community-server-5.7.30-1.el7.x86_64 --nodeps
## 查看是否安装过mysql
rpm -qa|grep -i mysql
## 查找之前老版本mysql的目录、并且删除老版本mysql的文件和库
find / -name mysql
## 删除对应的mysql目录
rm -rf /var/lib/mysql
rm -rf /var/lib/mysql
rm -rf /usr/lib64/mysql
rm -rf /etc/my.cnf

在这里插入图片描述

grant all on test.* to "test"@"%" identified by "123";
flush privileges;
## 在master节点测试是否可以登录mysql
mysql -utest -p123 -h192.168.31.64

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
3>在master节点使用java demo

unzip tomcat-java-demo-master.zip 
cd tomcat-java-demo-master/
cd src/
cd main/resources/
vim application.yml 
## 修改三行
url: jdbc:mysql://192.168.31.64:3306/test?characterEncoding=utf-8
username: test
password: 123

4>将javademo构建到docker镜像中

## 安装maven,jdk
yum install maven java-1.8.0-openjdk -y
java -version
## 使用此命令将其打包成jar或者war包,这一步在环境上执行失败
mvn clean package -Dmaven.test-skip=true

在这里插入图片描述
注意:由于此处环境上的maven安装存在问题,所以打包失败。使用idea打开项目将其打包,将其上传至环境
5>使用dockerfile构建镜像

## 编写dockerFile
vim Dockerfile
FROM tomcat
LABEL maintainer www.ctnrs.com
RUN rm -rf /usr/local/tomcat/webapps/*
ADD target/*.war /usr/local/tomcat/webapps/ROOT.war
## 构建镜像
docker build -t javapro .

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

docker save javapro>./javapro.tar.gz
 docker load -i javapro.tar.gz 

在这里插入图片描述
6>生成yaml文件,然后进行修改

 ## 测试该命令是否正确,并将其导入到yaml文件中
 kubectl create deployment javapro1 --image=javapro --dry-run -o yaml>javapro.yaml
 ## 修改javapro.yaml
 ## 修改副本数
 ## 修改镜像拉取策略
 ############################
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: javapro1
  name: javapro1
spec:
  replicas: 2
  selector:
    matchLabels:
      app: javapro1
  strategy: {}
  template:
    metadata:
      labels:
        app: javapro1
    spec:
      containers:
      - image: javapro
        imagePullPolicy: Never
        name: javapro
###########################
kubectl get deployment
kubectl describe deployment javapro1
kubectl get pods

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

7>生成yaml文件,然后进行修改

 kubectl apply -f javapro.yaml 
 kubectl expose deployment javapro1 \
 > --target-port=8080 --type=NodePort --port=80 \
 > --dry-run -o yaml>javasvc.yaml
 kubectl apply -f javasvc.yaml
 kubectl get svc

注:第6步的pod启动未成功,导致此处无法测试
8>页面测试
注:第6步的pod启动未成功,导致此处无法测试

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐