PVC直接重启pod数据丢失

发布网友 发布时间:2022-04-22 14:21

我来回答

1个回答

热心网友 时间:2023-08-26 11:22

通常情况下,容器运行起来之后,写入到其文件系统的文件暂时性的,当容器崩溃后,kubelet将会重启该容器,此时原容器运行后写入的文件将丢失,因为容器将重新从镜像创建。
同一个Pod(容器组)中运行的容器之间,经常会存在共享文件/文件夹的需求,Docker里同样也存在一个volume(数据卷)的概念,但是docker对数据卷的管理相对kubernetes而言要更少一些。在Docker里,一个Volume(数据卷)仅仅是宿主机(或另一个容器)文件系统上的一个文件夹。Docker并不管理Volume(数据卷)的生命周期。一个Volume(数据卷)仅仅是一个可被容器组中的容器访问的文件目录(也许其中包含一些数据文件)。这个目录是怎么来的,取决于该数据卷的类型(不同类型的数据卷使用不同的存储介质)。使用Volume(数据卷)时,我们需要先在容器组中定义一个数据卷,并将其挂载到容器的挂载点上。容器中的一个进程所看到(可访问)的文件系统是由容器的docker镜像和容器所挂载的数据卷共同组成的。Docker镜像将被首先加载到该容器的文件系统,任何数据卷都被在此之后挂载到指定的路径上。Volume(数据卷)不能被挂载到其他数据卷上,或者通过引用其他数据卷。同一个容器组中的不同容器各自地挂载数据卷,即同一个容器组中的两个容器可以将同一个数据卷挂载到各自不同的路径上。
容器中的存储都是临时的,因此Pod重启的时候,内部的数据会发生丢失。实际应用中,我们有些应用是无状态,有些应用则需要保持状态数据,确保Pod重启之后能够读取到之前的状态数据,有些应用则作为集群提供服务。这三种服务归纳为无状态服务、有状态服务以及有状态的集群服务,其中后面两个存在数据保存与共享的需求,Kubermetes对于有状态的容器应用或者对数据需要持久化的应用,不仅需要将容器内的目录挂载到宿主机的目录或者emptyDir临时存储卷,而且需要更加可靠的存储来保存应用产生的重要数据,以便容器应用在重建之后,仍然可以使用之前的数据。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com