[英]Kubernetes POD Timeout expired waiting for volumes to attach/mount
[英]What are reasons for “Unable to mount volumes for pod” “timeout expired waiting for …” in Google Kubernetes Engine?
我正在為Google Kubernetes Engine部署3個pod。 其中兩個pod將ReadOnlyMany綁定共享到預先存在的持久卷,映射到gcePersistentDisk。 其中一個豆莢開始了。 另一個沒有,並最終超時錯誤“ Unable to mount volumes for pod
”
在kubectl describe pv
或kubectl describe pvc
下沒有顯示錯誤。 kubectl describe pvc
顯示每個持久卷聲明都綁定到未啟動的pod。
相關配置:
kind: PersistentVolume
apiVersion: v1
metadata:
name: configuration
spec:
capacity:
storage: 1G
accessModes:
- ReadOnlyMany
storageClassName: ""
gcePersistentDisk:
fsType: ext4
readOnly: true
pdName: my-persistent-disk-name
persistentVolumeReclaimPolicy: Retain
---
kind: PersistentVolume
apiVersion: v1
metadata:
name: kb
spec:
capacity:
storage: 1G
accessModes:
- ReadOnlyMany
storageClassName: ""
gcePersistentDisk:
fsType: ext4
readOnly: true
pdName: my-persistent-disk-name
persistentVolumeReclaimPolicy: Retain
---
kind: PersistentVolume
apiVersion: v1
metadata:
name: content
spec:
capacity:
storage: 1G
accessModes:
- ReadOnlyMany
storageClassName: ""
gcePersistentDisk:
fsType: ext4
readOnly: true
pdName: my-persistent-disk-name
persistentVolumeReclaimPolicy: Retain
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: config-pvc
spec:
accessModes:
- ReadOnlyMany
volumeName: configuration
storageClassName: ""
resources:
requests:
storage: 1G
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: kb-pvc
spec:
accessModes:
- ReadOnlyMany
volumeName: kb
storageClassName: ""
resources:
requests:
storage: 1G
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: content-pvc
spec:
accessModes:
- ReadOnlyMany
volumeName: content
storageClassName: ""
resources:
requests:
storage: 1G
---
kind: Deployment
apiVersion: apps/v1
metadata:
name: worker
spec:
template:
spec:
containers:
- name: esp
image: gcr.io/endpoints-release/endpoints-runtime:1.20.0
args: [ "-http-port", "8080", ... ]
- name: workers
image: my-registry/my-image:my-version
volumeMounts:
- name: config
mountPath: /config
subPath: ./config
readOnly: true
- name: kb
mountPath: /kb
subPath: ./kb
readOnly: true
- name: content
mountPath: /content
subPath: ./content
readOnly: true
volumes:
- name: config
persistentVolumeClaim:
claimName: config-pvc
readOnly: true
- name: kb
persistentVolumeClaim:
claimName: kb-pvc
readOnly: true
- name: content
persistentVolumeClaim:
claimName: content-pvc
readOnly: true
---
kind: Deployment
apiVersion: apps/v1
metadata:
name: another-worker
spec:
template:
spec:
containers:
- name: another-worker-name
image: my-registry/my-other-image:my-other-version
command: ["./run-server.sh", "--path-data", "/config/data/"]
args: []
volumeMounts:
- name: kb
mountPath: /config
subPath: ./kb/i2k_context
readOnly: true
volumes:
- name: kb
persistentVolumeClaim:
claimName: kb-pvc
readOnly: true
上例中名為“worker”的pod應該開始運行。 它沒有,並最終顯示卸載和/或未附加卷的超時錯誤。
名為“another-worker”的pod啟動並按預期運行。
看起來GKE不允許多個PersistentVolume
對象映射到同一個gcePersistentDisk
,即使所有卷和卷聲明都是ReadOnlyMany。
我為同一個gcePersistentDisk
提供了3種不同PV的gcePersistentDisk
是為了實現部署的靈活性 - 這三種卷綁定實際上是不同的持久性磁盤的能力。
由於我目前沒有使用該功能,因此我更改了工作區中的volumes
和volumeMounts
,以使用一個具有不同subPath
和mountPath
PVC,並立即啟動pod。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.