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上。

 

 

 

 可以看到数据存在

 

posted @   Lucky-生生  阅读(2980)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示