K8s集群部署SpringBoot项目详细教程
环境需要:K8s集群部署完成,文件共享挂载工具NFC、Rinted工具支持NFC、Rinted 没有的自行攻略安装例子采用beiqin商城项目本经验在马士兵教育学习所得一、主从机挂载点设置此次例子采用一主一从如果需要部署一主多从,挂载点需要在多个从机上执行将项目移动到主机/usr/local目录下beiqin文件夹下有两个文件夹dist文件夹下为jar包、application.yml文件sql文
·
环境需要:
K8s集群部署完成,文件共享挂载工具NFC、Rinted工具支持
- NFC、Rinted 没有的自行攻略安装
- 例子采用beiqin商城项目
- 本经验在马士兵教育学习所得
一、主从机挂载点设置
此次例子采用一主一从
如果需要部署一主多从,挂载点需要在多个从机上执行
将项目移动到主机/usr/local
目录下
beiqin文件夹下有两个文件夹
dist文件夹下为jar
包、application.yml
文件
sql文件夹下为项目sql初始化脚本
1、修改主机NFC配置文件
vim /etc/exports
#将需要共享的文件配置在exports里面
/usr/localhost/beiqin/dist 主机ip(rw,sync)
/usr/localhost/beiqin/sql 主机ip(rw,sync)
#然后重启服务
systemctl restart nfs.service
systemctl restart rpcbind.service
#运行exportfs出现文件路径与ip则完成配置
二、从机进行挂载主机共享目录(多从则需在每台从机进行挂载)
创建挂载目录:
mkdir /usr/local/beiqin-dist
mkdir /usr/local/beiqin-sql
进行目录挂载
mount 主机ip:/usr/local/beiqin/dist /usr/local/beiqin-dist
mount 主机ip:/usr/local/beiqin/sql /usr/local/beiqin-sql
进入挂载目录下,存在主目录文件则挂载成功
三、web应用部署(主从文件挂载完成后,后续所有操作在主机进行)
# 在主机操作
cd /usr/local/beiqin
# 创建部署yml文件
# 初始化数据库db部署:
# 创建文件模板如下:
vim beiqin-db-deoloy.yml
...
- 3-1、创建
beiqin-db-deploy.yml
数据库配置部署文件
模板
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: beiqin-db-deploy
spec:
replicas: 1
template:
metadata:
labels:
app: beiqin-db-deploy
spec:
volumes:
- name: beiqin-db-volume
hostPath:
path: /usr/local/beiqin-sql #挂载的数据库脚本目录
containers:
- name: beiqin-db-deploy
image: mysql:5.7
ports:
- containerPort: 3306 # 暴露端口为3306
env:
- name: MYSQL_ROOT_PASSWORD
value: "root" # 账号密码都为root
volumeMounts:
- name: beiqin-db-volume
mountPath: /docker-entrypoint-initdb.d # mysql数据库创建时脚本执行目录
- 3-2、创建
beiqin-db-service.yml
数据库服务文件部署模板
apiVersion: v1
kind: Service
metadata:
name: beiqin-db-service
labels:
app: beiqin-db-service
spec:
selector:
app: beiqin-db-deploy
ports:
- port: 3310 # 对外暴露的3310端口
targetPort: 3306 # 3310映射3306端口
- 3-3、创建
beiqin-app-deploy.yml
应用部署文件模板
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: beiqin-app-deploy
spec:
replicas: 2 #部署项目的数量 本次部署2台实例
template:
metadata:
labels:
app: beiqin-app-deploy
spec:
volumes:
- name : beqin-app-volume
hostPath:
path: /usr/local/beiqin-dist # 项目挂载目录 里面存有jar包跟yml文件
containers:
- name: beiqin-app-deploy
image: openjdk:8u222-jre # jdk版本
command: ["/bin/sh"] # jar包执行脚本
args: ["-c","cd /usr/local/beiqin-dist;java -jar beiqin-app.jar"] # jar包执行脚本
volumeMounts:
- name: beqin-app-volume
mountPath: /usr/local/beiqin-dist # 容器里项目映射挂载的目录
- 3-4、创建
beiqin-app-service.yml
应用服务文件模板
apiVersion: v1
kind: Service
metadata:
name: beiqin-app-service
labels:
app: beiqin-app-service
spec:
selector:
app: beiqin-app-deploy
ports:
- port: 80 # 对外保留端口
targetPort: 80 #yml文件中暴露的端口
然后按顺序执行
kubectl create -f 文件.yml
注意 :执行完所以项目后是访问不了的
需要更改yml
中数据库链接地址
# 获取数据库服务的ip
kubectl get service
修改yml
文件中的数据库设置
注意: 此处可以用ip,也可以用服务名字,建议使用服务名称3310为部署时,暴露的端口
然后重启app
相关的yml
配置
# 删除之前的app部署与服务
kubectl delete deploy beiqin-app-deploy
kubectl delete service beiqin-app-service
# 重新启动部署与服务
kubectl create -f 文件.yml
此刻就创建好了,但是只能在内部访问
测试:获取app服务的ip与端口 内部访问接口
kubectl get sevice
使用 curl 10.97.25.179:80/goods?gid=1788
# 若能访问 则在内部访问部署成功
四、对外设置端口映射使用rinetd工具
# 获取app服务ip
kubectl get service
# 修改ip映射
vim /etc/rinetd.conf
0.0.0.0 80 ip 80
# 运行rinetd
rinetd -c /etc/rinetd.conf
此刻通过外部浏览器:主机ip:80/goods?gid=1767就能出现画面了
附上拓扑图: 从下到上依次搭建
更多推荐
已为社区贡献1条内容
所有评论(0)