簡體   English   中英

Kubernetes 無法為 pod 掛載卷

[英]Kubernetes Unable to mount volumes for pod

我正在嘗試設置一個卷以在 k8s 上與 Mongo 一起使用。

我使用kubectl create -f pv.yaml創建卷。

pv.yaml:

kind: PersistentVolume
apiVersion: v1
metadata:
  name: pvvolume
  labels:
    type: local
spec:
  storageClassName: standard
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/nfs"
  claimRef:
    kind: PersistentVolumeClaim
    namespace: default
    name: pvvolume

然后我將這個 StatefulSet部署到這個卷,它有 pod 制作 PVC。

我的卷似乎創建沒有問題,我希望它只使用主機節點的存儲。

當我嘗試部署時,出現以下錯誤:

無法為 pod“mongo-0_default(2735bc71-5201-11e8-804f-02dffec55fd2)”掛載卷:等待卷掛載/掛載 pod“default”/“mongo-0”超時超時。 未附加/未掛載的卷列表=[mongo-persistent-storage]

是否在設置持久卷時錯過了一步?

持久卷只是 kubernetes 集群中某些存儲可用性的聲明。 在此階段沒有與您的 pod 綁定。

由於您的 pod 是通過StatefulSet部署的,因此您的集群中應該有一個或多個PersistentVolumeClaims ,它們是將 pod 與 PersistentVolume 連接起來的對象。

為了手動將 PV 與 PVC 綁定,您需要通過在其規范部分添加以下內容來編輯您的 PVC:

volumeName: "<your persistent volume name>"

這里解釋一下這個過程是如何工作的: https : //docs.openshift.org/latest/dev_guide/persistent_volumes.html#persistent-volumes-volumes-and-claim-prebinding

我的情況是一個邊緣情況,我懷疑你會達到它。 然而,我會描述它,因為它讓我失去了很多白發——也許它會拯救你的。

盡管PVPVC被合並,但我還是發生了同樣的錯誤。 Pod 一直在ContainerCreating盯着,但kubectl get events拋出了這個問題中提出的錯誤。

$ kubectl get pv
NAME        CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                     STORAGECLASS   REASON   AGE
sewage-db   5Ti        RWO            Retain           Bound    global-sewage/sewage-db   nfs                     3h40m

$kubectl get pvc -n global-sewage 
NAME        STATUS   VOLUME      CAPACITY   ACCESS MODES   STORAGECLASS   AGE
sewage-db   Bound    sewage-db   5Ti        RWO            nfs            3h39m

重新啟動服務器后發現,其中一個 32GiB RAM 物理內存已損壞。 移除內存解決了這個問題。

暫無
暫無

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

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