GKE Kubernetes Persistent Volume



我尝试为我的rethinkdb服务器使用持久卷。但是我得到了这个错误:

Unable to mount volumes for pod "rethinkdb-server-deployment-6866f5b459-25fjb_default(efd90244-7d02-11e8-bffa-42010a8400b9)": timeout expired waiting for volumes to attach/mount for pod "default"/"rethinkdb-server-deployment-
Multi-Attach error for volume "pvc-f115c85e-7c42-11e8-bffa-42010a8400b9" Volume is already used by pod(s) rethinkdb-server-deployment-58f68c8464-4hn9x

我认为 Kubernetes 部署一个新节点而不删除旧节点,因此它无法在两者之间共享 le 卷,因为我的 pvc 是 ReadWriteOnce.这个持久卷必须以自动方式创建,所以我不能使用永久磁盘,格式化它......

我的配置:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
namespace: default
name: rethinkdb-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 30Gi

apiVersion: apps/v1beta1
kind: Deployment
metadata:
namespace: default
labels:
db: rethinkdb
role: admin
name: rethinkdb-server-deployment
spec:
replicas: 1
selector:
matchLabels:
app: rethinkdb-server
template:
metadata:
name: rethinkdb-server-pod
labels:
app: rethinkdb-server
spec:
containers:
- name: rethinkdb-server
image: gcr.io/$PROJECT_ID/rethinkdb-server:$LAST_VERSION
env:
- name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
ports:
- containerPort: 8080
name: admin-port
- containerPort: 28015
name: driver-port
- containerPort: 29015
name: cluster-port
volumeMounts:
- mountPath: /data/rethinkdb_data
name: rethinkdb-storage
volumes:
- name: rethinkdb-storage
persistentVolumeClaim:
claimName: rethinkdb-pvc

你如何管理这个?

我看到您在deployment中添加了PersistentVolumeClaim.我还看到您正在尝试扩展节点池。

PersistentVolumeClaim将适用于部署,但前提是您不缩放deployment。这就是出现该错误消息的原因。您看到的错误指出,在复制新 Pod 时,该卷已被现有 Pod 使用。

因为您正在尝试扩展deployment,所以其他复制副本将尝试装载并使用相同的卷。

解决方案:将 PersistentVolumeClaim 部署在statefulset对象中,而不是deployment中。有关如何部署statefulset的说明,请参阅本文。使用 statefulset,您将能够将 PersistentVolumeClaim 附加到 Pod,然后扩展节点池。

相关内容

  • 没有找到相关文章

最新更新