kubernetes - POD 崩溃时持久卷声明中的容器数据

标签 kubernetes persistent-volumes persistent-volume-claims

我想创建一个带有 POD 的复制 Controller ,该 POD 将具有 PVC(持久卷声明)。我的 PVC 将使用 NFS 存储来存储 PV(持久卷)。

一旦 POD 投入运行,RC 就会维持 POD 的正常运行。在这种情况下,POD 中的数据何时可用/持久化

  1. POD 被删除命令停止/删除并且 RC 重新启动它?这意味着 Kubernetes 没有关闭。那么新的 POD 可以拥有相同卷中的相同数据吗?
  2. POD 已停止,Kubernetes 进程和节点已重新启动。然而 NFS 存储仍然作为 PV 附加。
  3. 新的 PV 已附加到 Kubernetes,旧的 PV 已分离。

最佳答案

这在很大程度上取决于您如何定义 PV/PVC。根据我的经验,使用基于 NFS 的 PV 来保留 Pod 重新删除之间的数据非常容易。对于多个 Pod 共享的 NFS 卷,我采用以下方法。

音量:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pvname
spec:
  capacity:
    storage: 1Mi
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  nfs:
    server: <nfs IP>
    path: <nfs path>

声明:

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: pvcname
spec:
  volumeName: pvname
  accessModes:
  - ReadWriteMany
  resources:
    requests:
      storage: 1Mi

这确保了我在 k8s 中删除的任何内容都可以在 NFS 服务器上的已知路径上返回我的数据,并通过在 k8s 上重新创建 PV/PVC/POD 来再次重用它,因此它应该能够在您提到的所有三种情况下生存.

关于kubernetes - POD 崩溃时持久卷声明中的容器数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39695229/

相关文章:

azure - Istio - 通过网关公开虚拟服务

kubernetes - 在 Kubernetes 集群中查找 Service Account 的使用情况

Kubernetes,无法通过 DNS 挂载 NFS 共享

docker - Dockerfile 中的 VOLUME 是否在 kubernetes 中持久存在

工作节点之间的 Kubernetes 卷复制

macos - Docker错误正在运行镜像hyperkube-amd64:v1.7.0

go - 在Kubernetes中自定义自动缩放策略

kubernetes - 缩小后从 statefulset 中删除 Kubernetes 持久卷

kubernetes - 无法将NFS挂载设置为Azure AKS节点上的kubernetes pod的默认存储

Kubernetes:PersistentVolume 和 PersistentVolumeClaim - 共享声明