返回顶部
首页 > 资讯 > 服务器 >一文解析Kubernetes使用PVC后数据丢失
  • 623
分享到

一文解析Kubernetes使用PVC后数据丢失

Kubernetes PVC数据丢失Kubernetes PVC 2023-03-09 17:03:55 623人浏览 独家记忆
摘要

目录问题现象复现问题分析问题现象 使用官方postgresql镜像,通过pvc将云硬盘挂载至数据目录,每次重建Pod,数据库数据都会丢失。 复现 apiVersion: v1 ki

问题现象

使用官方postgresql镜像,通过pvc将云硬盘挂载至数据目录,每次重建Pod,数据库数据都会丢失。

复现

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: postgresql-persistent-storage
  namespace: default
spec:
  acceSSModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi
  storageClassName: cbs
  volumeMode: Filesystem

---

apiVersion: apps/v1
kind: Deployment
metadata:
  name: postgresql-deployment
spec:
  selector:
    matchLabels:
      app: postgresql
  template:
    metadata:
      labels:
        app: postgresql
    spec:
      containers:
      - image: postgres:12.4
        name: postgresql
        env:
        - name: POSTGRES_PASSWord
          value: "123456"
        ports:
        - containerPort: 5432
          name: postgresql
        volumeMounts:
        - name: postgresql-persistent-storage
          ## 注意挂载点
          mountPath: /var/lib/postgresql
      volumes:
      - name: postgresql-persistent-storage
        persistentVolumeClaim:
          claimName: postgresql-persistent-storage

使用上述提供的 yaml创建工作负载,完成后可看到 Pod 正常运行。

根据Dockerhub官方镜像的说明中,镜像数据库文件存储的默认目录为/var/lib/postgresql/data

上述yaml中,将持久化存储挂载到/var/lib/postgresql,看似无问题,容器也可以正常启动,但是其实数据库文件并没有写入 PVC 中,当 Pod 发生重启重新调度时,数据库文件便会丢失。

问题分析

进入 Pod, 通过 findmnt命令,可以清楚地看到数据库存储文件并未保存在数据盘中,而是使用 volume 的方式挂载,被挂载到了/dev/vda1中,所以导致 Pod 重启时,该目录被自动释放,数据丢失。

那是什么原因造成的呢?

我们登录 Pod 所在的节点

通过docker history --no-trunc postgres:12.4查看镜像的构建历史发现,此镜像构建所使用的 Dockerfile使用了 VOLUME命令,手工挂载了/var/lib/postgresql/data

Dockerfile构建后的镜像中,VOLUME中的操作并不会被kubernetes忽略,而是会继续挂载。

即先挂载kubelet给加的volume,后挂载image.config.volumesimage.config.volumes不会覆盖掉kubeletvolume

如需要将其使用 PVC 覆盖目录,必须手工指定 PVC 的挂载点与其同地址,即将volumeMounts中的mountPath/var/lib/postgresql调整为/var/lib/postgresql/data

apiVersion: apps/v1
kind: Deployment
metadata:
  name: postgresql-deployment
spec:
  selector:
    matchLabels:
      app: postgresql
  template:
    metadata:
      labels:
        app: postgresql
    spec:
      containers:
      - image: postgres:12.4
        name: postgresql
        env:
        - name: POSTGRES_PASSWORD
          value: "123456"
        ports:
        - containerPort: 5432
          name: postgresql
        volumeMounts:
        - name: postgresql-persistent-storage
          mountPath: /var/lib/postgresql/data
      volumes:
      - name: postgresql-persistent-storage
        persistentVolumeClaim:
          claimName: postgresql-persistent-storage 

新建测试文件,并删除 Pod 后测试数据写入

以上就是一文解析Kubernetes使用PVC后数据丢失的详细内容,更多关于Kubernetes PVC后数据丢失的资料请关注编程网其它相关文章!

--结束END--

本文标题: 一文解析Kubernetes使用PVC后数据丢失

本文链接: https://lsjlt.com/news/199088.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 一文解析Kubernetes使用PVC后数据丢失
    目录问题现象复现问题分析问题现象 使用官方postgresql镜像,通过pvc将云硬盘挂载至数据目录,每次重建Pod,数据库数据都会丢失。 复现 apiVersion: v1 ki...
    99+
    2023-03-09
    Kubernetes PVC数据丢失 Kubernetes PVC
  • Kubernetes使用PVC后数据丢失怎么解决
    今天小编给大家分享一下Kubernetes使用PVC后数据丢失怎么解决的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。问题现象...
    99+
    2023-07-05
  • gitlab13升级后数据丢失怎么解决
    随着云计算的发展,越来越多的企业将其软件部署在云上,GitLab作为一个代码托管平台,也成为了众多企业的首要选择之一。但在升级GitLab 13后,有些用户发现他们的数据被删除了,这是令人非常困扰的问题。GitLab 13增加了许多新功能,...
    99+
    2023-10-22
  • ORACLE数据库文件丢失后的恢复测试
    一、测试环境数据库版本是11GR2,在做完一份完全备份之后,关机,做一份快照,每一次开机之后都执行数次alter system switch logfile以产生归档日志。之后的测试都是基于这么一个完全备份...
    99+
    2024-04-02
  • unraid重启后docker数据丢失如何解决
    如果在重启 Unraid 后遇到 Docker 数据丢失的问题,有一些可能的解决办法:1. 检查 Unraid 配置:确保 Unra...
    99+
    2023-09-09
    docker
  • docker容器重启后数据丢失怎么解决
    当Docker容器重启后数据丢失的问题,可以通过以下几种方式来解决: 挂载数据卷(Volume):使用Docker的数据卷功能,...
    99+
    2023-10-27
    docker
  • 关于vuex强刷数据丢失问题解析
    vuex-persistedstate 核心原理:在本地存储中存入所有的vuex数据,页面刷新时到缓存中取数据,放到vuex中 下载:$ npm install ...
    99+
    2024-04-02
  • CMS织梦数据库文件丢失后的应急措施
    CMS是网站内容管理系统的缩写,其中织梦(DedeCMS)是一款较为常用的开源CMS系统之一。数据库是织梦系统中存储网站数据的重要部分,如果数据库文件丢失,会导致网站无法正常访问和运行...
    99+
    2024-03-13
    数据恢复 数据备份 数据库修复 数据丢失
  • 使用厦门服务器数据丢失了怎么解决
    使用厦门服务器数据丢失了解决的方法:1、如果是误删除或格式化,可以在网上下载恢复软件来恢复数据;2、如果是服务器数据丢失,不要盲目操作,先关机停止硬盘读写数据,然后寻找正规的数据恢复公司或请专业技术人员检查;3、如果是机房的硬件损坏,则需要...
    99+
    2024-04-02
  • JS中如何使用localStorage防止页面动态添加数据刷新后数据丢失
    这篇文章主要为大家展示了“JS中如何使用localStorage防止页面动态添加数据刷新后数据丢失”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“JS中如何使用l...
    99+
    2024-04-02
  • 一文教会你解决js数字精度丢失问题
    目录一、关于为什么要解决精度丢失二、怎么解决js的计算精度丢失问题?三、toPrecision 特定方法返回四舍五入长度字符串结语一、关于为什么要解决精度丢失 可以看下例子,因为js...
    99+
    2024-04-02
  • 常用 PostgreSQL 预防数据丢失解决方案
    目录预防数据丢失方案DDL 操作事件触发器回收站DML 操作流复制延迟恢复备份恢复总结作者:张连壮 PostgreSQL 研发负责人 从事多年 PostgreSQL 数据库内核开发,...
    99+
    2024-04-02
  • 代理服务器购买使用数据丢失如何解决
    代理服务器购买使用数据丢失的解决方法:1、如果是误删除或格式化,可以在网上下载恢复软件来恢复数据;2、如果是服务器数据丢失,不要盲目操作,先关机停止硬盘读写数据,然后寻找正规的数据恢复公司或请专业技术人员检查;3、如果是机房的硬件损坏,则需...
    99+
    2024-04-02
  • 使用 docker 部署 MySQL 会导致数据丢失吗
    2023年2月28日,今天下午电话面试 java 岗位,经过一些提问后,面试官问了一个问题,“那么你最近在关注什么方面的技术点呢?”,可能是我之前的回答不太理想,且说辞都是“不好意思,可能最近没有太经常使用这方面的东西。”(其实就是忘了)...
    99+
    2023-08-16
    docker mysql java
  • hbase中使用put输入数据丢失怎么办
    在HBase中使用put命令插入数据时,如果数据丢失了,可以通过以下步骤来解决: 检查数据是否确实丢失:首先确认数据是否真的丢失...
    99+
    2024-04-02
  • vue路由传参之使用query传参页面刷新数据丢失问题解析
    目录vue路由传参(使用query传参页面刷新数据丢失问题)1. 路由传参的两种方式1. params传参(刷新页面数据会丢失)2. query传参(刷新数据不会丢失)2. 使用qu...
    99+
    2023-05-15
    vue路由传参 query传参页面刷新数据丢失 vue路由传参params和query
  • 一文解析Apache Avro数据
    摘要:本文将演示如果序列化生成avro数据,并使用FlinkSQL进行解析。 Avro官方文档所写,http://avro.apache.org/docs/current/index.html. Avro简介 avro是...
    99+
    2022-06-04
    ApacheAvro数据 ApacheAvro
  • 一文解析Apache Avro数据
    摘要:本文将演示如果序列化生成avro数据,并使用FlinkSQL进行解析。  Avro官方文档所写,http://avro.apache.org/docs/current...
    99+
    2024-04-02
  • Win10使用存储空间保存数据以防止数据丢失
    我们的电脑上有时候会存放一些重要的数据,但是一旦发生磁盘损坏,就会造成数据的丢失。Win10系统中准备了一个存储空间的功能,可以帮助用户保存数据,防止数据丢失。   这个功能,可以使用多块磁盘或移动硬盘组成联合储存模式,...
    99+
    2023-06-17
    Win10 存储空间 保存数据 保存 数据 空间 存储
  • MySQL使用Replace操作时造成数据丢失的问题解决
    前言 公司开发人员在更新数据时使用了 replace into 语句,由于使用不当导致了数据的大量丢失,到底是如何导致的数据丢失本文对此进行分析。 一、问题说明 公司开发人员在更新数据时使用了 replac...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作