在具有相同路徑的相同節點上建立多個本機持久性磁碟區毫無例外地有效

在具有相同路徑的相同節點上建立多個本機持久性磁碟區毫無例外地有效

在使用 kind ( 在 2 個工作節點 Kubernetes 叢集上進行設定測試時https://kind.sigs.k8s.io/docs/user/quick-start),我想出了這個,但在其他地方找不到資訊。

我在 /var/testpv 中的所有工作節點上建立了一個資料夾,並建立了以下 PV:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pg-pv
spec:
  capacity:
    storage: 10Gi
  volumeMode: Filesystem
  accessModes:
  - ReadWriteOnce
  persistentVolumeReclaimPolicy: Delete
  storageClassName: fast-disks
  local:
    path: /var/testpv
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - fvi-worker2
          - fvi-worker

它工作得很好,所以我創建了第二個:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pg-pv2
spec:
  capacity:
    storage: 10Gi
  volumeMode: Filesystem
  accessModes:
  - ReadWriteOnce
  persistentVolumeReclaimPolicy: Delete
  storageClassName: fast-disks
  local:
    path: /var/testpv
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - fvi-worker
          - fvi-worker2

(相同,只是名稱不同)

然後我使用這個儲存類別創建了 2 個 PVC:

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: example-local-claim
spec:
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 5Gi
  storageClassName: fast-disks

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: example-local-claim2
spec:
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 5Gi
  storageClassName: fast-disks

然後,最後有兩個使用這些 PVC 的 pod:

apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  containers:
    - name: myfrontend
      image: nginx
      volumeMounts:
      - mountPath: "/var/www/html"
        name: mypd
  volumes:
    - name: mypd
      persistentVolumeClaim:
        claimName: example-local-claim

apiVersion: v1
kind: Pod
metadata:
  name: mypod2
spec:
  containers:
    - name: myfrontend
      image: nginx
      volumeMounts:
      - mountPath: "/var/www/html"
        name: mypd
  volumes:
    - name: mypd
      persistentVolumeClaim:
        claimName: example-local-claim2

一切正常,我可以看到每個 Pod 上建立的檔案都轉到正確的存儲,每個 Pod 位於不同的工作節點上。

但是,如果我嘗試建立新的 PV、PVC 和 pod,則不會出現任何錯誤!

更糟的是,PV 是在同一位置建立的,因此我實際上可以看到 pod1 或 pod2(取決於)檔案!

我以為 Kubernetes 會進行某種檢查,確保同一主機的 PV 確實存在,但顯然事實並非如此。

我錯過了什麼嗎?難道我做錯了什麼?或者在創建 PV 時是否真的非常小心?

感謝您的任何見解,

答案1

是的,它有效,因為這是使用本地光伏時共享磁碟的唯一方法。這是預期的行為。在某些情況下,您可能希望在 Pod 之間共用文件,這是實現此目的的一種方法。

相關內容