【发布时间】:2017-12-13 15:59:45
【问题描述】:
在我们的集群中,我们有一个使用大量本地磁盘空间的应用程序的水平扩展部署,这导致了主要的集群稳定性问题(docker 崩溃、节点重新创建等)。
我们正在尝试让每个 pod 配置一个自己的 gcePersistentDisk,以便其磁盘使用与集群隔离。我们创建了一个存储类和一个使用该类的持久卷声明,并在我们部署的 pod 模板规范中为该声明指定了一个卷挂载。
但是,当我们将自动缩放器设置为使用多个副本时,它们显然会尝试使用相同的卷,并且我们会收到以下错误:
Multi-Attach error for volume
Volume is already exclusively attached to one node and can't be attached to another
这是我们清单的相关部分。存储类:
{
"apiVersion": "storage.k8s.io/v1",
"kind": "StorageClass",
"metadata": {
"annotations": {},
"name": "some-storage",
"namespace": ""
},
"parameters": {
"type": "pd-standard"
},
"provisioner": "kubernetes.io/gce-pd"
}
PVC:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: some-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 20Gi
storageClassName: some-class
部署:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: some-deployment
spec:
volumes:
- name: some-storage
persistentVolumeClaim:
claimName: some-pvc
containers:
[omitted]
volumeMounts:
- name: some-storage
mountPath: /var/path
应用这些后,我们将部署的自动扩缩器更新为至少 2 个副本并出现上述错误。
- 这不是持久性卷声明的工作方式吗?
- 我们绝对不关心卷共享,也不真正关心持久性,我们只想要与集群隔离的存储 - 这是适合这项工作的工具吗?
【问题讨论】:
标签: kubernetes google-cloud-platform google-kubernetes-engine