一、主从机挂载点设置环境需要:
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就能出现画面了
附上拓扑图: 从下到上依次搭建



