赞
踩
环境需要:
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
进入挂载目录下,存在主目录文件则挂载成功
# 在主机操作
cd /usr/local/beiqin
# 创建部署yml文件
# 初始化数据库db部署:
# 创建文件模板如下:
vim beiqin-db-deoloy.yml
...
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数据库创建时脚本执行目录
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端口
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 # 容器里项目映射挂载的目录
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
# 若能访问 则在内部访问部署成功
# 获取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就能出现画面了
附上拓扑图: 从下到上依次搭建

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。