日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

k8s Storage Classes

發(fā)布時(shí)間:2024/8/1 编程问答 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 k8s Storage Classes 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Storage Classes

介紹

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

StorageClass 資源

每個(gè)?StorageClass?都包含?provisioner、parameters?和?reclaimPolicy?字段, 這些字段會在StorageClass需要動態(tài)分配?PersistentVolume?時(shí)會使用到。

StorageClass?對象的命名很重要,用戶使用這個(gè)命名來請求生成一個(gè)特定的類。 當(dāng)創(chuàng)建?StorageClass?對象時(shí),管理員設(shè)置 StorageClass 對象的命名和其他參數(shù),一旦創(chuàng)建了對象就不能再對其更新。

管理員可以為沒有申請綁定到特定?StorageClass?的 PVC 指定一個(gè)默認(rèn)的類?: 更多詳情請參閱?PersistentVolumeClaim?章節(jié)。

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

存儲分配器

StorageClass?有一個(gè)分配器,用來決定使用哪個(gè)卷插件分配持久化卷申領(lǐng)。該字段必須指定。

卷插件提供廠商配置例子
AWSElasticBlockStore?AWS EBS
AzureFile?Azure File
AzureDisk?Azure Disk
CephFS--
Cinder?OpenStack Cinder
FC--
Flexvolume--
Flocker?-
GCEPersistentDisk?GCE PD
Glusterfs?Glusterfs
iSCSI--
Quobyte?Quobyte
NFS--
RBD?Ceph RBD
VsphereVolume?vSphere
PortworxVolume?Portworx Volume
ScaleIO?ScaleIO
StorageOS?StorageOS
Local-Local

您不限于指定此處列出的”內(nèi)置”分配器(其名稱前綴為 kubernetes.io 并打包在 Kubernetes 中)。 您還可以運(yùn)行和指定外部分配器,這些獨(dú)立的程序遵循由 Kubernetes 定義的?規(guī)范。 外部供應(yīng)商的作者完全可以自由決定他們的代碼保存于何處、打包方式、運(yùn)行方式、使用的插件(包括 Flex)等。 代碼倉庫?kubernetes-incubator/external-storage?包含一個(gè)用于為外部分配器編寫功能實(shí)現(xiàn)的類庫,以及各種社區(qū)維護(hù)的外部分配器。

例如,NFS 沒有內(nèi)部分配器,但可以使用外部分配器。一些外部分配器在代碼倉庫?kubernetes-incubator/external-storage?中。 也有第三方存儲供應(yīng)商提供自己的外部分配器。

回收策略

由?StorageClass?動態(tài)創(chuàng)建的持久化卷會在的?reclaimPolicy?字段中指定回收策略,可以是?Delete?或者?Retain。如果?StorageClass?對象被創(chuàng)建時(shí)沒有指定?reclaimPolicy?,它將默認(rèn)為?Delete。

通過?StorageClass?手動創(chuàng)建并管理的 Persistent Volume 會使用它們被創(chuàng)建時(shí)指定的回收政策。

掛載選項(xiàng)

由?StorageClass?動態(tài)創(chuàng)建的 Persistent Volume 將使用類中?mountOption?字段指定的掛載選項(xiàng)。

如果卷插件不支持掛載選項(xiàng),卻指定了該選項(xiàng),則分配操作會失敗。 掛載選項(xiàng)在?StorageClass?和持久卷上都不會做驗(yàn)證,所以如果掛載選項(xiàng)無效,那么這個(gè) PV 就會失敗。

卷綁定模式

FEATURE STATE:?Kubernetes v1.12?beta

注意:?這個(gè)功能特性需要啟用?VolumeScheduling?參數(shù)才能使用。

volumeBindingMode?字段控制了?卷綁定和動態(tài)分配?應(yīng)該發(fā)生在什么時(shí)候。

默認(rèn)情況下,Immediate?模式表示一旦創(chuàng)建了 PersistentVolumeClaim 也就完成了卷綁定和動態(tài)分配。 對于由于拓?fù)湎拗贫羌核泄?jié)點(diǎn)可達(dá)的存儲后端,PersistentVolume 會在不知道 Pod 調(diào)度要求的情況下綁定或者分配。

集群管理員可以通過指定?WaitForFirstConsumer?模式來解決此問題。 該模式將延遲 PersistentVolume 的綁定和分配,直到使用該 PersistentVolumeClaim 的 Pod 被創(chuàng)建。 PersistentVolume 會根據(jù) Pod 調(diào)度約束指定的拓?fù)鋪磉x擇或分配。這些包括但不限于?資源需求,?節(jié)點(diǎn)篩選器,?pod 親和性和互斥性, 以及?污點(diǎn)和容忍度.

以下插件支持動態(tài)分配的?WaitForFirstConsumer?模式:

  • AWSElasticBlockStore
  • GCEPersistentDisk
  • AzureDisk

以下插件支持預(yù)創(chuàng)建綁定 PersistentVolume 的?WaitForFirstConsumer?模式:

  • All of the above
  • Local

允許的拓?fù)浣Y(jié)構(gòu)

FEATURE STATE:?Kubernetes v1.12?beta

注意:?這個(gè)特性需要開啟?VolumeScheduling?特性開關(guān)。

當(dāng)集群操作人員使用了?WaitForFirstConsumer?的卷綁定模式,在大部分情況下就沒有必要將配置限制為特定的拓?fù)浣Y(jié)構(gòu)。 然而,如果還有需要的話,可以使用?allowedTopologies。

這個(gè)例子描述了如何將分配卷限的拓?fù)湎拗圃谔囟ǖ膮^(qū)域,在使用時(shí)應(yīng)該根據(jù)插件支持情況替換?zone?和?zones?參數(shù)。

kind: StorageClass apiVersion: storage.k8s.io/v1 metadata:name: standard provisioner: kubernetes.io/gce-pd parameters:type: pd-standard volumeBindingMode: WaitForFirstConsumer allowedTopologies: - matchLabelExpressions:- key: failure-domain.beta.kubernetes.io/zonevalues:- us-central1-a- us-central1-b

參數(shù)

Storage class 具有描述屬于卷的參數(shù)。取決于分配器,可以接受不同的參數(shù)。 例如,參數(shù) type 的值 io1 和參數(shù) iopsPerGB 特定于 EBS PV。當(dāng)參數(shù)被省略時(shí),會使用默認(rèn)值。

AWS EBS

kind: StorageClass apiVersion: storage.k8s.io/v1 metadata:name: slow provisioner: kubernetes.io/aws-ebs parameters:type: io1iopsPerGB: "10"fsType: ext4
  • type:io1,gp2,sc1,st1。詳細(xì)信息參見?AWS 文檔。默認(rèn)值:gp2。
  • zone(棄用):AWS 區(qū)域。如果沒有指定?zone?和?zones,通常卷會在 Kubernetes 集群節(jié)點(diǎn)所在的活動區(qū)域中輪詢調(diào)度分配。zone?和?zones?參數(shù)不能同時(shí)使用。
  • zones(棄用):以逗號分隔的 AWS 區(qū)域列表。如果沒有指定?zone?和?zones,通常卷會在 Kubernetes 集群節(jié)點(diǎn)所在的活動區(qū)域中輪詢調(diào)度分配。zone和zones參數(shù)不能同時(shí)使用。
  • iopsPerGB:只適用于?io1?卷。每 GiB 每秒 I/O 操作。AWS 卷插件將其與請求卷的大小相乘以計(jì)算 IOPS 的容量,并將其限制在 20 000 IOPS(AWS 支持的最高值,請參閱?AWS 文檔。 這里需要輸入一個(gè)字符串,即?"10",而不是?10。
  • fsType:受 Kubernetes 支持的文件類型。默認(rèn)值:"ext4"。
  • encrypted:指定 EBS 卷是否應(yīng)該被加密。合法值為?"true"?或者?"false"。這里需要輸入字符串,即?"true", 而非?true。
  • kmsKeyId:可選。加密卷時(shí)使用密鑰的完整 Amazon 資源名稱。如果沒有提供,但?encrypted?值為 true,AWS 生成一個(gè)密鑰。關(guān)于有效的 ARN 值,請參閱 AWS 文檔。?注意:?zone?和?zones?已被棄用并被?允許的拓?fù)浣Y(jié)構(gòu)?取代。

GCE PD

kind: StorageClass apiVersion: storage.k8s.io/v1 metadata:name: slow provisioner: kubernetes.io/gce-pd parameters:type: pd-standardreplication-type: none
  • type:pd-standard?或者?pd-ssd。默認(rèn):pd-standard
  • zone(棄用):GCE 區(qū)域。如果沒有指定?zone?和?zones,通常卷會在 Kubernetes 集群節(jié)點(diǎn)所在的活動區(qū)域中輪詢調(diào)度分配。zone?和?zones?參數(shù)不能同時(shí)使用。
  • zones(棄用):逗號分隔的 GCE 區(qū)域列表。如果沒有指定?zone?和?zones,通常卷會在 Kubernetes 集群節(jié)點(diǎn)所在的活動區(qū)域中輪詢調(diào)度(round-robin)分配。zone?和?zones?參數(shù)不能同時(shí)使用。
  • replication-type:none?或者?regional-pd。默認(rèn)值:none。

如果?replication-type?設(shè)置為?none,會分配一個(gè)常規(guī)(當(dāng)前區(qū)域內(nèi)的)持久化磁盤。

如果?replication-type?設(shè)置為?regional-pd,會分配一個(gè)?區(qū)域性持久化磁盤(Regional Persistent Disk)。在這種情況下,用戶必須使用?zones?而非?zone?來指定期望的復(fù)制區(qū)域(zone)。如果指定來兩個(gè)特定的區(qū)域,區(qū)域性持久化磁盤會在這兩個(gè)區(qū)域里分配。如果指定了多于兩個(gè)的區(qū)域,Kubernetes 會選擇其中任意兩個(gè)區(qū)域。如果省略了?zones?參數(shù),Kubernetes 會在集群管理的區(qū)域中任意選擇。

注意:?zone?和?zones?已被棄用并被?allowedTopologies?取代。

Glusterfs

apiVersion: storage.k8s.io/v1 kind: StorageClass metadata:name: slow provisioner: kubernetes.io/glusterfs parameters:resturl: "http://127.0.0.1:8081"clusterid: "630372ccdc720a92c681fb928f27b53f"restauthenabled: "true"restuser: "admin"secretNamespace: "default"secretName: "heketi-secret"gidMin: "40000"gidMax: "50000"volumetype: "replicate:3"
  • resturl:分配 gluster 卷的需求的 Gluster REST 服務(wù)/Heketi 服務(wù) url。 通用格式應(yīng)該是?IPaddress:Port,這是 GlusterFS 動態(tài)分配器的必需參數(shù)。 如果 Heketi 服務(wù)在 openshift/kubernetes 中安裝并暴露為可路由服務(wù),則可以使用類似于?http://heketi-storage-project.cloudapps.mystorage.com?的格式,其中 fqdn 是可解析的 heketi 服務(wù)網(wǎng)址。
  • restauthenabled:Gluster REST 服務(wù)身份驗(yàn)證布爾值,用于啟用對 REST 服務(wù)器的身份驗(yàn)證。如果此值為 ‘true’,則必須填寫?restuser?和?restuserkey?或?secretNamespace?+?secretName。此選項(xiàng)已棄用,當(dāng)在指定?restuser,restuserkey,secretName?或?secretNamespace?時(shí),身份驗(yàn)證被啟用。
  • restuser:在 Gluster 可信池中有權(quán)創(chuàng)建卷的 Gluster REST服務(wù)/Heketi 用戶。
  • restuserkey:Gluster REST 服務(wù)/Heketi 用戶的密碼將被用于對 REST 服務(wù)器進(jìn)行身份驗(yàn)證。此參數(shù)已棄用,取而代之的是?secretNamespace?+?secretName。 <!–
  • secretNamespace,?secretName?: Identification of Secret instance that contains user password to use when talking to Gluster REST service. These parameters are optional, empty password will be used when both?secretNamespace?and?secretName?are omitted. The provided secret must have type?"kubernetes.io/glusterfs", e.g. created in this way:

    kubectl create secret generic heketi-secret \--type="kubernetes.io/glusterfs" --from-literal=key='opensesame' \--namespace=default

    Example of a secret can be found in?glusterfs-provisioning-secret.yaml. –>

  • secretNamespace,secretName:Secret 實(shí)例的標(biāo)識,包含與 Gluster REST 服務(wù)交互時(shí)使用的用戶密碼。 這些參數(shù)是可選的,secretNamespace?和?secretName?都省略時(shí)使用空密碼。所提供的 Secret 必須將類型設(shè)置為 “kubernetes.io/glusterfs”,例如以這種方式創(chuàng)建:

    kubectl create secret generic heketi-secret \--type="kubernetes.io/glusterfs" --from-literal=key='opensesame' \--namespace=default

    secret 的例子可以在?glusterfs-provisioning-secret.yaml?中找到。 <!–

  • clusterid:?630372ccdc720a92c681fb928f27b53f?is the ID of the cluster which will be used by Heketi when provisioning the volume. It can also be a list of clusterids, for example:?"8452344e2becec931ece4e33c4674e4e,42982310de6c63381718ccfa6d8cf397". This is an optional parameter.

  • gidMin,?gidMax?: The minimum and maximum value of GID range for the storage class. A unique value (GID) in this range ( gidMin-gidMax ) will be used for dynamically provisioned volumes. These are optional values. If not specified, the volume will be provisioned with a value between 2000-2147483647 which are defaults for gidMin and gidMax respectively. –>

  • clusterid:630372ccdc720a92c681fb928f27b53f?是集群的 ID,當(dāng)分配卷時(shí),Heketi 將會使用這個(gè)文件。它也可以是一個(gè) clusterid 列表,例如:?"8452344e2becec931ece4e33c4674e4e,42982310de6c63381718ccfa6d8cf397"。這個(gè)是可選參數(shù)。

  • gidMin,gidMax:storage class GID 范圍的最小值和最大值。在此范圍(gidMin-gidMax)內(nèi)的唯一值(GID)將用于動態(tài)分配卷。這些是可選的值。如果不指定,卷將被分配一個(gè) 2000-2147483647 之間的值,這是 gidMin 和 gidMax 的默認(rèn)值。 <!–

  • volumetype?: The volume type and its parameters can be configured with this optional value. If the volume type is not mentioned, it’s up to the provisioner to decide the volume type.

    For example:

    • Replica volume:?volumetype: replicate:3?where ‘3’ is replica count.
    • Disperse/EC volume:?volumetype: disperse:4:2?where ‘4’ is data and ‘2’ is the redundancy count.
    • Distribute volume:?volumetype: none

    For available volume types and administration options, refer to the?Administration Guide.

    For further reference information, see?How to configure Heketi.

    When persistent volumes are dynamically provisioned, the Gluster plugin automatically creates an endpoint and a headless service in the name?gluster-dynamic-<claimname>. The dynamic endpoint and service are automatically deleted when the persistent volume claim is deleted. –>

  • volumetype:卷的類型及其參數(shù)可以用這個(gè)可選值進(jìn)行配置。如果未聲明卷類型,則由分配器決定卷的類型。

    例如: ‘Replica volume’:?volumetype: replicate:3?其中 ‘3’ 是 replica 數(shù)量. ‘Disperse/EC volume’:?volumetype: disperse:4:2?其中 ‘4’ 是數(shù)據(jù),’2’ 是冗余數(shù)量. ‘Distribute volume’:?volumetype: none

    有關(guān)可用的卷類型和管理選項(xiàng),請參閱?管理指南。

    更多相關(guān)的參考信息,請參閱?如何配置 Heketi。

    當(dāng)動態(tài)分配持久卷時(shí),Gluster 插件自動創(chuàng)建名為?gluster-dynamic-<claimname>?的端點(diǎn)和 headless service。在 PVC 被刪除時(shí)動態(tài)端點(diǎn)和 headless service 會自動被刪除。

OpenStack Cinder

kind: StorageClass apiVersion: storage.k8s.io/v1 metadata:name: gold provisioner: kubernetes.io/cinder parameters:availability: nova
  • availability:可用區(qū)域。如果沒有指定,通常卷會在 Kubernetes 集群節(jié)點(diǎn)所在的活動區(qū)域中輪詢調(diào)度分配。
Note: FEATURE STATE:?Kubernetes 1.11?廢棄

OpenStack 的內(nèi)部驅(qū)動程序已經(jīng)被棄用。請使用?OpenStack 的外部驅(qū)動程序。

vSphere

  • 使用用戶指定的磁盤格式創(chuàng)建一個(gè) StorageClass。

    kind: StorageClass apiVersion: storage.k8s.io/v1 metadata:name: fast provisioner: kubernetes.io/vsphere-volume parameters:diskformat: zeroedthick
  • `diskformat`: `thin`, `zeroedthick` 和 `eagerzeroedthick`。默認(rèn)值: `"thin"`。
  • 在用戶指定的數(shù)據(jù)存儲上創(chuàng)建磁盤格式的 StorageClass。

    kind: StorageClass apiVersion: storage.k8s.io/v1 metadata:name: fast provisioner: kubernetes.io/vsphere-volume parameters:diskformat: zeroedthickdatastore: VSANDatastore
  • `datastore`:用戶也可以在 StorageClass 中指定數(shù)據(jù)存儲。卷將在 storage class 中指定的數(shù)據(jù)存儲上創(chuàng)建,在這種情況下是 `VSANDatastore`。該字段是可選的。如果未指定數(shù)據(jù)存儲,則將在用于初始化 vSphere Cloud Provider 的 vSphere 配置文件中指定的數(shù)據(jù)存儲上創(chuàng)建該卷。
  • Kubernetes 中的存儲策略管理
  • * 使用現(xiàn)有的 vCenter SPBM 策略vSphere 用于存儲管理的最重要特性之一是基于策略的管理。基于存儲策略的管理(SPBM)是一個(gè)存儲策略框架,提供單一的統(tǒng)一控制平面的跨越廣泛的數(shù)據(jù)服務(wù)和存儲解決方案。 SPBM 使能 vSphere 管理員克服先期的存儲配置挑戰(zhàn),如容量規(guī)劃,差異化服務(wù)等級和管理容量空間。SPBM 策略可以在 StorageClass 中使用 `storagePolicyName` 參數(shù)聲明。 * Kubernetes 內(nèi)的 Virtual SAN 策略支持Vsphere Infrastructure(VI)管理員將能夠在動態(tài)卷配置期間指定自定義 Virtual SAN 存儲功能。您現(xiàn)在可以定義存儲需求,例如性能和可用性,當(dāng)動態(tài)卷供分配時(shí)會以存儲功能的形式提供。存儲功能需求會轉(zhuǎn)換為 Virtual SAN 策略,然后當(dāng) persistent volume(虛擬磁盤)在創(chuàng)建時(shí),會將其推送到 Virtual SAN 層。虛擬磁盤分布在 Virtual SAN 數(shù)據(jù)存儲中以滿足要求。更多有關(guān) persistent volume 管理的存儲策略的詳細(xì)信息,您可以參考 [基于存儲策略的動態(tài)分配卷管理](https://vmware.github.io/vsphere-storage-for-kubernetes/documentation/policy-based-mgmt.html)。

    有幾個(gè)?vSphere 例子?供您在 Kubernetes for vSphere 中嘗試進(jìn)行 persistent volume 管理。

    Ceph RBD

    kind: StorageClass apiVersion: storage.k8s.io/v1 metadata:name: fast provisioner: kubernetes.io/rbd parameters:monitors: 10.16.153.105:6789adminId: kubeadminSecretName: ceph-secretadminSecretNamespace: kube-systempool: kubeuserId: kubeuserSecretName: ceph-secret-useruserSecretNamespace: defaultfsType: ext4imageFormat: "2"imageFeatures: "layering"
    • monitors:Ceph monitor,逗號分隔。該參數(shù)是必需的。
    • adminId:Ceph 客戶端 ID,用于在池 ceph 池中創(chuàng)建映像。默認(rèn)是 “admin”。
    • adminSecret:adminId?的 Secret 名稱。該參數(shù)是必需的。 提供的 secret 必須有值為 “kubernetes.io/rbd” 的 type 參數(shù)。
    • adminSecretNamespace:adminSecret?的命名空間。默認(rèn)是 “default”。
    • pool: Ceph RBD 池. 默認(rèn)是 “rbd”。
    • userId:Ceph 客戶端 ID,用于映射 RBD 鏡像。默認(rèn)與?adminId?相同。 <!–
    • userSecretName: The name of Ceph Secret for?userId?to map RBD image. It must exist in the same namespace as PVCs. This parameter is required. The provided secret must have type “kubernetes.io/rbd”, e.g. created in this way:

      kubectl create secret generic ceph-secret --type="kubernetes.io/rbd" \--from-literal=key='QVFEQ1pMdFhPUnQrSmhBQUFYaERWNHJsZ3BsMmNjcDR6RFZST0E9PQ==' \--namespace=kube-system

      –>

    • userSecretName:用于映射 RBD 鏡像的?userId?的 Ceph Secret 的名字。 它必須與 PVC 存在于相同的 namespace 中。該參數(shù)是必需的。 提供的 secret 必須具有值為 “kubernetes.io/rbd” 的 type 參數(shù),例如以這樣的方式創(chuàng)建:

      kubectl create secret generic ceph-secret --type="kubernetes.io/rbd" \--from-literal=key='QVFEQ1pMdFhPUnQrSmhBQUFYaERWNHJsZ3BsMmNjcDR6RFZST0E9PQ==' \--namespace=kube-system
    • userSecretNamespace:userSecretName?的命名空間。
    • fsType:Kubernetes 支持的 fsType。默認(rèn):"ext4"。
    • imageFormat:Ceph RBD 鏡像格式,”1” 或者 “2”。默認(rèn)值是 “1”。
    • imageFeatures:這個(gè)參數(shù)是可選的,只能在你將?imageFormat?設(shè)置為 “2” 才使用。 目前支持的功能只是?layering。默認(rèn)是 ““,沒有功能打開。

    Quobyte

    apiVersion: storage.k8s.io/v1 kind: StorageClass metadata:name: slow provisioner: kubernetes.io/quobyte parameters:quobyteAPIServer: "http://138.68.74.142:7860"registry: "138.68.74.142:7861"adminSecretName: "quobyte-admin-secret"adminSecretNamespace: "kube-system"user: "root"group: "root"quobyteConfig: "BASE"quobyteTenant: "DEFAULT"
    • quobyteAPIServer:Quobyte API 服務(wù)器的格式是?"http(s)://api-server:7860"
    • registry:用于掛載卷的 Quobyte registry。你可以指定 registry 為?<host>:<port>?或者如果你想指定多個(gè) registry,你只需要在他們之間添加逗號,例如?<host1>:<port>,<host2>:<port>,<host3>:<port>。 主機(jī)可以是一個(gè) IP 地址,或者如果您有正在運(yùn)行的 DNS,您也可以提供 DNS 名稱。
    • adminSecretNamespace:adminSecretName的 namespace。 默認(rèn)值是 “default”。 <!–
    • adminSecretName: secret that holds information about the Quobyte user and the password to authenticate against the API server. The provided secret must have type “kubernetes.io/quobyte”, e.g. created in this way:

      kubectl create secret generic quobyte-admin-secret \--type="kubernetes.io/quobyte" --from-literal=key='opensesame' \--namespace=kube-system

    –> *?adminSecretName:保存關(guān)于 Quobyte 用戶和密碼的 secret,用于對 API 服務(wù)器進(jìn)行身份驗(yàn)證。 提供的 secret 必須有值為 “kubernetes.io/quobyte” 的 type 參數(shù),例如以這種方式創(chuàng)建:

    ```shell kubectl create secret generic quobyte-admin-secret \--type="kubernetes.io/quobyte" --from-literal=key='opensesame' \--namespace=kube-system ```
    • user:對這個(gè)用戶映射的所有訪問權(quán)限。默認(rèn)是 “root”。
    • group:對這個(gè)組映射的所有訪問權(quán)限。默認(rèn)是 “nfsnobody”。
    • quobyteConfig:使用指定的配置來創(chuàng)建卷。您可以創(chuàng)建一個(gè)新的配置,或者,可以修改 Web console 或 quobyte CLI 中現(xiàn)有的配置。默認(rèn)是 “BASE”。
    • quobyteTenant:使用指定的租戶 ID 創(chuàng)建/刪除卷。這個(gè) Quobyte 租戶必須已經(jīng)于 Quobyte。 默認(rèn)是 “DEFAULT”。

    Azure 磁盤

    Azure Unmanaged Disk Storage Class(非托管磁盤存儲類)

    kind: StorageClass apiVersion: storage.k8s.io/v1 metadata:name: slow provisioner: kubernetes.io/azure-disk parameters:skuName: Standard_LRSlocation: eastusstorageAccount: azure_storage_account_name
    • skuName:Azure 存儲帳戶 Sku 層。默認(rèn)為空。
    • location:Azure 存儲帳戶位置。默認(rèn)為空。
    • storageAccount:Azure 存儲帳戶名稱。如果提供存儲帳戶,它必須位于與集群相同的資源組中,并且?location?是被忽略的。如果未提供存儲帳戶,則會在與群集相同的資源組中創(chuàng)建新的存儲帳戶。

    新的 Azure 磁盤 Storage Class(從 v1.7.2 開始)

    kind: StorageClass apiVersion: storage.k8s.io/v1 metadata:name: slow provisioner: kubernetes.io/azure-disk parameters:storageaccounttype: Standard_LRSkind: Shared
    • storageaccounttype:Azure 存儲帳戶 Sku 層。默認(rèn)為空。
    • kind:可能的值是?shared(默認(rèn))、dedicated?和?managed。 當(dāng)?kind?的值是?shared?時(shí),所有非托管磁盤都在集群的同一個(gè)資源組中的幾個(gè)共享存儲帳戶中創(chuàng)建。 當(dāng)?kind的值是?dedicated?時(shí),將為在集群的同一個(gè)資源組中新的非托管磁盤創(chuàng)建新的專用存儲帳戶。
    • Premium VM 可以同時(shí)添加 Standard_LRS 和 Premium_LRS 磁盤,而 Standard 虛擬機(jī)只能添加 Standard_LRS 磁盤。
    • 托管虛擬機(jī)只能連接托管磁盤,非托管虛擬機(jī)只能連接非托管磁盤。

    Azure 文件

    kind: StorageClass apiVersion: storage.k8s.io/v1 metadata:name: azurefile provisioner: kubernetes.io/azure-file parameters:skuName: Standard_LRSlocation: eastusstorageAccount: azure_storage_account_name
    • skuName:Azure 存儲帳戶 Sku 層。默認(rèn)為空。
    • location:Azure 存儲帳戶位置。默認(rèn)為空。
    • storageAccount:Azure 存儲帳戶名稱。默認(rèn)為空。 如果不提供存儲帳戶,會搜索所有與資源相關(guān)的存儲帳戶,以找到一個(gè)匹配?skuName?和?location?的賬號。 如果提供存儲帳戶,它必須存在于與集群相同的資源組中,skuName?和?location?會被忽略。

    在分配期間,為掛載憑證創(chuàng)建一個(gè) secret。如果集群同時(shí)啟用了?RBAC?和?Controller Roles, 為?system:controller:persistent-volume-binder?的 clusterrole 添加?secret?資源的?create?權(quán)限。

    Portworx 卷

    kind: StorageClass apiVersion: storage.k8s.io/v1 metadata:name: portworx-io-priority-high provisioner: kubernetes.io/portworx-volume parameters:repl: "1"snap_interval: "70"io_priority: "high"
    • fs:選擇的文件系統(tǒng):[none/xfs/ext4](默認(rèn):ext4)。
    • block_size:以 Kbytes 為單位的塊大小(默認(rèn)值:32)。
    • repl:同步副本數(shù)量,以復(fù)制因子 [1..3](默認(rèn)值:1)的形式提供。 這里需要填寫字符串,即,"1"?而不是?1。
    • io_priority:決定是否從更高性能或者較低優(yōu)先級存儲創(chuàng)建卷 [high/medium/low](默認(rèn)值:low)。
    • snap_interval:觸發(fā)快照的時(shí)鐘/時(shí)間間隔(分鐘)。快照是基于與先前快照的增量變化,0 是禁用快照(默認(rèn):0)。 這里需要填寫字符串,即,是?"70"?而不是?70。
    • aggregation_level:指定卷分配到的塊數(shù)量,0 表示一個(gè)非聚合卷(默認(rèn):0)。 這里需要填寫字符串,即,是?"0"?而不是?0。
    • ephemeral:指定卷在卸載后進(jìn)行清理還是持久化。?emptyDir?的使用場景可以將這個(gè)值設(shè)置為 true ,?persistent volumes?的使用場景可以將這個(gè)值設(shè)置為 false(例如 Cassandra 這樣的數(shù)據(jù)庫)[true/false](默認(rèn)為?false)。這里需要填寫字符串,即,是?"true"?而不是?true。

    ScaleIO

    kind: StorageClass apiVersion: storage.k8s.io/v1 metadata:name: slow provisioner: kubernetes.io/scaleio parameters:gateway: https://192.168.99.200:443/apisystem: scaleioprotectionDomain: pd0storagePool: sp1storageMode: ThinProvisionedsecretRef: sio-secretreadOnly: falsefsType: xfs
    • provisioner:屬性設(shè)置為?kubernetes.io/scaleio
    • gateway?到 ScaleIO API 網(wǎng)關(guān)的地址(必需)
    • system:ScaleIO 系統(tǒng)的名稱(必需)
    • protectionDomain:ScaleIO 保護(hù)域的名稱(必需)
    • storagePool:卷存儲池的名稱(必需)
    • storageMode:存儲提供模式:ThinProvisioned(默認(rèn))或?ThickProvisioned
    • secretRef:對已配置的 Secret 對象的引用(必需)
    • readOnly:指定掛載卷的訪問模式(默認(rèn)為 false)
    • fsType:卷的文件系統(tǒng)(默認(rèn)是 ext4)

    ScaleIO Kubernetes 卷插件需要配置一個(gè) Secret 對象。 secret 必須用?kubernetes.io/scaleio?類型創(chuàng)建,并與引用它的 PVC 所屬的名稱空間使用相同的值 如下面的命令所示:

    kubectl create secret generic sio-secret --type="kubernetes.io/scaleio" \ --from-literal=username=sioadmin --from-literal=password=d2NABDNjMA== \ --namespace=default

    StorageOS

    kind: StorageClass apiVersion: storage.k8s.io/v1 metadata:name: fast provisioner: kubernetes.io/storageos parameters:pool: defaultdescription: Kubernetes volumefsType: ext4adminSecretNamespace: defaultadminSecretName: storageos-secret
    • pool:分配卷的 StorageOS 分布式容量池的名稱。如果未指定,則使用通常存在的?default?池。
    • description:分配給動態(tài)創(chuàng)建的卷的描述。所有卷描述對于 storage class 都是相同的, 但不同的 storage class 可以使用不同的描述,以區(qū)分不同的使用場景。 默認(rèn)為?Kubernetas volume。
    • fsType:請求的默認(rèn)文件系統(tǒng)類型。請注意,在 StorageOS 中用戶定義的規(guī)則可以覆蓋此值。默認(rèn)為?ext4
    • adminSecretNamespace:API 配置 secret 所在的命名空間。如果設(shè)置了 adminSecretName,則是必需的。
    • adminSecretName:用于獲取 StorageOS API 憑證的 secret 名稱。如果未指定,則將嘗試默認(rèn)值。

    StorageOS Kubernetes 卷插件可以使 Secret 對象來指定用于訪問 StorageOS API 的端點(diǎn)和憑據(jù)。 只有當(dāng)默認(rèn)值已被更改時(shí),這才是必須的。 secret 必須使用?kubernetes.io/storageos?類型創(chuàng)建,如以下命令:

    kubectl create secret generic storageos-secret \ --type="kubernetes.io/storageos" \ --from-literal=apiAddress=tcp://localhost:5705 \ --from-literal=apiUsername=storageos \ --from-literal=apiPassword=storageos \ --namespace=default

    用于動態(tài)分配卷的 Secret 可以在任何名稱空間中創(chuàng)建,并通過?adminSecretNamespace?參數(shù)引用。 預(yù)先配置的卷使用的 Secret 必須在與引用它的 PVC 在相同的名稱空間中。

    本地

    FEATURE STATE:?Kubernetes v1.10?beta kind: StorageClass apiVersion: storage.k8s.io/v1 metadata:name: local-storage provisioner: kubernetes.io/no-provisioner volumeBindingMode: WaitForFirstConsumer

    本地卷還不支持動態(tài)分配,然而還是需要創(chuàng)建 StorageClass 以延遲卷綁定,直到完成 pod 的調(diào)度。這是由?WaitForFirstConsumer?卷綁定模式指定的。

    延遲卷綁定使得調(diào)度器在為 PersistentVolumeClaim 選擇一個(gè)合適的 PersistentVolume 時(shí)能考慮到所有 pod 的調(diào)度限制。

    轉(zhuǎn)載于:https://www.cnblogs.com/liyupi/p/11357596.html

    總結(jié)

    以上是生活随笔為你收集整理的k8s Storage Classes的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。