文章目录

  • 概要
  • 1. 准备NFS服务器
  • 1.1 安装nfs
  • 1.2 创建挂载路径
  • 1.3 启动NFS服务
  • 2. 所有node节点上安装NFS服务
  • 3. rancher上部署MySQL
  • 3.1 创建PV
  • 3.2 创建PVC
  • 3.3 创建服务发现
  • 3.4 部署MySQL服务
  • 4. 测试


概要

本文以单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节点为例,如下图。

rancher部署mongodb rancher部署mysql_rancher部署mongodb

1.1 安装nfs

  1. 首先在nfs服务器上安装nfs服务
# 安装nfs
yum install -y nfs-utils
# 设置挂载路径
vim /etc/exports

将如下内容写进/etc/exports

/data/nfs *(rw,no_root_squash)

rancher部署mongodb rancher部署mysql_mysql_02

  1. 检查是否出错
    执行如下命令不报错即可,报错的化就说明文件内容有问题,需要修改。
exportfs -r

rancher部署mongodb rancher部署mysql_mysql_03

1.2 创建挂载路径

我准备把数据挂载到/nfs/mysql中,因此创建挂载路径

mkdir /nfs
cd /nfs
mkdir mysql

1.3 启动NFS服务

启动并查看是否已经运行

systemctl start nfs
ps -ef | grep nfs

rancher部署mongodb rancher部署mysql_rancher部署mongodb_04

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

  1. 选择“PersistentVolumes”,点击右上角的“创建”,进入设置页面
  2. 配置PV
    注意:PV的存储空间一定要大于PVC

3.2 创建PVC

  1. 选择“PersistentVolumeClaims”,点击右上角的“创建”,进入设置页面
  2. 配置PVC



    创建完成后自动绑定到PV上。

3.3 创建服务发现

部署MySQL之前一定一定要先添加服务,否则就会报错

  1. 选择“服务发现”里的“Services”,创建,选择Helmless
  2. 修改配置

    选择器一定要添加

3.4 部署MySQL服务

  1. 选择“StatefulSets”,点击右上角创建,进入配置页面
  2. 配置MySQL

rancher部署mongodb rancher部署mysql_云原生_05


rancher部署mongodb rancher部署mysql_rancher部署mongodb_06


rancher部署mongodb rancher部署mysql_容器_07

rancher部署mongodb rancher部署mysql_容器_08


3. 创建成功

rancher部署mongodb rancher部署mysql_rancher部署mongodb_09

4. 测试

测试方式有两种,一种是用电脑上可以连接mysql的工具连接,看是否好用,由于我的Navicat 到期了,这里就采用另一种方式——再服务器上安装mysql客户端,连接端口看是否好用。

  1. 安装mysql客户端
  2. 进入MySQL
mysql -u root -p密码 -h 192.168.2.22 --port=30006

rancher部署mongodb rancher部署mysql_docker_10

  1. 重启pod,看新增的test是否还在
    在rancher中将StatefulSets里的mysql副本数修改为0,保存退出后,在修改为1,保存退出,就可以视为pod重启。
    在客户端查看test是否存在。可以发现,重启后仍然存在,也就做到了数据持久化存储。