【发布时间】:2016-10-12 03:10:26
【问题描述】:
我尝试在单节点 GKE 集群上运行 2 个 Kubernetes pod,共享一个只读 GCE 永久磁盘,但是当一个 pod 成功运行时,另一个卡在 ContainerCreating 状态。
容器很简单:
FROM debian:jessie
CMD ["/bin/sh", "-c", "while true; do ls /mount; sleep 5; done"]
部署如下所示:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: dumpy
spec:
replicas: 2
template:
metadata:
labels:
app: dump
spec:
containers:
- name: dump
image: gcr.io/myproject/dump
volumeMounts:
- mountPath: /mount
name: dump
readOnly: true
volumes:
- name: dump
gcePersistentDisk:
pdName: my-disk
fsType: ext4
readOnly: true
失败的 pod 报告:
Warning FailedMount Unable to mount volumes for pod "xxx". Could not attach GCE PD "my-disk". Timeout waiting for mount paths to be created.
FailedSync Error syncing pod, skipping: Could not attach GCE PD "my-disk". Timeout waiting for mount paths to be created.
/var/log/kubelet.log 报告:
gce.go:422] GCE operation failed: googleapi: Error 400: The disk resource 'my-disk' is already being used by 'xxx-123'
gce_util.go:187] Error attaching PD "my-disk": googleapi: Error 400: The disk resource 'my-disk' is already being used by 'xxx-123'
我相信Kubernetes documentation 明确允许这种情况。
PD 的一个特点是它们可以被多个消费者同时以只读方式挂载。这意味着您可以使用数据集预先填充 PD,然后根据需要从任意数量的 pod 并行提供它。
发生了什么,解决方法是什么?
【问题讨论】:
-
这很可能只是 PD 代码中的一个错误。 PD 处理代码已针对即将发布的 Kubernetes 1.3 版本进行了几乎完全的重写,预计会更加可靠。
-
嗨罗伯特。 1.3 预计何时发布?
标签: docker google-compute-engine kubernetes google-kubernetes-engine