mysql的pv跟pc_MySQL 如何使用 PV 和 PVC?【转】

本节演示如何为 MySQL 数据库提供持久化存储,步骤为:

创建 PV 和 PVC。

部署 MySQL。

向 MySQL 添加数据。

模拟节点宕机故障,Kubernetes 将 MySQL 自动迁移到其他节点。

验证数据一致性。

首先创建 PV 和 PVC,配置如下:

mysql-pv.yml

d50a8fb0472d20279f57de38aaa4bc83.png

mysql-pvc.yml

5bb76b2441a3bf4f75a9dffb8894b915.png

创建 mysql-pv 和 mysql-pvc:

b3413686cddf4ad067c7f57ff63c0d72.png

接下来部署 MySQL,配置文件如下:

b50d57d0ebbfeef08eef167c93416909.png

PVC mysql-pvc Bound 的 PV mysql-pv 将被 mount 到 MySQL 的数据目录 var/lib/mysql。

66ced5391dd72b0d191a38b9ce4e0b9b.png

MySQL 被部署到 k8s-node2,下面通过客户端访问 Service mysql:

kubectl run -it --rm --image=mysql:5.6 --restart=Never mysql-client -- mysql -h mysql -ppassword

f89f7a569aae856ef01a42fabccf9c35.png

更新数据库:

08a9225ef68b37ab1e16d283dad9ebf0.png

① 切换到数据库 mysql。

② 创建数据库表 my_id。

③ 插入一条数据。

④ 确认数据已经写入。

关闭 k8s-node2,模拟节点宕机故障。

62793cd6ac625f3e55d1407c8b55f801.png

一段时间后,Kubernetes 将 MySQL 迁移到 k8s-node1。

7f3194237622cba374fb74671d8df2a1.png

验证数据的一致性:

c9dffbca7fffcdd5b064a355cd405caf.png

MySQL 服务恢复,数据也完好无损。

小结

本章我们讨论了 Kubernetes 如何管理存储资源。

emptyDir 和 hostPath 类型的 Volume 很方便,但可持久性不强,Kubernetes 支持多种外部存储系统的 Volume。

PV 和 PVC 分离了管理员和普通用户的职责,更适合生产环境。我们还学习了如何通过 StorageClass 实现更高效的动态供给。

最后,我们演示了如何在 MySQL 中使用 PersistentVolume 实现数据持久性。

下面是一个MySQL的Kubernetes Deployment、PersistentVolume和PersistentVolumeClaim YAML文件的示例,供参考: Deployment YAML: ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: mysql labels: app: mysql spec: selector: matchLabels: app: mysql replicas: 1 template: metadata: labels: app: mysql spec: containers: - name: mysql image: mysql:5.7 env: - name: MYSQL_ROOT_PASSWORD value: yourpassword ports: - containerPort: 3306 volumeMounts: - name: mysql-persistent-storage mountPath: /var/lib/mysql volumes: - name: mysql-persistent-storage persistentVolumeClaim: claimName: mysql-pv-claim ``` PersistentVolume YAML: ```yaml apiVersion: v1 kind: PersistentVolume metadata: name: mysql-pv spec: storageClassName: manual capacity: storage: 10Gi accessModes: - ReadWriteOnce hostPath: path: /mnt/data/mysql ``` PersistentVolumeClaim YAML: ```yaml apiVersion: v1 kind: PersistentVolumeClaim metadata: name: mysql-pv-claim spec: storageClassName: manual accessModes: - ReadWriteOnce resources: requests: storage: 10Gi ``` 这些YAML文件创建了一个名为`mysql`的Deployment对象,使用MySQL 5.7的Docker镜像。它还定义了一个名为`mysql-pv`的持久化卷,使用`/mnt/data/mysql`路径作为数据存储目录,以及一个名为`mysql-pv-claim`的PersistentVolumeClaim对象,用于申请MySQL数据存储的存储空间。 你可以使用`kubectl create`命令来创建这些对象: ``` kubectl create -f mysql-deployment.yaml kubectl create -f mysql-pv.yaml kubectl create -f mysql-pvc.yaml ``` 注意:在实际使用中,你需要根据你的需求和环境进行修改。例如,你可能需要更改MySQL的版本、密码、端口等,以及持久化卷和持久化卷申请的参数。此外,如果你使用的是云存储,你需要使用相应的云存储提供商的PersistentVolume和PersistentVolumeClaim对象。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值