最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Kubernetes中的存儲卷配置管理方式

 更新時間:2025年12月22日 08:45:46   作者:π大星星?  
Kubernetes中Volume用于在Pod中提供共享存儲,生命周期與Pod解耦,支持多種類型如emptyDir、hostPath、NFS和PersistentVolumeClaim,每種Volume類型適用于不同的場景,如臨時存儲、宿主機文件訪問、共享數(shù)據(jù)和持久化存儲,通過示例展示了如何創(chuàng)建和使用這些Volume

一、Volume 概述

在 Kubernetes 中,Volume 是一種可被 Pod 中的一個或多個容器訪問的共享目錄。Volume 與 Pod 的生命周期解耦,這意味著即使 Pod 被刪除,Volume 中的數(shù)據(jù)也不會丟失。Volume 可以用于持久化數(shù)據(jù)存儲、共享數(shù)據(jù)等場景。

二、Volume 的生命周期

Volume 的生命周期可以獨立于 Pod 的生命周期,這取決于 Volume 的類型:

  • 非持久化 Volume(如 emptyDir):當(dāng) Pod 被刪除時,emptyDir 類型的 Volume 也會被刪除,其中的數(shù)據(jù)也會丟失。但是,如果 Pod 被重啟(容器在同一個 Pod 內(nèi)重新啟動),emptyDir 中的數(shù)據(jù)會保留。
  • 持久化 Volume(如 PersistentVolumeClaim,PVC):即使 Pod 被刪除,如果使用了 PVC 并且關(guān)聯(lián)了 PV,那么 PV 不會被自動刪除(除非設(shè)置了相應(yīng)的回收策略)。因此,即使 Pod 被刪除,關(guān)聯(lián)的 PV 中的數(shù)據(jù)仍然存在,可以在新的 Pod 中通過 PVC 重新訪問這些數(shù)據(jù)。

Volume 的生命周期不會受到容器重啟的影響,這使得 Volume 成為持久化數(shù)據(jù)存儲的理想選擇。

三、支持的卷類型

Kubernetes 支持多種類型的 Volume,每種類型適用于不同的場景:

  1. emptyDir:在 Pod 被分配到節(jié)點時創(chuàng)建,只要 Pod 在該節(jié)點上運行,卷就存在。當(dāng) Pod 被從節(jié)點上刪除時,emptyDir 中的數(shù)據(jù)也會被永久刪除。
  2. hostPath將宿主機上的文件或目錄掛載到 Pod 中。適用于需要訪問宿主機文件系統(tǒng)的場景。
  3. NFS允許將現(xiàn)有的 NFS 服務(wù)器上的目錄掛載到 Kubernetes 中的 Pod 中。適用于需要在多個 Pod 之間共享數(shù)據(jù)的場景。
  4. PersistentVolumeClaim (PVC)用戶對持久存儲的請求,可以動態(tài)或靜態(tài)地綁定到 PersistentVolume (PV) 上。

四、每種卷類型的使用場景和示例

4.1 emptyDir 卷

使用場景

  • 臨時存儲,例如緩存或會話數(shù)據(jù)。
  • 多個容器需要共享數(shù)據(jù)時。

示例

創(chuàng)建一個使用 emptyDir 的 Pod:

apiVersion: v1  # 指定 Kubernetes API 的版本
kind: Pod  # 定義資源類型為 Pod
metadata:  # Pod 的元數(shù)據(jù)部分
  name: test-pod  # 為這個 Pod 指定一個名稱
spec:  # Pod 的具體規(guī)格和配置
  containers:  # 定義 Pod 中的容器列表
  - name: test-container  # 為容器指定一個名稱
    image: busybox  # 指定容器使用的鏡像為 busybox
    command: ["sh", "-c", "echo Hello > /data/hello && cat /data/hello && sleep 3600"]  # 指定容器啟動后執(zhí)行的命令
    volumeMounts:  # 定義容器需要掛載的卷
    - name: data-volume  # 引用在 volumes 中定義的卷名稱
      mountPath: /data  # 指定容器內(nèi)部的掛載路徑
  volumes:  # 定義 Pod 可以使用的卷列表
  - name: data-volume  # 為卷指定一個名稱
    emptyDir: {}  # 使用 emptyDir 類型的卷,它將在 Pod 所在的節(jié)點上創(chuàng)建一個臨時目錄

操作步驟

保存上述 YAML 到 test-pod.yaml 文件。

應(yīng)用 YAML 文件創(chuàng)建 Pod:

kubectl apply -f test-pod.yaml

查看 Pod 的日志,驗證 emptyDir 是否工作:

kubectl logs test-pod

預(yù)期輸出

Hello

4.2 hostPath 卷

使用場景

需要訪問宿主機上的文件或目錄,例如日志文件、配置文件等。

示例

創(chuàng)建一個使用 hostPath 的 Pod:

apiVersion: v1  # 指定 Kubernetes API 的版本
kind: Pod  # 定義資源類型為 Pod
metadata:  # Pod 的元數(shù)據(jù)
  name: test-pod-hostpath  # 為 Pod 指定一個名稱
spec:  # Pod 的具體配置
  containers:  # 定義 Pod 中的容器列表
  - name: test-container  # 為容器指定一個名稱
    image: busybox  # 指定容器使用的鏡像
    command: ["sh", "-c", "echo Hello > /data/hello && cat /data/hello && sleep 3600"]  # 指定容器啟動后執(zhí)行的命令
    volumeMounts:  # 定義容器需要掛載的卷
    - name: data-volume  # 引用在 volumes 中定義的卷名稱
      mountPath: /data  # 指定容器內(nèi)部的掛載入路徑
  volumes:  # 定義 Pod 級別的卷
  - name: data-volume  # 為卷指定一個名稱
    hostPath:  # 指定卷的類型為 hostPath
      path: /data  # 指定宿主機上的路徑,容器會將此路徑掛載到 mountPath 指定的位置
      type: DirectoryOrCreate  # 如果指定的路徑不存在,則創(chuàng)建目錄

操作步驟

保存上述 YAML 到 test-pod-hostpath.yaml 文件。

應(yīng)用 YAML 文件創(chuàng)建 Pod:

kubectl apply -f test-pod-hostpath.yaml

驗證宿主機上的 /data 目錄,查看是否創(chuàng)建了 hello 文件:

kubectl exec -it test-pod-hostpath -- /bin/sh
cat /data/hello

預(yù)期輸出

Hello

4.3 NFS 卷

使用場景

  • 需要在多個 Pod 之間共享數(shù)據(jù)。
  • 數(shù)據(jù)需要持久化存儲。

示例

假設(shè)您已經(jīng)有一個 NFS 服務(wù)器,其路徑為 /nfsdata

創(chuàng)建一個使用 NFS 的 Pod:

apiVersion: v1
kind: Pod
metadata:
  name: test-pod-nfs
spec:
  containers:
  - name: test-container
    image: busybox
    command: ["sh", "-c", "echo Hello > /data/hello && cat /data/hello && sleep 3600"]
    volumeMounts:
    - name: data-volume
      mountPath: /data
  volumes:
  - name: data-volume
    nfs:
      server: <NFS_SERVER_IP>  # NFS 服務(wù)器 IP 地址
      path: /nfsdata          # NFS 服務(wù)器路徑

操作步驟

  • 替換 <NFS_SERVER_IP> 為實際的 NFS 服務(wù)器 IP 地址。
  • 保存上述 YAML 到 test-pod-nfs.yaml 文件。
  • 應(yīng)用 YAML 文件創(chuàng)建 Pod:
kubectl apply -f test-pod-nfs.yaml

驗證 NFS 服務(wù)器上的 /nfsdata 目錄,查看是否創(chuàng)建了 hello 文件:

kubectl exec -it test-pod-nfs -- /bin/sh
cat /data/hello

預(yù)期輸出

Hello

4.4 PersistentVolumeClaim (PVC)

使用場景

  • 需要持久化存儲數(shù)據(jù)。
  • 數(shù)據(jù)需要在多個 Pod 之間共享。

示例

首先,創(chuàng)建一個 PersistentVolume (PV):

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv-nfs
spec:
  capacity:
    storage: 5Gi
  volumeMode: Filesystem
  accessModes:
  - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  storageClassName: nfs
  nfs:
    path: /nfsdata
    server: <NFS_SERVER_IP>

操作步驟

  • 替換 <NFS_SERVER_IP> 為實際的 NFS 服務(wù)器 IP 地址。
  • 保存上述 YAML 到 pv-nfs.yaml 文件。
  • 應(yīng)用 YAML 文件創(chuàng)建 PV:
kubectl apply -f pv-nfs.yaml

接下來,創(chuàng)建一個 PersistentVolumeClaim (PVC):

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pvc-nfs
spec:
  storageClassName: nfs
  accessModes:
  - ReadWriteMany
  resources:
    requests:
      storage: 1Gi

操作步驟

  • 保存上述 YAML 到 pvc-nfs.yaml 文件。
  • 應(yīng)用 YAML 文件創(chuàng)建 PVC:
kubectl apply -f vc-nfs.yaml

最后,創(chuàng)建一個使用 PVC 的 Pod:

apiVersion: v1
kind: Pod
metadata:
  name: test-pod-pvc
spec:
  containers:
  - name: test-container
    image: busybox
    command: ["sh", "-c", "echo Hello > /data/hello && cat /data/hello && sleep 3600"]
    volumeMounts:
    - name: data-volume
      mountPath: /data
  volumes:
  - name: data-volume
    persistentVolumeClaim:
      claimName: pvc-nfs

操作步驟

  • 保存上述 YAML 到 test-pod-pvc.yaml 文件。
  • 應(yīng)用 YAML 文件創(chuàng)建 Pod:
kubectl apply -f test-pod-pvc.yaml
  • 驗證 NFS 服務(wù)器上的 /nfsdata 目錄,查看是否創(chuàng)建了 hello 文件:
kubectl exec -it test-pod-pvc -- /bin/sh
cat /data/hello

預(yù)期輸出

Hello

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 新版k8s拉取鏡像失敗問題解決辦法

    新版k8s拉取鏡像失敗問題解決辦法

    隨著Kubernetes?1.23版本的發(fā)布,Docker作為默認容器運行時被棄用,轉(zhuǎn)而默認采用Containerd,這一改變意味著用戶在使用Kubernetes時,將不再通過Docker來拉取鏡像,文中jiang,需要的朋友可以參考下
    2024-10-10
  • k8s如何給node添加標(biāo)簽(最新推薦)

    k8s如何給node添加標(biāo)簽(最新推薦)

    k8s集群如果由大量節(jié)點組成,可將節(jié)點打上對應(yīng)的標(biāo)簽,然后通過標(biāo)簽進行篩選及查看,更好的進行資源對象的相關(guān)選擇與匹配,這篇文章主要介紹了k8s如何給node添加標(biāo)簽,需要的朋友可以參考下
    2023-02-02
  • k8s?pod如何使用sriov

    k8s?pod如何使用sriov

    這篇文章主要介紹了k8s?pod如何使用sriov問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • k8s中對gkv的理解TypeData詳解

    k8s中對gkv的理解TypeData詳解

    Kubernetes資源通過GKV(Group、Version、Kind)標(biāo)識,用于分類、版本管理和資源識別,在YAML配置中,apiVersion和kind字段分別體現(xiàn)GKV,是K8s資源操作的基礎(chǔ),通過GKV,Kubernetes可以正確解析和執(zhí)行資源配置,并確保版本兼容性
    2025-11-11
  • K8s搭建Jenkins的詳細教程(附源代碼)

    K8s搭建Jenkins的詳細教程(附源代碼)

    Jenkins 是一個開源的自動化服務(wù)器,主要用于持續(xù)集成和持續(xù)交付,這篇文章主要來和大家介紹一下如何在K8s中搭建Jenkins,有需要的可以了解下
    2025-03-03
  • K8s PV和PVC持久化存儲詳解

    K8s PV和PVC持久化存儲詳解

    Kubernetes PV由管理員創(chuàng)建,支持多種存儲類型,提供生命周期管理,PVC請求PV資源,需匹配大小、存儲類和訪問模式,并在同一命名空間,回收策略包括Retain、Delete和Recycle,生產(chǎn)環(huán)境建議使用NAS而非NFS
    2025-08-08
  • kubernetes?k8s入門定義一個Pod

    kubernetes?k8s入門定義一個Pod

    這篇文章主要為大家介紹了k8s入門定義一個Pod以及破底的定義內(nèi)容詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多計步,早日升職加薪
    2022-03-03
  • 在AWS-EC2中安裝Minikube集群的詳細過程

    在AWS-EC2中安裝Minikube集群的詳細過程

    這篇文章主要介紹了在AWS-EC2中安裝Minikube集群,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • 云原生Kubernetes初始化容器Init使用教程

    云原生Kubernetes初始化容器Init使用教程

    這篇文章主要為大家介紹了云原生Kubernetes初始化容器Init使用教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助祝大家多多進步早日升職加薪
    2022-03-03
  • Kubernetes中使用臨時容器進行故障排查的方法

    Kubernetes中使用臨時容器進行故障排查的方法

    在使用Kubernetes時,用戶常常會遇到一些錯誤和迷惑,下面這篇文章主要給大家介紹了關(guān)于Kubernetes中使用臨時容器進行故障排查的相關(guān)資料,需要的朋友可以參考下
    2022-03-03

最新評論

宜川县| 临西县| SHOW| 温州市| 阿拉善左旗| 集贤县| 南乐县| 韶山市| 贵溪市| 宝山区| 琼结县| 宣城市| 南开区| 靖边县| 涪陵区| 贡嘎县| 岐山县| 丁青县| 浏阳市| 翁源县| 东阿县| 呼伦贝尔市| 微博| 扬州市| 康保县| 上饶市| 孝感市| 黎城县| 图木舒克市| 禹城市| 吉安县| 灌云县| 伊川县| 西乌珠穆沁旗| 河北省| 西畴县| 博湖县| 哈密市| 三台县| 交口县| 闽清县|