[英]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
我的情況是一個邊緣情況,我懷疑你會達到它。 然而,我會描述它,因為它讓我失去了很多白發——也許它會拯救你的。
盡管PV和PVC被合並,但我還是發生了同樣的錯誤。 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.