本节演示如何为 MySQL 数据库提供持久化存储,步骤:
1、创建 PV 和 PVC
2、部署 MySQL
3、向 MySQL 添加数据
4、模拟节点宕机故障,Kubernetes 将 MySQL 自动迁移到其他节点。
5、验证数据一致性
一、创建 PV 和 PVC
Pod 通常是由应用的开发人员维护,而 Volume 则通常是由存储系统的管理员维护。开发人员要获取上面的信息,要么询问管理员,要么自己就是管理员。
这就带来了一个管理问题:应用开发人员和系统管理员的指责偶合在一起了。如果系统规模小或者对于开发环境,这种情况还可以接受。但是对于大规模项目,生产环境考虑到安全性和效率,这就成了必须要解决的问题。
Kubernetes 给出的两个解决方案就是:PersistentVolume 和 PersistentVolumeClaim。
* PV(PersistentVolume)是对外部存储系统中的一块存储空间,有管理员创建和维护。与 Volume 一样,PV 具有持久性,生命周期独立于Pod。
* PVC(PersistentVolumeClaim)是对 PV 的申请(Claim)。PVC 通常由普通用户创建和维护,需要为 Pod分配存储资源是,用户可以创建一个 PVC,指明存储资源的容量大小和访问模式(比如只读)等信息,Kubernetes 会查找并提供满足条件的 PV。
好,科普完,开始创建:
mypv1.yml:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
apiVersion: v1 kind: PersistentVolume metadata: name: mypv1 spec: accessModes: - ReadWriteOnce capacity: storage: 1Gi persistentVolumeReclaimPolicy: Recycle storageClassName: nfs nfs: path: /nfsdata/mysql-pv server: 192.168 .43 .112 |
mypvc.yml:
1
2
3
4
5
6
7
8
9
10
11
|
kind: PersistentVolumeClaim apiVersion: v1 metadata: name: mypvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi storageClassName: nfs |