小编Joh*_*oge的帖子

部署重新加载/重启时 Kubernetes ReadWriteOnce 多附加死锁

考虑下面的 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)

digital-ocean kubernetes persistent-volume-claims

7
推荐指数
2
解决办法
4857
查看次数