簡體   English   中英

如何指定持久卷文件的存儲位置

[英]How do i specify where persistent volume files are stored

我開始通過創建 LAMP 堆棧來學習 Kubernetes。 對於我的 MySQL 數據庫,我創建了一個持久卷和持久卷聲明,但現在我遇到了一個問題,我找不到存儲 PV 文件的位置。

這是我現在的配置:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: mysql-pv
  labels:
    app: mysql
spec:
  storageClassName: manual
  capacity:
    storage: 5Gi
  volumeMode: Filesystem
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Delete
  hostPath:
    path: "/lamp/pvstorage"

---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mysql-pvc
  labels:
    app: mysql
spec:
  storageClassName: manual
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 3Gi

然后在我的 MySQL 部署文件的末尾,我有這些行:

          volumeMounts:
            - name: mysql-persistent-storage
              mountPath: /var/lib/mysql
      volumes:
        - name: mysql-persistent-storage
          persistentVolumeClaim:
            claimName: mysql-pvc

我希望 Pod 的/var/lib/mysql中的所有內容都將備份在主機的/lamp/pvstorage目錄中,但這似乎沒有發生(但文件備份在我所看到的其他地方。數據庫是總是在刪除 mysql Pod 后重新創建)。

所以我的問題是我現在做錯了什么以及如何指定該位置?

TL;博士

要使用具有--driver=docker hostPathminikube實例中的 hostPath 訪問存儲在PVC上的文件,您需要直接登錄到主機( minikube ),例如: $ minikube ssh並直接訪問文件: ls /SOME_PATH


解釋

處理整個過程的Persistent VolumesStorage Classes和資源的主題相當廣泛,需要根據具體情況進行調查。

可以從官方文檔和使用的 Kubernetes 解決方案的文檔中獲得良好的基線知識來源:

大多數情況下,在使用minikube時(請參閱--driver=none的例外情況),某種容器化/虛擬化(圍繞minikube的層)用於隔離環境並允許更輕松地創建和銷毀實例。 這使得所有資源都存儲在某個“盒子”( Virtualbox VMDocker container等)中。

如本例所示,由mysql創建的文件存儲在運行minikube的主機上,但存儲在minikube實例本身中。 當您使用--driver=docker創建minikube時,您會創建一個Docker容器,其中包含所有組件。 此外,通過使用具有以下部分的PVC .spec

  hostPath:
    path: "/lamp/pvstorage"

hostPath

hostPath卷將文件或目錄從主機節點的文件系統安裝到您的 Pod 中。

-- Kubernetes.io:文檔:概念:存儲:卷:hostPath


例子

作為如何訪問文件的示例:

docker@minikube:~$ ls /mnt/data/
auto.cnf  ib_logfile0  ib_logfile1  ibdata1  mysql  performance_schema

其他資源:

如果存在將主機目錄安裝到minikube實例的特定目錄的用例,您可以選擇:

  • $ minikube mount SOURCE:DESTINATION

暫無
暫無

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

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