我試過在單節點GKE集羣上運行2個Kubernetes莢,共享一個只讀GCE永久磁盤,但一個莢成功運行,另一個卡在ContainerCreating
狀態。無法在1個GKE節點上運行2個Kubernetes莢共享一個只讀GCE永久磁盤
的容器非常簡單:
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
失敗的吊艙報告:
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代碼中的一個錯誤。對於即將發佈的Kubernetes 1.3版本,PD處理代碼已經完全重寫,並且預計會更加可靠。 –
嗨,羅伯特。預計何時公佈1.3? –
本月底左右。請參閱https://github.com/kubernetes/kubernetes/wiki/Release-1.3 –