![](/img/trans.png)
[英]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.