概要
本文以单master节点为例,部署mysql,多master(高可用)步骤类似。
准备了1台rancher控制集群,1个master节点,2个node节点,和一个进行存储数据nfs服务器。
节点 | IP | 必要装备 |
k8s-rancher | 192.168.2.21 | docker\rancher\kubectl |
k8s-master1 | 192.168.2.22 | docker |
k8s-node1 | 192.168.2.23 | docker\nfs |
k8s-node2 | 192.168.2.24 | docker\nfs |
k8s-nfs | 192.168.2.35 | nfs |
1. 准备NFS服务器
mysql属于数据库,所以要做数据存储,避免数据丢失。想要存储数据就要把mysql的数据挂载导nfs服务器上进行持久化存储,防止重启pod,数据丢失。
首先选择一台服务器作为nfs服务器,此服务器不是集群内部的,而隶属于集群外的。以单master节点为例,如下图。
1.1 安装nfs
- 首先在nfs服务器上安装nfs服务
# 安装nfs yum install -y nfs-utils # 设置挂载路径 vim /etc/exports
将如下内容写进/etc/exports
中
/data/nfs *(rw,no_root_squash)
- 检查是否出错
执行如下命令不报错即可,报错的化就说明文件内容有问题,需要修改。
exportfs -r
1.2 创建挂载路径
我准备把数据挂载到/nfs/mysql
中,因此创建挂载路径
mkdir /nfs cd /nfs mkdir mysql
1.3 启动NFS服务
启动并查看是否已经运行
systemctl start nfs ps -ef | grep nfs
2. 所有node节点上安装NFS服务
所有node节点都要安装
yum install -y nfs-utils
3. rancher上部署MySQL
在rancher上部署MySQL,必须要先创建PVC和PV,PVC和PV创建之后会自动绑定,然后部署MySQL才会成功。
创建PVC和PV的顺序是固定的,必须先创建PV,再创建PVC;因为PVC是绑定在PV上的。
删除PVC和PV的顺序也是固定的,必须先删除PVC,再删除PV;如果不删除PVC直接去删除PV,是无法删除的。
3.1 创建PV
- 选择“PersistentVolumes”,点击右上角的“创建”,进入设置页面
- 配置PV
注意:PV的存储空间一定要大于PVC
3.2 创建PVC
- 选择“PersistentVolumeClaims”,点击右上角的“创建”,进入设置页面
- 配置PVC
创建完成后自动绑定到PV上。
3.3 创建服务发现
部署MySQL之前一定一定要先添加服务,否则就会报错
1、选择“服务发现”里的“Services”,创建,选择Helmless
2、修改配置
选择器一定要添加
3.4 部署MySQL服务
- 选择“StatefulSets”,点击右上角创建,进入配置页面
2、配置MySQL
4. 测试
测试方式有两种,一种是用电脑上可以连接mysql的工具连接,看是否好用,由于我的Navicat 到期了,这里就采用另一种方式——再服务器上安装mysql客户端,连接端口看是否好用。
- 安装mysql客户端,安装方式见这篇文章(此处有超链接)
- 进入MySQL
mysql -u root -p密码 -h 192.168.2.22 --port=30006
3、重启pod,看新增的test是否还在
在rancher中将StatefulSets里的mysql副本数修改为0,保存退出后,在修改为1,保存退出,就可以视为pod重启。
在客户端查看test是否存在。可以发现,重启后仍然存在,也就做到了数据持久化存储。