日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
創(chuàng)新互聯(lián)kubernetes教程:Kubernetes存儲(chǔ)類(lèi)

介紹

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

StorageClass 資源

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

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

管理員可以為沒(méi)有申請(qǐng)綁定到特定 StorageClass 的 PVC 指定一個(gè)默認(rèn)的存儲(chǔ)類(lèi)。

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

存儲(chǔ)制備器 

每個(gè) StorageClass 都有一個(gè)制備器(Provisioner),用來(lái)決定使用哪個(gè)卷插件制備 PV。 該字段必須指定。

卷插件 內(nèi)置制備器 配置例子
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 - NFS
RBD Ceph RBD
VsphereVolume vSphere
PortworxVolume Portworx Volume
ScaleIO ScaleIO
StorageOS StorageOS
Local - Local

你不限于指定此處列出的 "內(nèi)置" 制備器(其名稱(chēng)前綴為 "kubernetes.io" 并打包在 Kubernetes 中)。 你還可以運(yùn)行和指定外部制備器,這些獨(dú)立的程序遵循由 Kubernetes 定義的 規(guī)范。 外部供應(yīng)商的作者完全可以自由決定他們的代碼保存于何處、打包方式、運(yùn)行方式、使用的插件(包括 Flex)等。 代碼倉(cāng)庫(kù) kubernetes-sigs/sig-storage-lib-external-provisioner 包含一個(gè)用于為外部制備器編寫(xiě)功能實(shí)現(xiàn)的類(lèi)庫(kù)。你可以訪問(wèn)代碼倉(cāng)庫(kù)  kubernetes-sigs/sig-storage-lib-external-provisioner 了解外部驅(qū)動(dòng)列表。

例如,NFS 沒(méi)有內(nèi)部制備器,但可以使用外部制備器。 也有第三方存儲(chǔ)供應(yīng)商提供自己的外部制備器。

回收策略

由 StorageClass 動(dòng)態(tài)創(chuàng)建的 PersistentVolume 會(huì)在類(lèi)的 ?reclaimPolicy ?字段中指定回收策略,可以是 ?Delete ?或者 ?Retain?。如果 StorageClass 對(duì)象被創(chuàng)建時(shí)沒(méi)有指定 ?reclaimPolicy?,它將默認(rèn)為 ?Delete?。

通過(guò) StorageClass 手動(dòng)創(chuàng)建并管理的 PersistentVolume 會(huì)使用它們被創(chuàng)建時(shí)指定的回收政策。

允許卷擴(kuò)展

FEATURE STATE: Kubernetes v1.11 [beta]

PersistentVolume 可以配置為可擴(kuò)展。將此功能設(shè)置為 ?true ?時(shí),允許用戶通過(guò)編輯相應(yīng)的 PVC 對(duì)象來(lái)調(diào)整卷大小。

當(dāng)下層 StorageClass 的 ?allowVolumeExpansion ?字段設(shè)置為 true 時(shí),以下類(lèi)型的卷支持卷擴(kuò)展。

卷類(lèi)型 Kubernetes 版本要求
gcePersistentDisk 1.11
awsElasticBlockStore 1.11
Cinder 1.11
glusterfs 1.11
rbd 1.11
Azure File 1.11
Azure Disk 1.11
Portworx 1.11
FlexVolume 1.13
CSI 1.14 (alpha), 1.16 (beta)

此功能僅可用于擴(kuò)容卷,不能用于縮小卷。

掛載選項(xiàng)

由 StorageClass 動(dòng)態(tài)創(chuàng)建的 PersistentVolume 將使用類(lèi)中 ?mountOptions ?字段指定的掛載選項(xiàng)。

如果卷插件不支持掛載選項(xiàng),卻指定了掛載選項(xiàng),則制備操作會(huì)失敗。 掛載選項(xiàng)在 StorageClass 和 PV 上都不會(huì)做驗(yàn)證,如果其中一個(gè)掛載選項(xiàng)無(wú)效,那么這個(gè) PV 掛載操作就會(huì)失敗。

卷綁定模式

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

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

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

以下插件支持動(dòng)態(tài)供應(yīng)的 ?WaitForFirstConsumer ?模式:

  • AWSElasticBlockStore
  • GCEPersistentDisk
  • AzureDisk

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

  • 上述全部
  • Local

FEATURE STATE: Kubernetes v1.17 [stable]

動(dòng)態(tài)配置和預(yù)先創(chuàng)建的 PV 也支持 CSI卷, 但是你需要查看特定 CSI 驅(qū)動(dòng)程序的文檔以查看其支持的拓?fù)滏I名和例子。

如果你選擇使用 ?
WaitForFirstConsumer?,請(qǐng)不要在 Pod 規(guī)約中使用 ?
nodeName ?來(lái)指定節(jié)點(diǎn)親和性。 如果在這種情況下使用 ?
nodeName?,Pod 將會(huì)繞過(guò)調(diào)度程序,PVC 將停留在 ?
pending ?狀態(tài)。

相反,在這種情況下,你可以使用節(jié)點(diǎn)選擇器作為主機(jī)名,如下所示

apiVersion: v1
kind: Pod
metadata:
  name: task-pv-pod
spec:
  nodeSelector:
    kubernetes.io/hostname: kube-01
  volumes:
    - name: task-pv-storage
      persistentVolumeClaim:
        claimName: task-pv-claim
  containers:
    - name: task-pv-container
      image: nginx
      ports:
        - containerPort: 80
          name: "http-server"
      volumeMounts:
        - mountPath: "/usr/share/nginx/html"
          name: task-pv-storage

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

FEATURE STATE: Kubernetes v1.12 [beta]

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

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

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

參數(shù)

Storage Classes 的參數(shù)描述了存儲(chǔ)類(lèi)的卷。取決于制備器,可以接受不同的參數(shù)。 例如,參數(shù) type 的值 io1 和參數(shù) iopsPerGB 特定于 EBS PV。 當(dāng)參數(shù)被省略時(shí),會(huì)使用默認(rèn)值。

一個(gè) StorageClass 最多可以定義 512 個(gè)參數(shù)。這些參數(shù)對(duì)象的總長(zhǎng)度不能 超過(guò) 256 KiB, 包括參數(shù)的鍵和值。

AWS EBS

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

?zone ?和 ?zones ?已被棄用并被 允許的拓?fù)浣Y(jié)構(gòu) 取代。

GCE PD 

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: slow
provisioner: kubernetes.io/gce-pd
parameters:
  type: pd-standard
   fstype: ext4
  replication-type: none
  • ?type?:?pd-standard? 或者 ?pd-ssd?。默認(rèn):?pd-standard ?
  • ?zone?(棄用):GCE 區(qū)域。如果沒(méi)有指定 ?zone ?和 ?zones?,通常 卷會(huì)在 Kubernetes 集群節(jié)點(diǎn)所在的活動(dòng)區(qū)域中輪詢(xún)調(diào)度分配。 ?zone ?和 ?zones ?參數(shù)不能同時(shí)使用。
  • ?zones?(棄用):逗號(hào)分隔的 GCE 區(qū)域列表。如果沒(méi)有指定 ?zone ?和 ?zones?, 通常卷會(huì)在 Kubernetes 集群節(jié)點(diǎn)所在的活動(dòng)區(qū)域中輪詢(xún)調(diào)度(round-robin)分配。 ?zone ?和 ?zones ?參數(shù)不能同時(shí)使用。
  • ?fstype?: ?ext4 ?或 ?xfs?。 默認(rèn): ?ext4?。宿主機(jī)操作系統(tǒng)必須支持所定義的文件系統(tǒng)類(lèi)型。
  • ?replication-type?:?none ?或者 ?regional-pd?。默認(rèn)值:?none?。

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

如果 ?replication-type? 設(shè)置為 ?regional-pd?,會(huì)制備一個(gè) 區(qū)域性持久化磁盤(pán)(Regional Persistent Disk)。

強(qiáng)烈建議設(shè)置 ?volumeBindingMode: WaitForFirstConsumer?,這樣設(shè)置后, 當(dāng)你創(chuàng)建一個(gè) Pod,它使用的 PersistentVolumeClaim 使用了這個(gè) StorageClass, 區(qū)域性持久化磁盤(pán)會(huì)在兩個(gè)區(qū)域里制備。 其中一個(gè)區(qū)域是 Pod 所在區(qū)域。 另一個(gè)區(qū)域是會(huì)在集群管理的區(qū)域中任意選擇。磁盤(pán)區(qū)域可以通過(guò) ?allowedTopologies ?加以限制。

?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 動(dòng)態(tài)制備器的必需參數(shù)。 如果 Heketi 服務(wù)在 OpenShift/kubernetes 中安裝并暴露為可路由服務(wù),則可以使用類(lèi)似于 ?http://heketi-storage-project.cloudapps.mystorage.com? 的格式,其中 fqdn 是可解析的 heketi 服務(wù)網(wǎng)址。
  • ?restauthenabled?:Gluster REST 服務(wù)身份驗(yàn)證布爾值,用于啟用對(duì) REST 服務(wù)器的身份驗(yàn)證。 如果此值為 'true',則必須填寫(xiě) ?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 用戶的密碼將被用于對(duì) REST 服務(wù)器進(jìn)行身份驗(yàn)證。 此參數(shù)已棄用,取而代之的是 ?secretNamespace ?+ ?secretName?。
  • ?secretNamespace?,?secretName?:Secret 實(shí)例的標(biāo)識(shí),包含與 Gluster REST 服務(wù)交互時(shí)使用的用戶密碼。 這些參數(shù)是可選的,?secretNamespace ?和 ?secretName ?都省略時(shí)使用空密碼。 所提供的 Secret 必須將類(lèi)型設(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? 是集群的 ID,當(dāng)制備卷時(shí), Heketi 將會(huì)使用這個(gè)文件。它也可以是一個(gè) clusterid 列表,例如: ?"8452344e2becec931ece4e33c4674e4e,42982310de6c63381718ccfa6d8cf397"?。這個(gè)是可選參數(shù)。
  • ?gidMin?,?gidMax?:StorageClass GID 范圍的最小值和最大值。 在此范圍(gidMin-gidMax)內(nèi)的唯一值(GID)將用于動(dòng)態(tài)制備卷。這些是可選的值。 如果不指定,所制備的卷為一個(gè) 2000-2147483647 之間的值,這是 gidMin 和 gidMax 的默認(rèn)值。
  • ?volumetype?:卷的類(lèi)型及其參數(shù)可以用這個(gè)可選值進(jìn)行配置。如果未聲明卷類(lèi)型,則 由制備器決定卷的類(lèi)型。 例如:
    • '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)可用的卷類(lèi)型和管理選項(xiàng),請(qǐng)參閱 管理指南。

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

    當(dāng)動(dòng)態(tài)制備持久卷時(shí),Gluster 插件自動(dòng)創(chuàng)建名為 ?gluster-dynamic-? 的端點(diǎn)和無(wú)頭服務(wù)。在 PVC 被刪除時(shí)動(dòng)態(tài)端點(diǎn)和無(wú)頭服務(wù)會(huì)自動(dòng)被刪除。

NFS

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: example-nfs
provisioner: cdxwcx.com/external-nfs
parameters:
  server: nfs-server.cdxwcx.com
  path: /share
  readOnly: "false"
  • ?server?:NFS 服務(wù)器的主機(jī)名或 IP 地址。
  • ?path?:NFS 服務(wù)器導(dǎo)出的路徑。
  • ?readOnly?:是否將存儲(chǔ)掛載為只讀的標(biāo)志(默認(rèn)為 false)。

Kubernetes 不包含內(nèi)部 NFS 驅(qū)動(dòng)。你需要使用外部驅(qū)動(dòng)為 NFS 創(chuàng)建 StorageClass。 這里有些例子:

  • NFS Ganesha 服務(wù)器和外部驅(qū)動(dòng)
  • NFS subdir 外部驅(qū)動(dòng)

OpenStack Cinder 

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: gold
provisioner: kubernetes.io/cinder
parameters:
  availability: nova
  • ?availability?:可用區(qū)域。如果沒(méi)有指定,通常卷會(huì)在 Kubernetes 集群節(jié)點(diǎn) 所在的活動(dòng)區(qū)域中輪轉(zhuǎn)調(diào)度。

FEATURE STATE: Kubernetes 1.11 [deprecated]

OpenStack 的內(nèi)部驅(qū)動(dòng)已經(jīng)被棄用。請(qǐng)使用  OpenStack 的外部云驅(qū)動(dòng)。

vSphere

vSphere 存儲(chǔ)類(lèi)有兩種制備器

  • CSI 制備器: ?csi.vsphere.vmware.com ?
  • vCP 制備器: ?kubernetes.io/vsphere-volume ?

樹(shù)內(nèi)制備器已經(jīng)被 棄用。

CSI 制備器

vSphere CSI StorageClass 制備器在 Tanzu Kubernetes 集群下運(yùn)行。示例請(qǐng)參 vSphere CSI 倉(cāng)庫(kù)。

vCP 制備器

以下示例使用 VMware Cloud Provider (vCP) StorageClass 調(diào)度器

  1. 使用用戶指定的磁盤(pán)格式創(chuàng)建一個(gè) StorageClass。
  2. apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: fast
    provisioner: kubernetes.io/vsphere-volume
    parameters:
      diskformat: zeroedthick

    ?diskformat?: ?thin?, ?zeroedthick ?和 ?eagerzeroedthick?。默認(rèn)值: ?"thin"?。

  3. 在用戶指定的數(shù)據(jù)存儲(chǔ)上創(chuàng)建磁盤(pán)格式的 StorageClass。
  4. apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: fast
    provisioner: kubernetes.io/vsphere-volume
    parameters:
        diskformat: zeroedthick
        datastore: VSANDatastore

    ?datastore?:用戶也可以在 StorageClass 中指定數(shù)據(jù)存儲(chǔ)。 卷將在 storage class 中指定的數(shù)據(jù)存儲(chǔ)上創(chuàng)建,在這種情況下是 ?VSANDatastore?。 該字段是可選的。 如果未指定數(shù)據(jù)存儲(chǔ),則將在用于初始化 vSphere Cloud Provider 的 vSphere 配置文件中指定的數(shù)據(jù)存儲(chǔ)上創(chuàng)建該卷。

  5. Kubernetes 中的存儲(chǔ)策略管理
  • 使用現(xiàn)有的 vCenter SPBM 策略
  • vSphere 用于存儲(chǔ)管理的最重要特性之一是基于策略的管理。 基于存儲(chǔ)策略的管理(SPBM)是一個(gè)存儲(chǔ)策略框架,提供單一的統(tǒng)一控制平面的 跨越廣泛的數(shù)據(jù)服務(wù)和存儲(chǔ)解決方案。 SPBM 使能 vSphere 管理員克服先期的存儲(chǔ)配置挑戰(zhàn),如容量規(guī)劃,差異化服務(wù)等級(jí)和管理容量空間。 SPBM 策略可以在 StorageClass 中使用 ?
    storagePolicyName ?參數(shù)聲明。

  • Kubernetes 內(nèi)的 Virtual SAN 策略支持
  • Vsphere Infrastructure(VI)管理員將能夠在動(dòng)態(tài)卷配置期間指定自定義 Virtual SAN 存儲(chǔ)功能。你現(xiàn)在可以在動(dòng)態(tài)制備卷期間以存儲(chǔ)能力的形式定義存儲(chǔ)需求,例如性能和可用性。 存儲(chǔ)能力需求會(huì)轉(zhuǎn)換為 Virtual SAN 策略,之后當(dāng)持久卷(虛擬磁盤(pán))被創(chuàng)建時(shí), 會(huì)將其推送到 Virtual SAN 層。虛擬磁盤(pán)分布在 Virtual SAN 數(shù)據(jù)存儲(chǔ)中以滿足要求。 你可以參考 基于存儲(chǔ)策略的動(dòng)態(tài)制備卷管理, 進(jìn)一步了解有關(guān)持久卷管理的存儲(chǔ)策略的詳細(xì)信息。

有幾個(gè) vSphere 例子 供你在 Kubernetes for vSphere 中嘗試進(jìn)行持久卷管理。

Ceph RBD 

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: fast
provisioner: kubernetes.io/rbd
parameters:
  monitors: 10.16.153.105:6789
  adminId: kube
  adminSecretName: ceph-secret
  adminSecretNamespace: kube-system
  pool: kube
  userId: kube
  userSecretName: ceph-secret-user
  userSecretNamespace: default
  fsType: ext4
  imageFormat: "2"
  imageFeatures: "layering"
  • ?monitors?:Ceph monitor,逗號(hào)分隔。該參數(shù)是必需的。
  • ?adminId?:Ceph 客戶端 ID,用于在池 ceph 池中創(chuàng)建映像。默認(rèn)是 "admin"。
  • ?adminSecret?:?adminId ?的 Secret 名稱(chēng)。該參數(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?:用于映射 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)是 "",沒(méi)有功能打開(kāi)。

Quobyte 

FEATURE STATE: Kubernetes v1.22 [deprecated]

Quobyte 樹(shù)內(nèi)(in-tree)存儲(chǔ)插件已棄用, 你可以在 Quobyte CSI 倉(cāng)庫(kù)中找到用于樹(shù)外(out-of-tree)Quobyte 插件的 ?StorageClass ?示例。

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 倉(cāng)庫(kù)。你可以指定倉(cāng)庫(kù)為 ?:? 或者如果你想指定多個(gè) registry,在它們之間添加逗號(hào),例如 ?:,:,:?。 主機(jī)可以是一個(gè) IP 地址,或者如果你有正在運(yùn)行的 DNS,你也可以提供 DNS 名稱(chēng)。
  • ?adminSecretNamespace?:?adminSecretName ?的名字空間。 默認(rèn)值是 "default"。
  • ?adminSecretName?:保存關(guān)于 Quobyte 用戶和密碼的 Secret,用于對(duì) API 服務(wù)器進(jìn)行身份驗(yàn)證。 提供的 secret 必須有值為 "kubernetes.io/quobyte" 的 type 參數(shù)和 ?user ?與 ?password ?的鍵值, 例如以這種方式創(chuàng)建:
  • kubectl create secret generic quobyte-admin-secret \
      --type="kubernetes.io/quobyte" --from-literal=key='opensesame' \
      --namespace=kube-system
  • ?user?:對(duì)這個(gè)用戶映射的所有訪問(wèn)權(quán)限。默認(rèn)是 "root"。
  • ?group?:對(duì)這個(gè)組映射的所有訪問(wèn)權(quán)限。默認(rèn)是 "nfsnobody"。
  • ?quobyteConfig?:使用指定的配置來(lái)創(chuàng)建卷。你可以創(chuàng)建一個(gè)新的配置, 或者,可以修改 Web 控制臺(tái)或 quobyte CLI 中現(xiàn)有的配置。默認(rèn)是 "BASE"。
  • ?quobyteTenant?:使用指定的租戶 ID 創(chuàng)建/刪除卷。這個(gè) Quobyte 租戶必須 已經(jīng)于 Quobyte 中存在。默認(rèn)是 "DEFAULT"。

Azure 磁盤(pán)

Azure Unmanaged Disk Storage Class(非托管磁盤(pán)存儲(chǔ)類(lèi))

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: slow
provisioner: kubernetes.io/azure-disk
parameters:
  skuName: Standard_LRS
  location: eastus
  storageAccount: azure_storage_account_name

  • ?skuName?:Azure 存儲(chǔ)帳戶 Sku 層。默認(rèn)為空。
  • ?location?:Azure 存儲(chǔ)帳戶位置。默認(rèn)為空。
  • ?storageAccount?:Azure 存儲(chǔ)帳戶名稱(chēng)。 如果提供存儲(chǔ)帳戶,它必須位于與集群相同的資源組中,并且 ?location ?是被忽略的。如果未提供存儲(chǔ)帳戶,則會(huì)在與群集相同的資源組中創(chuàng)建新的存儲(chǔ)帳戶。

Azure 磁盤(pán) Storage Class(從 v1.7.2 開(kāi)始)

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: slow
provisioner: kubernetes.io/azure-disk
parameters:
  storageaccounttype: Standard_LRS
  kind: managed

  • ?storageaccounttype?:Azure 存儲(chǔ)帳戶 Sku 層。默認(rèn)為空。
  • ?kind?:可能的值是 ?shared?、?dedicated ?和 ?managed?(默認(rèn))。 當(dāng) ?kind ?的值是 ?shared ?時(shí),所有非托管磁盤(pán)都在集群的同一個(gè)資源組中的幾個(gè)共享存儲(chǔ)帳戶中創(chuàng)建。 當(dāng) ?kind ?的值是 ?dedicated ?時(shí),將為在集群的同一個(gè)資源組中新的非托管磁盤(pán)創(chuàng)建新的專(zhuān)用存儲(chǔ)帳戶。
  • ?resourceGroup?: 指定要?jiǎng)?chuàng)建 Azure 磁盤(pán)所屬的資源組。必須是已存在的資源組名稱(chēng)。 若未指定資源組,磁盤(pán)會(huì)默認(rèn)放入與當(dāng)前 Kubernetes 集群相同的資源組中。
  • Premium VM 可以同時(shí)添加 Standard_LRS 和 Premium_LRS 磁盤(pán),而 Standard 虛擬機(jī)只能添加 Standard_LRS 磁盤(pán)。
  • 托管虛擬機(jī)只能連接托管磁盤(pán),非托管虛擬機(jī)只能連接非托管磁盤(pán)。

Azure 文件

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: azurefile
provisioner: kubernetes.io/azure-file
parameters:
  skuName: Standard_LRS
  location: eastus
  storageAccount: azure_storage_account_name

  • ?skuName?:Azure 存儲(chǔ)帳戶 Sku 層。默認(rèn)為空。
  • ?location?:Azure 存儲(chǔ)帳戶位置。默認(rèn)為空。
  • ?storageAccount?:Azure 存儲(chǔ)帳戶名稱(chēng)。默認(rèn)為空。 如果不提供存儲(chǔ)帳戶,會(huì)搜索所有與資源相關(guān)的存儲(chǔ)帳戶,以找到一個(gè)匹配 ?skuName ?和 ?location ?的賬號(hào)。 如果提供存儲(chǔ)帳戶,它必須存在于與集群相同的資源組中,?skuName ?和 ?location ?會(huì)被忽略。
  • ?secretNamespace?:包含 Azure 存儲(chǔ)帳戶名稱(chēng)和密鑰的密鑰的名稱(chēng)空間。 默認(rèn)值與 Pod 相同。
  • ?secretName?:包含 Azure 存儲(chǔ)帳戶名稱(chēng)和密鑰的密鑰的名稱(chēng)。 默認(rèn)值為 ?azure-storage-account--secret ?
  • ?readOnly?:指示是否將存儲(chǔ)安裝為只讀的標(biāo)志。默認(rèn)為 false,表示"讀/寫(xiě)"掛載。 該設(shè)置也會(huì)影響VolumeMounts中的 ?ReadOnly ?設(shè)置。

在存儲(chǔ)制備期間,為掛載憑證創(chuàng)建一個(gè)名為 ?secretName ?的 Secret。如果集群同時(shí)啟用了 RBAC 和 控制器角色, 為 ?system:controller:persistent-volume-binder? 的 clusterrole 添加 ?Secret ?資源的 ?create ?權(quán)限。

在多租戶上下文中,強(qiáng)烈建議顯式設(shè)置 ?secretNamespace ?的值,否則 其他用戶可能會(huì)讀取存儲(chǔ)帳戶憑據(jù)。

Portworx 卷 

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: portworx-io-priority-high
provisioner: kubernetes.io/portworx-volume
parameters:
  repl: "1"
  snap_interval:   "70"
  priority_io:  "high"

  • ?fs?:選擇的文件系統(tǒng):?none/xfs/ext4?(默認(rèn):?ext4?)。
  • ?block_size?:以 Kbytes 為單位的塊大小(默認(rèn)值:?32?)。
  • ?repl?:同步副本數(shù)量,以復(fù)制因子 ?1..3?(默認(rèn)值:?1?)的形式提供。 這里需要填寫(xiě)字符串,即,?"1"? 而不是 ?1?。
  • ?io_priority?:決定是否從更高性能或者較低優(yōu)先級(jí)存儲(chǔ)創(chuàng)建卷 ?high/medium/low?(默認(rèn)值:?low?)。
  • ?snap_interval?:觸發(fā)快照的時(shí)鐘/時(shí)間間隔(分鐘)。 快照是基于與先前快照的增量變化,0 是禁用快照(默認(rèn):?0?)。 這里需要填寫(xiě)字符串,即,是? "70" ?而不是 ?70?。
  • ?aggregation_level?:指定卷分配到的塊數(shù)量,0 表示一個(gè)非聚合卷(默認(rèn):?0?)。 這里需要填寫(xiě)字符串,即,是 ?"0" ?而不是 ?0?。
  • ?ephemeral?:指定卷在卸載后進(jìn)行清理還是持久化。 ?emptyDir ?的使用場(chǎng)景可以將這個(gè)值設(shè)置為 true , ?persistent volumes? 的使用場(chǎng)景可以將這個(gè)值設(shè)置為 false (例如 Cassandra 這樣的數(shù)據(jù)庫(kù)) ?true/false?(默認(rèn)為 ?false?)。這里需要填寫(xiě)字符串,即, 是 ?"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/api
  system: scaleio
  protectionDomain: pd0
  storagePool: sp1
  storageMode: ThinProvisioned
  secretRef: sio-secret
  readOnly: "false"
  fsType: xfs

  • ?provisioner?:屬性設(shè)置為 ?kubernetes.io/scaleio ?
  • ?gateway ?到 ScaleIO API 網(wǎng)關(guān)的地址(必需)
  • ?system?:ScaleIO 系統(tǒng)的名稱(chēng)(必需)
  • ?protectionDomain?:ScaleIO 保護(hù)域的名稱(chēng)(必需)
  • ?storagePool?:卷存儲(chǔ)池的名稱(chēng)(必需)
  • ?storageMode?:存儲(chǔ)提供模式:?ThinProvisioned?(默認(rèn))或 ?ThickProvisioned ?
  • ?secretRef?:對(duì)已配置的 Secret 對(duì)象的引用(必需)
  • ?readOnly?:指定掛載卷的訪問(wèn)模式(默認(rèn)為 false)
  • ?fsType?:卷的文件系統(tǒng)(默認(rèn)是 ext4)

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

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

StorageOS

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: fast
provisioner: kubernetes.io/storageos
parameters:
  pool: default
  description: Kubernetes volume
  fsType: ext4
  adminSecretNamespace: default
  adminSecretName: storageos-secret

  • ?pool?:制備卷的 StorageOS 分布式容量池的名稱(chēng)。如果未指定,則使用 通常存在的 ?default ?池。
  • ?description?:指定給動(dòng)態(tài)創(chuàng)建的卷的描述。所有卷描述對(duì)于存儲(chǔ)類(lèi)而言都是相同的, 但不同的 storage class 可以使用不同的描述,以區(qū)分不同的使用場(chǎng)景。 默認(rèn)為 ?Kubernetes volume?。
  • ?fsType?:請(qǐng)求的默認(rèn)文件系統(tǒng)類(lèi)型。 請(qǐng)注意,在 StorageOS 中用戶定義的規(guī)則可以覆蓋此值。默認(rèn)為 ?ext4 ?
  • ?adminSecretNamespace?:API 配置 secret 所在的命名空間。 如果設(shè)置了 adminSecretName,則是必需的。
  • ?adminSecretName?:用于獲取 StorageOS API 憑證的 secret 名稱(chēng)。 如果未指定,則將嘗試默認(rèn)值。

StorageOS Kubernetes 卷插件可以使 Secret 對(duì)象來(lái)指定用于訪問(wèn) StorageOS API 的端點(diǎn)和憑據(jù)。 只有當(dāng)默認(rèn)值已被更改時(shí),這才是必須的。 Secret 必須使用 ?kubernetes.io/storageos? 類(lèi)型創(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

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

本地

FEATURE STATE: Kubernetes v1.14 [stable]

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: local-storage
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer

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

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


當(dāng)前名稱(chēng):創(chuàng)新互聯(lián)kubernetes教程:Kubernetes存儲(chǔ)類(lèi)
轉(zhuǎn)載來(lái)源:http://m.5511xx.com/article/cddiojj.html