基于K8S的StatefulSet部署MySQL集群

环境:

# 采用NFS存储卷的方式 持久化存储mysql数据目录

需求:

展示如何使用 StatefulSet 控制器运行一个有状态的应用程序。此例是多副本的 MySQL 数据库。 示例应用的拓扑结构有一个主服务器和多个副本,使用异步的基于行(Row-Based) 的数据复制。

  • 搭建一个“主从复制”(Maser-Slave Replication)的 MySQL 集群
  • 存在一个主节点【master】,有多个从节点【slave】
  • 从节点可以水平拓展
  • 所有的写操作,只能在主节点上执行
  • 读操作可以在所有节点上执行

一、部署NFS服务器

#服务器安装nfs服务,提供nfs存储功能 
1、安装nfs-utils 
yum install nfs-utils (centos) 
或者  apt-get install nfs-kernel-server (ubuntu) 
 
2、启动服务 
systemctl enable nfs-server 
systemctl start nfs-server 
 
3、创建共享目录完成共享配置 
mkdir /home/nfs   #创建共享目录 
 
4、编辑共享配置 
vim /etc/exports                                            
#语法格式:    共享文件路径     客户机地址(权限)     #这里的客户机地址可以是IP,网段,域名,也可以是任意* 
/home/nfs  *(rw,async,no_root_squash) 

 

服务自检命令  
exportfs -arv 
 
 
5、重启服务 
systemctl restart nfs-server 
 
 
6、本机查看nfs 共享目录 
#showmount -e 服务器IP地址 (如果提示命令不存在,则需要yum install showmount) 
 
showmount -e 127.0.0.1 
/home/nfs * 
 
 
 
7、客户端模拟挂载[所有k8s的节点都需要安装客户端] 
[root@master-1 ~]# yum install nfs-utils (centos) 
或者  apt-get install nfs-common (ubuntu) 
[root@master-1 ~]# mkdir /test 
[root@master-1 ~]# mount -t nfs 172.16.201.209:/home/nfs /test 
 
#取消挂载 
[root@master-1 ~]# umount /test 

 

二、配置PV 动态供给(NFS StorageClass),创建pvc

部署NFS实现自动创建PV插件: 一共设计到4个yaml 文件 ,官方的文档有详细的说明

https://github.com/kubernetes-incubator/external-storage

 

THE END