国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

K8S臨時存儲-本地存儲-PV和PVC的使用-動態(tài)存儲(StorageClass)

這篇具有很好參考價值的文章主要介紹了K8S臨時存儲-本地存儲-PV和PVC的使用-動態(tài)存儲(StorageClass)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

介紹

容器中的文件在磁盤上是臨時存放的,當容器崩潰或停止時容器上面的數據未保存, 因此在容器生命周期內創(chuàng)建或修改的所有文件都將丟失。 在崩潰期間,kubelet 會以干凈的狀態(tài)重新啟動容器。 當多個容器在一個 Pod 中運行并且需要共享文件時,會出現另一個問題,跨所有容器設置和訪問共享文件系統(tǒng)具有一定的挑戰(zhàn)性。K8S 卷(Volume) 這一抽象概念能夠解決這兩個問題。

存儲卷的分類

hostPath 存儲

警告:
HostPath 卷存在許多安全風險,最佳做法是盡可能避免使用 HostPath。 當必須使用 HostPath 卷時,它的范圍應僅限于所需的文件或目錄,并以只讀方式掛載。HostPath 僅適用于單個節(jié)點上的存儲,不支持跨節(jié)點訪問(如果Pod偏移到其他宿主機節(jié)點上面可能會出問題)。

支持的 type 值如下:

type值 說明
空字符串(默認)用于向后兼容,這意味著在安裝 hostPath 卷之前不會執(zhí)行任何檢查
DirectoryOrCreate 如果在給定路徑上什么都不存在,那么將根據需要創(chuàng)建空目錄,權限設置為 0755,具有與 kubelet相同的組和屬主信息
Directory 在給定路徑上必須存在的目錄
FileOrCreate 如果在給定路徑上什么都不存在,那么將在那里根據需要創(chuàng)建空文件,權限設置為 0644,具有與 kubelet 相同的組和所有權
File 在給定路徑上必須存在的文件
Socket 在給定路徑上必須存在的 UNIX 套接字
CharDevice 在給定路徑上必須存在的字符設備
BlockDevice 在給定路徑上必須存在的塊設備

hostPath 配置示例

如有多個節(jié)點,在使用 hostPath 存儲需要指定pod部署在那個節(jié)點上面,例如在Pod上面添加nodeSelector字段指定到某一個節(jié)點(需要提前給節(jié)點打標簽)

apiVersion: v1
kind: Pod
metadata:
  name: test-pd
spec:
  containers:
#  nodeSelector:      # 指定部署到特定節(jié)點上面
#    disktype: ssd     # 標簽
  - image: nginx
    name: test-container
    volumeMounts:
    - mountPath: /test-pd
      name: test-volume
  volumes:
  - name: test-volume
    hostPath:
      path: /data          # 宿主機上目錄位置,注意權限
      type: Directory      # 此字段為可選,詳細解釋在上面

emptyDir

定義了 emptyDir 卷的 Pod,在 Pod 被指派到某節(jié)點時此卷會被創(chuàng)建。emptyDir 卷最初是空的。Pod 中的容器掛載 emptyDir 卷的路徑可能相同也可能不同,但這些容器都可以讀寫 emptyDir 卷中相同的文件。 當 Pod 因為某些原因被從節(jié)點上刪除時,emptyDir 卷中的數據也會被永久刪除。主要作用是為了共享數據用。

emptyDir 卷存儲可以使用任何磁盤、SSD 或網絡存儲,這取決于你的環(huán)境。 你可以將 emptyDir.medium 字段設置為 “Memory”, 以告訴 Kubernetes 為你掛載 tmpfs(基于 RAM 的文件系統(tǒng))。雖然 tmpfs 速度非???,但是要注意它與磁盤不同, 并且你所寫入的所有文件都會計入容?的內存消耗,受容?內存限制約束

說明:
容器崩潰并不會導致 Pod 被從節(jié)點上移除,因此容器崩潰期間 emptyDir 卷中的數據是安全的。

emptyDir 配置示例

apiVersion: v1
kind: Pod
metadata:
  name: test-pd
spec:
  containers:
  - image: nginx
    name: test-container
    volumeMounts:
    - mountPath: /cache
      name: cache-volume
  volumes:
  - name: cache-volume
    emptyDir:
      sizeLimit: 500Mi  # 寫入磁盤的大小限制,如果沒限制直接刪除這行 在emptyDir: []即可

nfs

nfs 卷能將 NFS (網絡文件系統(tǒng)) 掛載到你的 Pod 中。 不像 emptyDir 那樣會在刪除 Pod 的同時也會被刪除,nfs 卷的內容在刪除 Pod 時會被保存,卷只是被卸載。 這意味著 nfs 卷可以被預先填充數據,并且這些數據可以在 Pod 之間共享。

配置示例

說明:
在使用 NFS 卷之前,你必須部署自己的 NFS 服務?才可以使用,這里不再敘述。

apiVersion: v1
kind: Pod
metadata:
  name: test-pd
spec:
  containers:
  - image: registry.k8s.io/test-webserver
    name: test-container
    volumeMounts:
    - mountPath: /my-nfs-data
      name: test-volume
  volumes:
  - name: test-volume
    nfs:
      server: my-nfs-server.example.com   # nfs服務的地址
      path: /my-nfs-volume                # nfs 服務共享的路徑
      readOnly: true                    

PV和PVC的使用

在 Kubernetes 中,PV(PersistentVolume)和 PVC(PersistentVolumeClaim)是用于持久化存儲的核心概念,其本身并沒有存儲的相關功能所以需要準備后端存儲的環(huán)境。

  • PersistentVolume(PV):PV 是集群中的一塊持久化存儲,它是集群管理員預先配置好的存儲資源。PV 可以是網絡存儲(如 NFS、GlusterFS、Ceph)、云存儲(如 AWS EBS、Azure Disk)、本地存儲(HostPath)等。PV 與存儲后端進行綁定,表示集群中的可用存儲資源,支持的后端存儲類型詳情請查看K8S官方文檔

  • PersistentVolumeClaim(PVC):PVC 是 Pod 對 PV 的申請。PVC 定義了對存儲資源的需求,包括存儲容量、訪問模式和其他屬性。Pod 中的容器可以通過 PVC 來申請并使用 PV 提供的持久化存儲。Kubernetes 會根據 PVC 的需求匹配可用的 PV,并將其動態(tài)綁定到 Pod 中。

PV(PersistentVolume)

下面是 hostPath PersistentVolume 的配置文件:

apiVersion: v1
kind: PersistentVolume
metadata:
  labels:
    type: local
  name: task-pv-volume
spec:
  accessModes:
  - ReadWriteOnce
  capacity:
    storage: 10Gi
  hostPath:
    path: /mnt
    type: ""
  persistentVolumeReclaimPolicy: Recycle
  storageClassName: manual
  volumeMode: Filesystem

關鍵詞解釋

  • spec: capacity: storage: 10Gi:定義了 PV 的存儲容量為 10Gi。
  • volumeMode: Filesystem:指定了 PV 的卷模式為文件系統(tǒng)。
  • accessModes: - ReadWriteOnce:指定了 PV 的訪問模式為 ReadWriteOnce,表示此 PV 只能被單個節(jié)點掛載為讀寫模式。
  • persistentVolumeReclaimPolicy: Recycle:指定了 PV 回收策略為 Recycle,表示當 PV 被釋放時,其存儲資源將被重新使用。
  • storageClassName: manual:指定了 PV 的存儲類名稱為 slow。
  • hostPath.path:指定了 PV 的路徑。在這里,path 指定了 PV 使用的主機路徑,即 “/mnt/data”。
  • hostPath.type:指定 PV 所使用的主機路徑的類型,不指定默認是:DirectoryOrCreate 還有 Directory 和 File 類型可選

pv存儲卷的回收策略

  • 回收(Reclaiming) :當用戶不再使用其存儲卷時,他們可以從 API 中將 PVC 對象刪除, 從而允許該資源被回收再利用。
  • 保留(Retain):回收策略 Retain 使得用戶可以手動回收資源。
  • 刪除(Delete):對于支持 Delete 回收策略的卷插件,刪除動作會將 PersistentVolume 對象從 Kubernetes 中移除,同時也會從外部基礎設施中移除所關聯(lián)的存儲資產。 動態(tài)制備的卷會繼承其 StorageClass 中設置的回收策略, 該策略默認為 Delete。
  • 回收(Recycle):如果下層的卷插件支持,回收策略 Recycle 會在卷上執(zhí)行一些基本的擦除 (rm -rf /thevolume/*)操作,之后允許該卷用于新的 PVC 申領。(注意:回收策略 Recycle 已被廢棄。取而代之的建議方案是使用動態(tài)制備。

卷模式

Kubernetes 支持兩種卷模式(volumeModes):

  • Filesystem(文件系統(tǒng)):文件系統(tǒng)模式,表示 PV 中存儲的數據是文件系統(tǒng)數據,可以像普通文件系統(tǒng)一樣被掛載到 Pod 中,并且可以在容器中被讀取和寫入。默認的卷模式是 Filesystem。
  • Block():塊模式,表示 PV 中存儲的數據是塊設備數據,可以將 PV 掛載為塊設備卷(例如 /dev/sdX),并且可以被容器用作塊設備。

訪問模式

  • ReadWriteOnce:卷可以被一個節(jié)點以讀寫方式掛載。 ReadWriteOnce 訪問模式仍然可以在同一節(jié)點上運行的多個 Pod 訪問該卷。
  • ReadOnlyMany:卷可以被多個節(jié)點以只讀方式掛載。
  • ReadWriteMany:卷可以被多個節(jié)點以讀寫方式掛載。
  • ReadWriteOncePod:(目前K8S版本在1.22及以上的才支持到1.29才GA)卷可以被單個 Pod 以讀寫方式掛載。 如果你想確保整個集群中只有一個 Pod 可以讀取或寫入該 PVC, 請使用 ReadWriteOncePod 訪問模式。

創(chuàng)建PV

kubectl create -f pv0003.yaml

創(chuàng)建好以后查看

kubectl get pv
NAME             CAPACITY   ACCESSMODES   RECLAIMPOLICY   STATUS      CLAIM     STORAGECLASS   REASON    AGE
pv0003           5Gi        RWO           Recycle         Available              manual                  4s

PV狀態(tài)說明:

  • NAME:PVC名字
  • CAPACITY:PV大小
  • ACCESSMODES:訪問模式
  • RECLAIMPOLICY:回收策略
  • STATUS:PV使用狀態(tài)
  • STORAGECLASS: 動態(tài)存儲名字
  • AGE:創(chuàng)建時間

在命令行接口(CLI)中,訪問模式也使用以下縮寫形式:

  • RWO - ReadWriteOnce
  • ROX - ReadOnlyMany
  • RWX - ReadWriteMany
  • RWOP - ReadWriteOncePod

PV每個階段的狀態(tài)

每個持久卷會處于以下階段(Phase)之一:

  • Available:卷是一個空閑資源,尚未綁定到任何申領
  • Bound:該卷已經綁定到某申領
  • Released:所綁定的申領已被刪除,但是關聯(lián)存儲資源尚未被集群回收
  • Failed:卷的自動回收操作失敗

使用 kubectl describe persistentvolume 查看已綁定到 PV 的 PVC 的名稱。

PVC(PersistentVolumeClaims)

創(chuàng)建一個PVC:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: myclaim
spec:
  accessModes:
    - ReadWriteOnce
  volumeMode: Filesystem
  resources:
    requests:
      storage: 5Gi

這里面的字段意思基本和PV里面的一樣,訪問模式和卷模式也是一樣的,就不再解釋了。

PV和PVC的綁定模式

匹配步驟:

  • 檢查 PV 的狀態(tài):Kubernetes 控制器會查找狀態(tài)為 Available(可用)的 PV,這些 PV 尚未被其他 PVC 綁定。
  • PV 屬性的匹配:控制器會檢查 PVC 的需求與 PV 的屬性是否匹配。這包括容量、訪問模式、持久性和標簽等。
  • 針對 PVC 的需求選擇 PV:控制器會選擇滿足 PVC 所有需求的 PV,并嘗試將其與 PVC 綁定。

自動綁定

創(chuàng)建PV和PVC

apiVersion: v1
kind: PersistentVolume
metadata:
  name: task1
  labels:
    type: local1
spec:
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/mnt"
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: task-pv-claim
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 9Gi

查看PV和PVC狀態(tài)

[root@master01 pv]# kubectl get pvc,pv
NAME                                  STATUS   VOLUME   CAPACITY   ACCESS MODES   STORAGECLASS   AGE
persistentvolumeclaim/task-pv-claim   Bound    task1    10Gi       RWO                           26s

NAME                     CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM                   STORAGECLASS   REASON   AGE
persistentvolume/task1   10Gi       RWO            Retain           Bound       default/task-pv-claim                           10m

都是已經綁狀態(tài)

根據標簽綁定

創(chuàng)建PV和PVC

apiVersion: v1
kind: PersistentVolume
metadata:
  name: my-pv
  labels:
    desk: "test1"       # 設置標簽
spec:
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: /mnt
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: my-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
  selector:
    matchLabels:
      desk: "test1"     # 匹配PV的標簽

查看PV和PVC狀態(tài)
可以看到 my-pvc 已經綁定到 my-pv 上面了,如果沒有標簽自動綁定的話 則會綁定到 task2 的PV上面

[root@master01 pv]# kubectl get pv
NAME    CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM            STORAGECLASS   REASON   AGE
my-pv   10Gi       RWO            Retain           Bound       default/my-pvc                           3s
task1   10Gi       RWO            Retain           Available                                            46s
task2   5Gi        RWO            Retain           Available                                            46s
[root@master01 pv]# kubectl get pvc
NAME     STATUS   VOLUME   CAPACITY   ACCESS MODES   STORAGECLASS   AGE
my-pvc   Bound    my-pv    10Gi       RWO                           12s

指定PV名字綁定

apiVersion: v1
kind: PersistentVolume
metadata:
  name: my-pv
spec:
  capacity:
    storage: 20Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: /mnt/data
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: my-pvc
spec:
  accessModes:
    - ReadWriteOnce
  volumeName: my-pv   # 指定要綁定的 PV 的名稱
  resources:
    requests:
      storage: 5Gi

查看PV和PVC綁定情況

[root@master01 pv]# kubectl get pv,pvc
NAME                     CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM            STORAGECLASS   REASON   AGE
persistentvolume/my-pv   20Gi       RWO            Retain           Bound       default/my-pvc                           5s
persistentvolume/task1   10Gi       RWO            Retain           Available                                            158m
persistentvolume/task2   5Gi        RWO            Retain           Available                                            158m

NAME                           STATUS    VOLUME   CAPACITY   ACCESS MODES   STORAGECLASS   AGE
persistentvolumeclaim/my-pvc   Pending   my-pv    0                                        5s

注意事項

PV 和 PVC 之間的綁定是一對一的關系。一個 PVC 只能綁定到一個 PV 上,而一個 PV 可以同時被多個 PVC 綁定。如果沒有足夠的 PV 來滿足 PVC 的需求,或者沒有滿足 PVC 的要求的可用 PV,則 PVC 將處于 Pending(掛起)狀態(tài),直到滿足條件為止。

Pod使用PVC存儲

創(chuàng)建PV和PVC:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: task-pv-volume
  labels:
    type: local
spec:
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/mnt/data"
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: task-pv-claim
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 3Gi

創(chuàng)建一個Pod使用上面這個PVC

apiVersion: v1
kind: Pod
metadata:
  name: task-pv-pod
spec:
  containers:
    - name: task-pv-container
      image: nginx
      ports:
        - containerPort: 80
          name: "http-server"
      volumeMounts:
        - mountPath: "/usr/share/nginx/html"
          name: task-pv-storage
  volumes:
    - name: task-pv-storage
      persistentVolumeClaim:          # 指定使用PVC存儲
        claimName: task-pv-claim      # PVC存儲的名字

在Pod里面多次掛在PVC

apiVersion: v1
kind: Pod
metadata:
  name: test
spec:
  containers:
    - name: test
      image: nginx
      volumeMounts:
        # 網站數據掛載
        - name: config
          mountPath: /usr/share/nginx/html
          subPath: html
        # Nginx 配置掛載
        - name: config
          mountPath: /etc/nginx/nginx.conf
          subPath: nginx.conf
  volumes:
    - name: config
      persistentVolumeClaim:
        claimName: test-nfs-claim

PVC綁定常見問題

創(chuàng)建PVC后,一直綁定不上PV(Pending):

  • PVC的空間申請大小大于PV的大小
  • PVC的StorageClassName沒有和PV的一致
  • PVC的accessModes和PV的不一致

Pod掛在PVC后,一直處于Pending狀態(tài):

  • PVC沒有被創(chuàng)建成功,或者被創(chuàng)建
  • PVC和Pod不在同一個Namespace(PV是沒有命名空間的,PVC是有有命名空間概念的)

刪除PVC后k8s會創(chuàng)建一個用于回收的Pod,根據PV的回收策略進行pv的回收,回收完以后PV的狀態(tài)就會變成可被綁定的狀態(tài)也就是空閑狀態(tài),其他的Pending狀態(tài)的PVC如果匹配到了這個PV,他就能和這個PV進行綁定。

動態(tài)存儲(StorageClass)

主要功能:

  • 動態(tài)配置持久存儲:StorageClass 允許管理員定義多種類型的存儲,包括云存儲、本地存儲、網絡存儲等,并且可以根據用戶的請求動態(tài)創(chuàng)建 PersistentVolume(PV)。
  • 自動綁定:一旦 PVC 請求了特定的存儲類,Kubernetes 將根據 StorageClass 的定義自動創(chuàng)建 PV,并將其綁定到 PVC 上,簡化了存儲資源的管理過程。
  • 多種屬性支持:StorageClass 允許管理員定義存儲的各種屬性,如容量、訪問模式、持久性、副本數等,以滿足不同應用程序的需求。
  • 靈活性和可擴展性:管理員可以根據實際需求定義多個不同的 StorageClass,并根據應用程序的需求選擇合適的存儲類。

環(huán)境準備

在開始之前請安裝后端存儲,我這里使用的是CEPH存儲并且安裝到K8S集群里,下面是安裝方法。(所有環(huán)境中如果有用到的安裝包或者容器鏡像什么的都可以私信我)
安裝方法:點擊跳轉

查看已經部署好的StorageClass

注意: 本次演示默認已經安裝好ceph存儲。

## sc 是 StorageClass 簡寫

[root@master01 ~]# kubectl get sc
NAME            PROVISIONER                     RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
rook-ceph-rbd   rook-ceph.rbd.csi.ceph.com      Retain          Immediate           true                   228d
rook-cephfs     rook-ceph.cephfs.csi.ceph.com   Retain          Immediate           true                   228d
  • rook-ceph-rbd :這個是塊存儲。區(qū)別:只能由一個節(jié)點進行讀寫操作
  • rook-cephfs:這個是共享文件存儲。區(qū)別:可以在多個節(jié)點上同時掛載和訪問。

適用場景:

  • RBD:適用于需要高性能、低延遲和可擴展性的場景,如數據庫、塊存儲卷等。
  • CephFS:適用于需要共享數據、訪問文件系統(tǒng)的場景,如共享存儲、容器卷等。

查看 rook-ceph-rbd

查看命令

kubectl get sc rook-ceph-rbd -oyaml
allowVolumeExpansion: true
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: rook-ceph-rbd
parameters:
  clusterID: rook-ceph
  csi.storage.k8s.io/controller-expand-secret-name: rook-csi-rbd-provisioner
  csi.storage.k8s.io/controller-expand-secret-namespace: rook-ceph
  csi.storage.k8s.io/fstype: ext4
  csi.storage.k8s.io/node-stage-secret-name: rook-csi-rbd-node
  csi.storage.k8s.io/node-stage-secret-namespace: rook-ceph
  csi.storage.k8s.io/provisioner-secret-name: rook-csi-rbd-provisioner
  csi.storage.k8s.io/provisioner-secret-namespace: rook-ceph
  imageFeatures: layering
  imageFormat: "2"
  pool: replicapool
provisioner: rook-ceph.rbd.csi.ceph.com
reclaimPolicy: Retain
volumeBindingMode: Immediate

關鍵字段解釋

  • kind:表示這是 Kubernetes 存儲 API 的版本,而 kind 設置為 StorageClass,表示這是一個 StorageClass 對象。
  • allowVolumeExpansion: true :這個字段用于指示是否允許對使用這個 StorageClass 創(chuàng)建的持久卷進行擴展。
  • metadata:這個部分包含有關 StorageClass 的元數據,其中最重要的是 name 字段,它指定了 StorageClass 的名稱,這里是 “rook-ceph-rbd”。
  • parameters:這個字段定義了傳遞給 StorageClass 的參數。在這個例子中,這些參數包括:
    • clusterID:Rook Ceph 集群的 ID。
    • csi.storage.k8s.io/controller-expand-secret-name : 的名稱和命名空間。
    • csi.storage.k8s.io/controller-expand-secret-namespace:指定擴展控制器所需的密鑰.
    • csi.storage.k8s.io/fstype:指定了文件系統(tǒng)類型。
    • csi.storage.k8s.io/node-stage-secret-name 和 csi.storage.k8s.io/node-stage-secret-namespace:這些參數用于指定節(jié)點階段操作所需的密鑰的名稱和命名空間。
      csi.storage.k8s.io/provisioner-secret-name 和 csi.storage.k8s.io/provisioner-secret-namespace:這些參數用于指定提供程序所需的密鑰的名稱和命名空間。
  • imageFeatures:這個參數指定了卷的特性,即它包含了支持鏡像層疊(layering)的功能。鏡像層疊允許在卷上創(chuàng)建多個鏡像,每個鏡像可以包含自己的修改,而不會影響其他鏡像。
  • imageFormat:這個參數指定了卷的格式,即它使用的是格式版本 2。格式版本 2 是 RBD 卷的一種格式,它支持更高級的功能和性能,例如支持更大的卷和更好的快照管理。
  • pool:指定了用于存儲的池名稱。
  • provisioner:這個字段指定了用于創(chuàng)建持久卷的存儲提供程序。在這里,使用的提供程序是 rook-ceph.rbd.csi.ceph.com,表明這個 StorageClass 使用了 Rook Ceph 的 RBD(Rados Block Device)CSI(Container Storage Interface)提供程序。
  • reclaimPolicy:這個字段指定了持久卷的回收策略。在這里,設置為 Retain,表示當與此 StorageClass 關聯(lián)的持久卷不再需要時,它們的資源應該保留而不被自動刪除。
  • volumeBindingMode:這個字段指定了持久卷的綁定模式。在這里,設置為 Immediate,表示持久卷應該立即綁定到聲明,即創(chuàng)建聲明時應立即創(chuàng)建卷。

StorageClass 使用方法

創(chuàng)建 StatefulSet 使用

部署成功以后 StorageClass 會根據PVC申請的去自動創(chuàng)建PV并綁定好

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: my-statefulset
spec:
  serviceName: "my-statefulset"
  replicas: 3
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: my-container
        image: nginx:latest
        ports:
        - containerPort: 80
        volumeMounts:
        - name: my-persistent-storage
          mountPath: /usr/share/nginx/html
  volumeClaimTemplates:
  - metadata:
      name: my-persistent-storage
    spec:
      accessModes: [ "ReadWriteOnce" ]
      storageClassName: "rook-ceph-rbd" # 指定剛剛查出來的 StorageClass 名字 
      resources:
        requests:
          storage: 5Gi

使用PVC申請動態(tài)存儲

創(chuàng)建PVC成功以后會自動創(chuàng)建PV并綁定好,后面Pod使用方式和上面手動創(chuàng)建PV和PVC的方式一樣。

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: my-pvc
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: rook-ceph-rbd    # 指定要使用的 StorageClass 的名稱
  resources:
    requests:
      storage: 1Gi                   # 請求 1GB 的存儲容量

PVC擴容

直接修改 “storage: 1Gi ” 修改為2G即可,但是生效還需要等幾分鐘。文章來源地址http://www.zghlxwxcb.cn/news/detail-853376.html

kubectl edit pvc my-pvc

到了這里,關于K8S臨時存儲-本地存儲-PV和PVC的使用-動態(tài)存儲(StorageClass)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯(lián)網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • Kubernetes基礎(二十二)-K8S的PV/PVC/StorageClass詳解

    Kubernetes基礎(二十二)-K8S的PV/PVC/StorageClass詳解

    先來個 一句話總結 :PV、PVC是K8S用來做存儲管理的資源對象,它們讓存儲資源的使用變得 可控 ,從而保障系統(tǒng)的穩(wěn)定性、可靠性。StorageClass則是為了減少人工的工作量而去 自動化創(chuàng)建 PV的組件。所有Pod使用存儲只有一個原則: 先規(guī)劃 ?→? 后申請 ?→? 再使用 。 1.1 PV概念

    2024年02月20日
    瀏覽(27)
  • k8s 1.28版本:使用StorageClass動態(tài)創(chuàng)建PV,SelfLink 問題修復

    ?? k8s中提供了一套自動創(chuàng)建 PV 的機制,就是基于 StorageClass 進行的 ,通過 StorageClass 可以實現僅僅配置 PVC,然后交由 StorageClass 根據 PVC 的需求動態(tài)創(chuàng)建 PV。 問題: ??使用 k8s 1.28版本,通過 kubectl get pvc ,發(fā)現 PVC一直處于 Pending 狀態(tài)。通過 kubectl describe pvc [pvc名稱] 描述

    2024年02月08日
    瀏覽(16)
  • Kubernetes(K8S)使用PV和PVC做存儲安裝mysql

    Kubernetes(K8S)使用PV和PVC做存儲安裝mysql

    首先你需要一個k8s環(huán)境,可以參考我寫的文章:https://blog.csdn.net/m0_51510236/article/details/130842122 我們可以簡單看一下官網的描述:https://kubernetes.io/zh-cn/docs/concepts/storage/persistent-volumes/#introduction 持久卷(PersistentVolume,PV) 是集群中的一塊存儲,可以由管理員事先制備, 或者使用

    2024年02月03日
    瀏覽(21)
  • 【K8S 存儲卷】K8S的存儲卷+PV/PVC

    【K8S 存儲卷】K8S的存儲卷+PV/PVC

    目錄 一、K8S的存儲卷 1、概念: 2、掛載的方式: 2.1、emptyDir: 2.2、hostPath: 2.3、NFS共享存儲: 二、PV和PVC: 1、概念 2、請求方式 3、靜態(tài)請求流程圖: 4、PV和PVC的生命周期 5、PV的狀態(tài): 6、PV的讀寫掛載方式: 7、回收策略: 三、PV和PVC靜態(tài)請求實驗: 1、默認的Retain保留策

    2024年02月02日
    瀏覽(58)
  • k8s ------存儲卷(PV、PVC)

    k8s ------存儲卷(PV、PVC)

    目錄 一:為什么需要存儲卷? 二:emptyDir存儲卷? ?三:hostPath存儲卷? 四:nfs共享存儲卷? ?五:PVC 和 PV 1、PVC 和 PV介紹 2、PV和PVC之間的相互作用遵循的生命周期 3、PV 的4 種狀態(tài) 4、一個PV從創(chuàng)建到銷毀的具體流程 六:靜態(tài)創(chuàng)建pv和pvc資源由pod運用過程 ?1、配置nfs存儲 ?

    2024年02月13日
    瀏覽(19)
  • k8s 存儲卷和pvc,pv

    k8s 存儲卷和pvc,pv

    存儲卷---數據卷 容器內的目錄和宿主機的目錄進行掛載。 容器在系統(tǒng)上的生命周期是短暫的,deletek8s用控制器創(chuàng)建的pod,delete相當于重啟,容器的狀態(tài)也會回復到初始狀態(tài)。 一旦回到初始狀態(tài),所有的后天編輯的文件的都會消失。 容器容器和節(jié)點之間創(chuàng)建一個可以持久化保

    2024年01月16日
    瀏覽(23)
  • k8s中的PV和PVC存儲介紹

    目錄 一.PV介紹 1.含義 2.關鍵配置參數 二.PVC介紹 1.含義 2.關鍵參數配置 三.PV和PVC的生命周期問題 1.PV的生命周期會有4個階段 2.用戶申請空間PV的周期流程 3.PV和PVC的使用/釋放/回收 四.案例演示 1.NFS配置 2.新建PV 3.新建PVC 4.新建Pod測試 5.模擬刪除Pod后后端目錄內數據不會受影響

    2024年03月15日
    瀏覽(20)
  • k8s--動態(tài)pvc和pv

    k8s--動態(tài)pvc和pv

    目錄 前情回顧 動態(tài)pv 實驗模擬 步驟一:在stor01節(jié)點上安裝nfs,并配置nfs服務 接下來在matser01上配置 步驟二:創(chuàng)建 Service Account,用來管理 NFS Provisioner 在?k8s?集群中運行的權限和動態(tài)規(guī)則 步驟三:使用 Deployment 來創(chuàng)建 NFS Provisioner? 部署nfs-provisioners插件: 步驟四:創(chuàng)建 St

    2024年01月24日
    瀏覽(38)
  • K8S持久化存儲--- PVC和PV的存儲

    PersistentVolume ( PV )是群集中的一塊存儲,由管理員配置或使用存儲類動態(tài)配置。 它是集群中的資源,就像 pod 是 k8s 集群資源一樣。 PV是容量插件,如 Volumes ,其生命周期獨立于使用 PV 的任何單個 pod 。 PersistentVolumeClaim ( PVC )是一個持久化存儲卷,我們在創(chuàng)建 pod 時可以

    2023年04月10日
    瀏覽(18)
  • 【云原生】K8S存儲卷:PV、PVC詳解

    【云原生】K8S存儲卷:PV、PVC詳解

    容器磁盤上的文件的生命周期是短暫的,這就使得在容器中運行重要應用時會出現一些問題。首先,當容器崩潰時,kubelet 會重啟它,但是容器中的文件將丟失——容器以干凈的狀態(tài)(鏡像最初的狀態(tài))重新啟動。其次,在Pod中同時運行多個容器時,這些容器之間通常需要共

    2024年02月12日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包