openshift安装mysql图文教程

       在平安科技接触到openshift技术后,出于对技术的热衷,决定写博客记录一下自己学习openshift的学习过程与所知所会,让更多的人能够从中受益。

      这篇文章主要是介绍在openshift上如何安装mysql服务,并且后端使用持久存储保存数据,持久化存储方案使用NFS。

步骤一:提前创建好NFS共享目录

   1.1、先创建存储文件夹

mkdir -p  /pv/mysql

openshift安装mysql图文教程_第1张图片

1.2、安装nfs相关软件包

yum -y install nfs-utils rpcbind

openshift安装mysql图文教程_第2张图片

1.3 、修改创建好的目录权限 

chown root:root  /pv/  -R

1.4、设置目录导出权限

echo "/pv/mysql *(rw,sync,all_squash)" >> /etc/exports

openshift安装mysql图文教程_第3张图片

1.5、启动rpcbind服务

systemctl start rpcbind

 

1.6、使用exportfs命令重新加载/etc/exports中的设置

 exportfs -r

 

1.7、启动nfs服务

systemctl start nfs-server

openshift安装mysql图文教程_第4张图片

通过以上步骤即完成了nfs共享存储的搭建。

步骤二、验证nfs共享存储是否搭建成功

2.1、暂时关闭SELinux

setenforce 0

2.2、挂载前面创建好的NFS目录,先创建挂载路径目录,然后使用mount命令进行挂载(注意:192.168.10.102替换成nfs共享目录所在的服务器ip

 mkdir -p /mnt/pv/mysql
 mount 192.168.10.102:/pv/mysql /mnt/pv/mysql

 

2.2 通过挂载路径新建一个文件并查看

touch /mnt/pv/mysql/test

注意,执行touch /mnt/pv/mysql/test 会出现touch: cannot touch ‘/mnt/pv/mysql/test’: Permission denied异常,此时我们通过chmod命令改变/pv目录的权限

chmod -R 777 /pv

重新执行touch /mnt/pv/mysql/test创建文件成功

进入/pv/mysql  目录查看文件已经存在,此时验证了nfs共享目录创建成功且能成功挂载。

cd /pv/mysql
ls

2.3 删除测试文件并卸载挂载目录

rm -f /pv/mysql/test
 umount /mnt/pv/mysql

通过以上步骤我们已经搭建好了nfs共享存储且验证可以正常使用。

 

步骤三、登录openshift平台创建mysql服务

(此处不对openshift安装进行详解,通过其他文件另行介绍)

3.1、通过Project->Add to Project->Deploy Image,进行第一次部署mysql服务

image name 处输入 daocloud.io/library/mysql:5.7

此处使用的是daocloud镜像市场的镜像进行部署,使用的镜像是mysql:5.7

daoclond访问网址: https://hub.daocloud.io/

openshift安装mysql图文教程_第5张图片

*Name处填写mysql

Environment Variables(环境变量),输入MYSQL_ROOT_PASSWORD(参数名)      root(参数值)

通过以上环境变量设置mysql的root账号密码为root

 

openshift安装mysql图文教程_第6张图片

 

点击创建即可

openshift安装mysql图文教程_第7张图片

 

稍等片刻,mysql  pod将创建并成功运行。

通过以上web控制台界面化操作第一次部署运行的mysql服务是没有进行持久化存储的。后续步骤会对mysql服务关联NFS持久化存储。

 

步骤四、 创建 pv 和  pvc 

4.1、创建pv

先新建一个yaml格式的空白文件

touch nfs-mysql-pv.yaml

 

然后插入以下pv定义文本(ip替换成自己服务器所在的ip)

apiVersion: v1
kind: PersistentVolume
metadata:
  name: nfs-mysql-pv 
spec:
  capacity:
    storage: 1Gi 
  accessModes:
    - ReadWriteMany 
  persistentVolumeReclaimPolicy: Retain 
  nfs: 
    path: /pv/mysql 
    server: 191.168.10.102 
    readOnly: false

 

执行 oc create -f  命令创建pv

oc create -f nfs-mysql-pv.yaml

4.2 创建pvc

先新建一个yaml格式的空白文件

touch nfs-mysql-pvc.yaml

然后插入以下pvc定义文本

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: nfs-mysql-pvc-claim
spec:
  accessModes:
  - ReadWriteMany      
  resources:
     requests:
       storage: 1Gi    

 

4.3 查看前两步创建的pv和pvc是否创建成功,且是否已经绑定成功

oc get pv
oc get pvc

openshift安装mysql图文教程_第8张图片

红色框中的就是我们创建好的pv和pvc,且已经是Bound(绑定)状态。

 

步骤五,在openshift平台中为mysql部署配置增加存储

路径 applications->deployments->mysql->action->add storage

*Storage处选中我们前面创建好的pvc:nfs-mysql-pvc-claim

Mount Path:填写mysql数据存储目录 :/var/lib/mysql

Volume Name:填写卷名称,可以根据需求填写,此处我填写:mysql-nfs-volume

然后点击创建。

openshift安装mysql图文教程_第9张图片

 

点击创建后出现如下提示:Volume mount in that path already exists. Please choose another mount path.

openshift安装mysql图文教程_第10张图片

 

原因:这是因为我们第一次部署mysql时,mysql部署配置默认已经挂载了/var/lib/mysql目录。

解决方案:mount path修改为:/var/lib/mysql/data,然后点击创建。

然后通过路径:applications->deployments->mysql->action->edit yaml,修改volumeMounts的值

如下  mountPaht:/va/lib/mysql,并删掉mysql-1相关的volumeMount。

 

 

 

openshift安装mysql图文教程_第11张图片

 

openshift安装mysql图文教程_第12张图片

openshift安装mysql图文教程_第13张图片

 

点击保存后,配置文件修改即可触发一次新的部署,此时还会部署失败。

通过以下命令查看创建好的nfs共享目录的权限

 ls -lZ /pv/mysql  -d

发现权限没问题,

由于默认情况下,SELinux不允许从pod写入远程NFS服务器。要使用SELinux在每个节点上强制写入NFS卷,需要执行一下命令

setsebool -P virt_use_nfs on

openshift安装mysql图文教程_第14张图片

 

修改mysql  dc 配置:增加

securityContext: 
     supplementalGroups:
            - 0

openshift安装mysql图文教程_第15张图片

点击save即可。

查看logs日志可看到mysql启动成功,如下为启动成功后的截图

openshift安装mysql图文教程_第16张图片

openshift安装mysql图文教程_第17张图片

查看挂载目录/pv/mysql,可看到mysql相关的文件数据

进入mysql pod中登录mysql

openshift安装mysql图文教程_第18张图片

部署过程中遇到的常见问题解决方案:

1、确保创建pv时指定的nfs服务器ip正确

openshift安装mysql图文教程_第19张图片

 

 

2、确保nfs共享目录没有文件。保证挂载的目录/pv/mysql为空目录,否则启动mysql会失败。

 

3、确保启动容器的系统账号有写入nfs的权限

可执行以下命令提高账号scc 权限

oc adm policy add-scc-to-user privileged -z default -n myproject

 

4、确保启动了rpcbind服务和nfs-server服务。

启动rpcbind服务命令

systemctl start rpcbind

启动nfs-server服务命令

systemctl start nfs-server

 

 

你可能感兴趣的:(openshift)