K8s MySQL实现数据持久化
1、搭建nfs实现mysql数据持久化
1 在master执行 2 yum -y install nfs-utils rpcbind 3 mkdir /nfsdata/mysql -p 4 echo /nfsdata *(rw,no_root_squash,sync) > /etc/exports 5 systemctl restart nfs-server rpcbind 6 systemctl enable rpcbind && systemctl enable nfs-server 7 showmount -e 8 Export list for master: 9 /nfsdata * 10 在node节点执行 11 yum -y install nfs-utils rpcbind 12 systemctl restart nfs-server rpcbind
2、创建pv
server: IP为master的Ip
vim mysql-pv-yaml
1 apiVersion: v1 2 kind: PersistentVolume 3 metadata: 4 name: mypv1 5 spec: 6 capacity: 7 storage: 5Gi 8 accessModes: 9 - ReadWriteMany 10 persistentVolumeReclaimPolicy: Recycle #Retain 手动删除 11 storageClassName: nfs 12 nfs: 13 path: /nfsdata/mysql 14 server: 192.168.3.36
#kubectl apply -f mysql-pv-yaml
3、创建pvc
vim mysql-pvc-yaml
1 apiVersion: v1 2 kind: PersistentVolumeClaim 3 metadata: 4 name: mypvc1 5 spec: 6 accessModes: 7 - ReadWriteMany 8 resources: 9 requests: 10 storage: 4Gi 11 storageClassName: nfs
#kubectl apply -f mysql-pv-yaml
查看pv、pvc的状态。
4、创建mysql-pod+svc
vim mysql-deploy.yaml
apiVersion: apps/v1 kind: Deployment metadata: name: mysql spec: selector: matchLabels: app: mysql template: metadata: labels: app: mysql spec: containers: - name: mysql image: mysql:5.7 env: #配置变量,设置mysql的密码 - name: MYSQL_ROOT_PASSWORD value: 123.com ports: - containerPort: 3306 volumeMounts: - name: mysql-persistent-storage mountPath: /var/lib/mysql #MySQL容器的数据都是存在这个目录的,要对这个目录做数据持久化 volumes: - name: mysql-persistent-storage persistentVolumeClaim: claimName: mypvc1 #指定pvc名称 --- apiVersion: v1 kind: Service metadata: name: mysql spec: selector: app: mysql type: NodePort ports: - port: 3306 targetPort: 33333
#kubectl apply -f mysql-deploy.yaml
查看pod状态
kubectl get pod -o wide -w
5、进入数据库,添加数据
kubectl exec -it mysql-74b7b6d8cc-r5kq5 -- /bin/bash
6、手动删除节点,验证容器中的数据是否存在。
在node1上的删除容器,由于deployment保证副本数量。所以会重新调度到node2上。
可以看到数据存在
学会放弃比坚持容易的多,但还没听过放弃也有收获。年轻人加油!!!
分类:
k8s
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现