我想创建一个带有 POD 的复制 Controller ,该 POD 将具有 PVC(持久卷声明)。我的 PVC 将使用 NFS 存储来存储 PV(持久卷)。
一旦 POD 投入运行,RC 就会维持 POD 的正常运行。在这种情况下,POD 中的数据何时可用/持久化
- POD 被删除命令停止/删除并且 RC 重新启动它?这意味着 Kubernetes 没有关闭。那么新的 POD 可以拥有相同卷中的相同数据吗?
- POD 已停止,Kubernetes 进程和节点已重新启动。然而 NFS 存储仍然作为 PV 附加。
- 新的 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/