环境需要:
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就能出现画面了
附上拓扑图: 从下到上依次搭建
在这里插入图片描述

Logo

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

更多推荐