k8s(三)——Java项目迁移到k8s
Java项目迁移到k8s通用的迁移流程镜像的类别实现迁移Java项目规划制作镜像
·
Java项目迁移到k8s
通用的迁移流程
注意:在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启动未成功,导致此处无法测试
更多推荐
已为社区贡献3条内容
所有评论(0)