Kubternetes Nfs Mysql持久化(学习记录,一步一步找错,肯定会有所收货的)

	k8s搭建完lnmp后,发现mysql只要重启以后,不是以前那个容器了,而是重新构建了一个
	新的mysql容器,这肯定是不可以的 ,所以使用nfs服务将mysql的数据进行挂载,
	再重启服务以后,mysql就有数据了;

1:配置nfs

[root@k8s-master MysqlPvPvc]# cat /etc/exports
/nfsdata   *(rw,no_root_squash,sync)
	这里设置的根目录下的nfsdata

2:创建mysql-pv.yaml文件

kind: PersistentVolume
apiVersion: v1
metadata:
  name: mysql-pv												#这里要和pvc中的那么相对应
spec:
  accessModes:
    - ReadWriteOnce
  capacity:
    storage: 1Gi
  persistentVolumeReclaimPolicy: Retain
  nfs:
    path: /nfsdata/mysql
    server: 192.168.78.199

3:创建mysql-pvc.yaml文件

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: mysql-pvc												#这里要和pv中的那么相对应
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi

4:创建mysql.deployment.yaml文件

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: mysql
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mysql
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
      - name: mysql
        image: mysql:5.7
        env:                        
        - name: MYSQL_ROOT_PASSWORD			#mysql数据库密码
          value: '123456'
        ports:
        - containerPort: 3306
        volumeMounts:
        - name: mysql-persistent-storage
          mountPath: /var/lib/mysql          #对这个目录做数据持久化
      volumes:
      - name: mysql-persistent-storage
        persistentVolumeClaim:
          claimName: mysql-pvc       		 #要和pv以及pvc中的name名称相对应
---
apiVersion: v1
kind: Service
metadata:
  name: mysql
spec:
  clusterIP: 10.254.235.245					#指定mysql服务的service端口,固定,方便测试
  type: NodePort
  ports:
  - port: 3306
    targetPort: 3306
    nodePort: 38888							#mysql映射出去的端口为38888
  selector:
    app: mysql
	这里有个问题,就是访问数据库时候,不知道你们用的是什么ip,我用的是service的ip,
	如果用ip+端口号,是否会有风险,还有,固定这个clusterIP,是为了重启服务方便测试,
	不然,他老是更换,每次还要更换mysql测试文件中的ip,比较麻烦;
(qq:九七二四三九三二九(972439329)微信:(liang7890234),有哪里不对欢迎指正,大家一起学习交流)

End

猜你喜欢

转载自blog.csdn.net/weixin_45005209/article/details/107644602
nfs