考虑下面的 PersistentVolumeClaim 以及使用它的部署。
由于是ReadWriteOnce,PVC一次只能被一个节点挂载。由于我的部署只有一个副本,因此我认为这应该没问题。但是,在重新启动/重新加载时,两个 Pod 将在切换期间共存。
如果 Kubernetes 决定在与原始 pod 相同的节点上启动后继 pod,它们都将能够访问该卷,并且切换会顺利进行。但是 - 如果它决定在一个新节点上启动它(它似乎更喜欢),我的部署最终会陷入僵局:
卷“pvc-c474dfa2-9531-4168-8195-6d0a08f5df34”的多重附加错误卷已被 pod test-cache-5bb9b5d568-d9pmd 使用
后继 Pod 无法启动,因为该卷挂载在另一个节点上,而原始 Pod/节点当然不会释放该卷,直到 Pod 停止服务。在继任者上任之前,情况不会如此。
我在这里缺少什么?
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: vol-test
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
storageClassName: do-block-storage
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: test-cache
spec:
selector:
matchLabels:
app: test-cache-deployment
replicas: 1
template:
metadata:
labels:
app: test-cache-deployment
spec:
containers:
- name: test-cache
image: myrepo/test-cache:1.0-SNAPSHOT
volumeMounts:
- mountPath: "/test"
name: vol-mount
ports:
- containerPort: 8080
imagePullPolicy: …Run Code Online (Sandbox Code Playgroud)