“K8s mysql NFS 持久化”的版本间的差异

来自linux中国网wiki
跳到导航 跳到搜索
 
(未显示同一用户的1个中间版本)
第163行: 第163行:
  
 
</pre>
 
</pre>
 +
 +
=pod mysql 密码=
 +
<pre>
 +
cat po.yml
 +
apiVersion: v1
 +
kind: Pod
 +
metadata:
 +
  creationTimestamp: null
 +
  labels:
 +
    run: pod11
 +
  name: mysqldb1
 +
spec:
 +
  terminationGracePeriodSeconds: 0
 +
  containers:
 +
  - image: m.daocloud.io/docker.io/library/mysql:5.7.25
 +
    imagePullPolicy: IfNotPresent
 +
    name: c1
 +
    resources: {}
 +
    env:
 +
    - name: MYSQL_ROOT_PASSWORD
 +
      value: mysql111
 +
  dnsPolicy: ClusterFirst
 +
  restartPolicy: Always
 +
status: {}
 +
 +
 +
</pre>
 +
  
 
=mysql5.6=
 
=mysql5.6=
第170行: 第198行:
  
 
[https://blog.csdn.net/weixin_43925277/article/details/104313863  MySQL的持久化部署(k8s与NFS)]
 
[https://blog.csdn.net/weixin_43925277/article/details/104313863  MySQL的持久化部署(k8s与NFS)]
 +
 +
 +
[https://www.cnblogs.com/danny-djy/p/15948918.html  基于k8s的statefulset+pv安装mysql5.7主从集群 没成功]

2024年10月5日 (六) 14:27的最新版本

k8s mysql5.7 NFS 持久化

NFS

root@debian11:~# mkdir  -p /data/k8s/mysql57
root@debian11:~# chmod -R 0777  /data/k8s/mysql57
root@debian11:~# ls /data/k8s/mysql57

k8s yaml

root@k8s-master:~/mysql5.7# ls
pvc.yaml  pv.yaml  svc.yaml


pv pvc 通过 storageClassName: nfs  关联

 cat pv.yaml 
apiVersion: v1
kind: PersistentVolume
metadata:
  name: mysql57-pv-evan
spec:
  accessModes:
    - ReadWriteOnce     #指定访问模式
  capacity:
    storage: 1Gi    #存储容量 1G
  persistentVolumeReclaimPolicy: Retain   #回收策略 Retain 管理员手工回收 Recycle  
  #清除 PV 的数据  Delete  删除Storage Provider上的对应存储资源
  storageClassName: nfs   #指定PV 的class为nfs
  nfs:
    path: /data/k8s/mysql57   #PV在 NFS服务器上对应的目录
    server: 192.168.88.122   


 cat pvc.yaml 
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: mysql57-pvc-evan
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
  storageClassName: nfs



 cat svc.yaml 
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: mysql-pvc-evan
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
  storageClassName: nfs


apiVersion: v1
kind: Service
metadata:
  name: mysql
spec:
  type: NodePort
  ports:
  - protocol: TCP
    nodePort: 30306
    port: 3306
    targetPort: 3306
  selector:
    app: mysql
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: mysql
spec:
  selector:
    matchLabels:
      app: mysql
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
      - image: mysql:5.7
        name: mysql
        env:
        - name: MYSQL_ROOT_PASSWORD
          value: password
        ports:
        - containerPort: 3306
          name: mysql
        volumeMounts:
        - name: mysql-persistent-storage
          mountPath: /var/lib/mysql       #挂载目录
      volumes:
      - name: mysql-persistent-storage
        persistentVolumeClaim:
          claimName: mysql57-pvc-evan



依次执行

kubectl apply -f pv.yaml 
  kubectl get pv 
  kubectl apply -f pvc.yaml 
 kubectl get pv,pvc
 kubectl apply -f svc.yaml 
  kubectl get pod 
  kubectl exec  -it mysql-58ddb8d7f6-bhps5 bash 



root@k8s-master:~/mysql5.7# kubectl get pv,pvc
NAME                               CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS        CLAIM                      STORAGECLASS   REASON   AGE
persistentvolume/mysql-nfs-pv      2Gi        RWO            Retain           Terminating   default/mysql-nfs-pvc      nfs                     2d1h
persistentvolume/mysql-nfs-pv1     3Gi        RWO            Retain           Bound         default/mysql-nfs-pvc1     nfs                     33h
persistentvolume/mysql-pv          4Gi        RWX            Retain           Bound         default/mysql-claim        nfs                     36h
persistentvolume/mysql57-pv-evan   1Gi        RWO            Retain           Bound         default/mysql57-pvc-evan   nfs                     18s
persistentvolume/web-pv            2Gi        RWX            Retain           Bound         default/web-claim          nfs                     35h

NAME                                     STATUS        VOLUME            CAPACITY   ACCESS MODES   STORAGECLASS   AGE
persistentvolumeclaim/mysql-claim        Bound         mysql-pv          4Gi        RWX            nfs            36h
persistentvolumeclaim/mysql-nfs-pvc      Terminating   mysql-nfs-pv      2Gi        RWO            nfs            2d1h
persistentvolumeclaim/mysql-nfs-pvc1     Bound         mysql-nfs-pv1     3Gi        RWO            nfs            33h
persistentvolumeclaim/mysql57-pvc-evan   Bound         mysql57-pv-evan   1Gi        RWO            nfs            6s
persistentvolumeclaim/web-claim          Bound         web-pv            2Gi        RWX            nfs            35h
root@k8s-master:~/mysql5.7# 



node1ip 192.168.88.51

root@k8s-master:~/mysql5.7# kubectl get svc
NAME         TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)          AGE
mysql        NodePort    10.96.61.100   <none>        3306:30306/TCP   2d1h


 mysql -uroot -h192.168.88.51 -P30306 -p
 
 或者 kubectl exec  -it mysql-58ddb8d7f6-bhps5 bash
 
 mysql -uroot -ppassword

create database evanmysq57;

回来 nfs 看一下  
root@debian11:~# ls /data/k8s/mysql57/evanmysq57/
db.opt




pod mysql 密码

cat po.yml 
apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: null
  labels:
    run: pod11
  name: mysqldb1
spec:
  terminationGracePeriodSeconds: 0
  containers:
  - image: m.daocloud.io/docker.io/library/mysql:5.7.25
    imagePullPolicy: IfNotPresent
    name: c1
    resources: {}
    env:
    - name: MYSQL_ROOT_PASSWORD
      value: mysql111
  dnsPolicy: ClusterFirst
  restartPolicy: Always
status: {}



mysql5.6

和上次一样改了下 pv pvc image 名就行了

see also

MySQL的持久化部署(k8s与NFS)


基于k8s的statefulset+pv安装mysql5.7主从集群 没成功