欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

一文解析Kubernetes使用PVC后數(shù)據(jù)丟失

 更新時(shí)間:2023年03月09日 08:49:47   作者:Honest1y  
這篇文章主要為大家介紹了Kubernetes使用PVC后數(shù)據(jù)丟失原理解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

問題現(xiàn)象

使用官方postgresql鏡像,通過pvc將云硬盤掛載至數(shù)據(jù)目錄,每次重建Pod,數(shù)據(jù)庫數(shù)據(jù)都會(huì)丟失。

復(fù)現(xiàn)

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
          ## 注意掛載點(diǎn)
          mountPath: /var/lib/postgresql
      volumes:
      - name: postgresql-persistent-storage
        persistentVolumeClaim:
          claimName: postgresql-persistent-storage

使用上述提供的 yaml創(chuàng)建工作負(fù)載,完成后可看到 Pod 正常運(yùn)行。

根據(jù)dockerhub官方鏡像的說明中,鏡像數(shù)據(jù)庫文件存儲(chǔ)的默認(rèn)目錄為/var/lib/postgresql/data

上述yaml中,將持久化存儲(chǔ)掛載到/var/lib/postgresql,看似無問題,容器也可以正常啟動(dòng),但是其實(shí)數(shù)據(jù)庫文件并沒有寫入 PVC 中,當(dāng) Pod 發(fā)生重啟重新調(diào)度時(shí),數(shù)據(jù)庫文件便會(huì)丟失。

問題分析

進(jìn)入 Pod, 通過 findmnt命令,可以清楚地看到數(shù)據(jù)庫存儲(chǔ)文件并未保存在數(shù)據(jù)盤中,而是使用 volume 的方式掛載,被掛載到了/dev/vda1中,所以導(dǎo)致 Pod 重啟時(shí),該目錄被自動(dòng)釋放,數(shù)據(jù)丟失。

那是什么原因造成的呢?

我們登錄 Pod 所在的節(jié)點(diǎn)

通過docker history --no-trunc postgres:12.4查看鏡像的構(gòu)建歷史發(fā)現(xiàn),此鏡像構(gòu)建所使用的 Dockerfile使用了 VOLUME命令,手工掛載了/var/lib/postgresql/data

Dockerfile構(gòu)建后的鏡像中,VOLUME中的操作并不會(huì)被Kubernetes忽略,而是會(huì)繼續(xù)掛載。

即先掛載kubelet給加的volume,后掛載image.config.volumesimage.config.volumes不會(huì)覆蓋掉kubeletvolume。

如需要將其使用 PVC 覆蓋目錄,必須手工指定 PVC 的掛載點(diǎn)與其同地址,即將volumeMounts中的mountPath/var/lib/postgresql調(diào)整為/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 

新建測(cè)試文件,并刪除 Pod 后測(cè)試數(shù)據(jù)寫入

以上就是一文解析Kubernetes使用PVC后數(shù)據(jù)丟失的詳細(xì)內(nèi)容,更多關(guān)于Kubernetes PVC后數(shù)據(jù)丟失的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • K8S?prometheus?operator監(jiān)控工作原理介紹

    K8S?prometheus?operator監(jiān)控工作原理介紹

    這篇文章主要為大家介紹了K8S?prometheus?operator監(jiān)控工作原理介紹,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • k8s部署Ingress并創(chuàng)建規(guī)則的詳細(xì)介紹

    k8s部署Ingress并創(chuàng)建規(guī)則的詳細(xì)介紹

    這篇文章主要介紹了k8s部署Ingress并創(chuàng)建規(guī)則,本文通過圖文實(shí)例相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-03-03
  • k8s入門實(shí)戰(zhàn)deployment使用詳解

    k8s入門實(shí)戰(zhàn)deployment使用詳解

    這篇文章主要為大家介紹了k8s入門實(shí)戰(zhàn)deployment使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • K8s如何拉取habor鏡像

    K8s如何拉取habor鏡像

    這篇文章主要介紹了K8s如何拉取habor鏡像,在daemon.json中添加倉庫地址,需要在創(chuàng)建資源對(duì)象所在的節(jié)點(diǎn)進(jìn)行添加,本文給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-04-04
  • K8S部署lnmp項(xiàng)目全過程

    K8S部署lnmp項(xiàng)目全過程

    這篇文章主要介紹了K8S部署lnmp項(xiàng)目全過程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Kubernetes安全加固的一些實(shí)用建議

    Kubernetes安全加固的一些實(shí)用建議

    Kubernetes是一個(gè)自動(dòng)化的容器編排平臺(tái),它負(fù)責(zé)應(yīng)用的部署、應(yīng)用的彈性以及應(yīng)用的管理,這些都是基于容器的,下面這篇文章主要給大家介紹了關(guān)于Kubernetes安全加固的一些實(shí)用建議,需要的朋友可以參考下
    2022-02-02
  • Rainbond部署組件Statefulset的使用官方文檔

    Rainbond部署組件Statefulset的使用官方文檔

    這篇文章主要為大家介紹了官方文檔Rainbond部署組件Statefulset的使用,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-04-04
  • K8S中Pod重啟策略及重啟可能原因詳細(xì)講解

    K8S中Pod重啟策略及重啟可能原因詳細(xì)講解

    在k8s集群中當(dāng)某個(gè)pod資源需要重啟時(shí),我們只會(huì)對(duì)其進(jìn)行刪除,由其pod控制器進(jìn)行重新構(gòu)建,下面這篇文章主要給大家介紹了關(guān)于K8S中Pod重啟策略及重啟可能原因的相關(guān)資料,需要的朋友可以參考下
    2023-05-05
  • 2022最新青龍面板對(duì)接機(jī)器人的詳細(xì)過程(傻妞對(duì)接onebot(oicq)協(xié)議實(shí)現(xiàn)機(jī)器人功能)

    2022最新青龍面板對(duì)接機(jī)器人的詳細(xì)過程(傻妞對(duì)接onebot(oicq)協(xié)議實(shí)現(xiàn)機(jī)器人功能)

    這篇文章主要介紹了2022最新青龍面板對(duì)接機(jī)器人的詳細(xì)過程(傻妞對(duì)接onebot(oicq)協(xié)議實(shí)現(xiàn)機(jī)器人功能),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-05-05
  • 從小飯館客流量變大論云原生負(fù)載均衡

    從小飯館客流量變大論云原生負(fù)載均衡

    這篇文章主要為大家介紹了從小飯館客流量變大來討論云原生負(fù)載均衡,為大家做出更生動(dòng)易懂的云原生解釋說明有需要的朋友可以借鑒參考下
    2022-03-03

最新評(píng)論