kubernetes - GKE Kubernetes 持久卷
问题描述
我尝试为我的 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 部署了一个新节点而没有删除旧节点,因此它无法在两者之间共享文件卷,因为我的 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
你如何管理这个?
解决方案
我看到您已经PersistentVolumeClaim
在deployment
. 我还看到您正在尝试扩展节点池。
APersistentVolumeClaim
将适用于部署,但前提是您不扩展deployment
. 这就是出现该错误消息的原因。您看到的错误表明,在复制新 pod 时,该卷已被现有 pod 使用。
因为您正在尝试扩展deployment
,其他副本将尝试安装和使用相同的卷。
解决方案:将 PersistentVolumeClaim 部署在statefulset
对象中,而不是deployment
. statefulset
可以在本文中找到有关如何部署 a 的说明。使用statefulset,您将能够将 PersistentVolumeClaim 附加到 pod,然后扩展节点池。
推荐阅读
- java - java - 从任意位置删除数组元素并移动剩余元素
- ibm-cloud - 如何与 SharePoint 上的自定义列表同步
- wpf - RadGridView GridViewSelectColumn 即使在禁用时仍然可选择
- html - 如何使用 Bootstrap4 和/或 flex 将内容居中并设置页脚?
- mysql - 在 Windows 服务器和 Ubuntu 上运行 Mysql 8.0 - 比较
- ios - Swift - 在数组中添加粒度(2 x 2、5 x 5 等)
- python - 在 Raspberry Pi Zero 上安装 chromium 或 Firefox webdriver 的可靠方法
- pyspark - pyspark/dataframe - 创建嵌套结构
- jaxb - XPath 评估总是导致空的目标节点
- shell - sed:关于 sed 脚本拆分文件的问题