簡體   English   中英

通過集群重啟使用持久卷為 MySQL pod 保留數據

[英]Persist data for MySQL pod using Persistent Volume through cluster restarts

我正在嘗試在 Kubernetes 上部署 MySQL 部署並希望保留數據。 我目前能夠在 pod 的整個生命周期中保留數據(kubectl delete 然后是 kubectl create)。 但是,我無法通過集群重新啟動來保留數據。 知道為什么會這樣嗎?

持久卷.yml

apiVersion: v1
kind: PersistentVolume
metadata:
 name: mysql-pv-volume
spec:
 storageClassName: hostpath
 persistentVolumeReclaimPolicy: Retain
 capacity:
  storage: 100Mi
 accessModes:
  - ReadWriteOnce
 hostPath:
  path: "/mnt/data"

持久卷聲明.yml

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
 name: mysql-pv-claim
spec:
 storageClassName: hostpath
 accessModes:
  - ReadWriteOnce
 resources:
  requests:
   storage: 100Mi

mysql-deployment.yml

kind: StatefulSet
metadata:
  name: powerplus-db
spec:
  serviceName: powerplus-db
  selector:
    matchLabels:
      app: powerplus-db
  template:
    metadata:
      labels:
        app: powerplus-db
    spec:
      containers:
        - name: powerplus-db
          image: mysql:8.0.21
          env:
            - name: MYSQL_ROOT_PASSWORD
              value: password
            - name: MYSQL_DATABASE
              value: powerplus
          ports:
            - containerPort: 3306
              name: powerplus-db
          volumeMounts:
            - mountPath: /var/lib/mysql
              name: mysql-persistent-storage
      volumes:
        - name: mysql-persistent-storage
          persistentVolumeClaim:
            claimName: mysql-pv-claim```

這種情況在本官方指南中有很好的描述,特別是在關於Create PersistentVolumeClaims 和 PersistentVolumes 的段落中:

警告:在本地集群中,默認StorageClass使用hostPath配置程序。 hostPath卷僅適用於開發和測試。 使用hostPath卷,您的數據位於 Pod 調度到的節點上的/tmp ,並且不會在節點之間移動。 如果 Pod 死亡並被調度到集群中的另一個節點,或者該節點重新啟動,則數據將丟失。

HostPath僅用於單節點測試目的。 您想使用不同類型的PersisstentVolume 您可以在此處找到有關PersistentVolumes類型的更多詳細信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM