PV、PVC和Storeclass等官方內容翻譯


k8s1.13版本

PV

apiVersion: v1
kind: PersistentVolume
metadata:
  name: filesystem-pvc
spec:
  capacity: #未來的屬性可能包括 IOPS、吞吐量等
    storage: 5Gi 
 volumeMode: Filesystem  #volumeMode 的有效值可以是“Filesystem”或“Block”。如果未指定,volumeMode 將默認為“Filesystem”。這是一個可選的 API 參數
  accessModes:  #ReadWriteOnce——該卷可以被單個節點以讀/寫模式掛載,ReadOnlyMany——該卷可以被多個節點以只讀模式掛載,ReadWriteMany——該卷可以被多個節點以讀/寫模式掛載
    - ReadWriteOnce #一個卷一次只能使用一種訪問模式掛載,即使它支持很多訪問模式
  persistentVolumeReclaimPolicy: Recycle
  storageClassName: slow #可選,一個特定類別的 PV 只能綁定到請求該類別的 PVC。沒有 storageClassName 的 PV 就沒有類,它只能綁定到不需要特定類的 PVC。
  mountOptions: - hard
    - nfsvers=4.1 nfs:
    path: /tmp
    server: 172.17.0.2

--volumeMode為Block,目前只有如下PV支持

AWSElasticBlockStore
AzureDisk
FC (Fibre Channel)
GCEPersistentDisk
iSCSI
Local volume
RBD (Ceph Block Device)
VsphereVolume (alpha)

--回收策略persistentVolumeReclaimPolicy

Retain(保留)——手動回收
Recycle(回收)——基本擦除(rm -rf /thevolume/*)
Delete(刪除)——關聯的存儲資產(例如 AWS EBS、GCE PD、Azure Disk 和 OpenStack Cinder 卷)將被刪除
當前,只有 NFS 和 HostPath 支持回收策略。AWS EBS、GCE PD、Azure Disk 和 Cinder 卷支持刪除策略。
卷可以處於以下的某種狀態:
Available(可用)——一塊空閑資源還沒有被任何聲明綁定
Bound(已綁定)——卷已經被聲明綁定
Released(已釋放)——聲明被刪除,但是資源還未被集群重新聲明
Failed(失敗)——該卷的自動回收失敗

 

 

PVC

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: filesystem-pvc #pvc和pv通過名字進行匹配
spec:
  accessModes: #與pv一樣,注意:這里pv和pvc一樣才會匹配上 - ReadWriteOnce
  volumeMode: Filesystem #與pv一樣
  resources:  #與pv一樣
    requests:
      storage: 8Gi
  storageClassName: slow
  selector:
    matchLabels:
      release: "stable"
    matchExpressions:
      - {key: environment, operator: In, values: [dev]}

--selector

matchLabels:volume 必須有具有該值的標簽
matchExpressions:這是一個要求列表,通過指定關鍵字,值列表以及與關鍵字和值相關的運算符組成。有效的運算符包括 In、NotIn、Exists 和 DoesNotExist。
所有來自 matchLabels 和 matchExpressions 的要求都被“與”在一起——它們必須全部滿足才能匹配。

--storageClassName

PVC不一定要請求類。其storageClassName 設置為 "" 的PVC始終被解釋為沒有請求類的PV
與 PVC 具有相同 storageClassName 的 PV 才能綁定到 PVC

 

 pod使用聲明

apiVersion: v1
kind: Pod
metadata:
  name: pod-with-filesystem-volume
spec:
  containers:
    - name: fc-container
      image: fedora:26
      command: ["/bin/sh", "-c"]
      args: [ "tail -f /dev/null" ]
      volumeDevices: - name: data
          devicePath: /dev/xvda
  volumes:
    - name: data
      persistentVolumeClaim:
        claimName: filesystem-pvc

 

或者直接在staefulset中定義pvc

apiVersion: apps/v1beta1
kind: StatefulSet
metadata:
  name: web
spec:
  serviceName: "nginx"
  replicas: 3 volumeClaimTemplates:
  - metadata:
      name: test  
    spec:
      accessModes: [ "ReadWriteOnce" ]
      resources:
        requests:
          storage: 5Gi 
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: magine1989
        image: nginx:1.11.10
        volumeMounts:
        - mountPath: "/mnt/rbd"
          name: test

 

 

Storeclass

StorageClass 為管理員提供了描述存儲 "class(類)" 的方法。 不同的 class 可能會映射到不同的服務質量等級或備份策略,或由群集管理員確定的任意策略。 Kubernetes 本身不清楚各種 class 代表的什么。這個概念在其他存儲系統中有時被稱為“配置文件”。

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: standard
provisioner: kubernetes.io/aws-ebs
parameters:
  type: gp2
reclaimPolicy: Retain
mountOptions:
  - debug

具體參考:https://kubernetes.io/docs/concepts/storage/storage-classes/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM