您可以在阿里雲Container ServiceKubernetes叢集中使用阿里雲雲端硬碟儲存卷,本文主要介紹雲端硬碟儲存卷的功能介紹、儲存規格、適用情境、注意事項、計費說明以及儲存類(StorageClass)。
功能介紹
雲端硬碟是阿里雲為Elastic Compute Service提供的資料區塊層級的Block Storage產品,具有低時延、高效能、持久性、高可靠等特點。雲端硬碟採用分布式三副本機制,為ECS執行個體提供資料可靠性保證。雲端硬碟支援在可用性區域內自動複製您的資料,防止意外硬體故障導致的資料不可用,保護您的業務免於組件故障的威脅。更多資訊,請參見雲端硬碟概述。
ESSD AutoPL雲端硬碟:支援根據業務需求自訂雲端硬碟的預配置效能以及效能突發。該類雲端硬碟在保持ESSD雲端硬碟原有功能與效能的同時,可以實現雲端硬碟容量與雲端硬碟效能解耦。更多資訊,請參見ESSD AutoPL雲端硬碟。
建議在以下業務情境中使用:
應用於ESSD雲端硬碟適用的情境(大型OLTP資料庫、NoSQL資料庫和ELK分布式日誌等情境)。
業務所需的雲端硬碟容量固定,但需要更高的雲端硬碟效能來支撐業務的運行。
業務波動較大,波峰高頻出現,需要雲端硬碟具備應對突發業務的能力。
ESSD雲端硬碟:基於新一代分布式Block Storage架構的超高效能雲端硬碟產品,結合25GE網路和RDMA技術,單盤可提供高達100萬的隨機讀寫能力和更低的單路時延能力。更多資訊,請參見ESSD雲端硬碟。
建議在大型OLTP資料庫、NoSQL資料庫和ELK分布式日誌等情境中使用。
SSD雲端硬碟:具備穩定的高隨機讀寫效能、高可靠性的高效能雲端硬碟產品。
建議在I/O密集型應用、中小型關聯式資料庫和NoSQL資料庫等情境中使用。
ESSD Entry雲端硬碟:具備企業級特性及資料保護能力,建議在開發與測試業務和系統硬碟等情境中使用。
說明僅通用算力型執行個體規格類型系列u1和經濟型執行個體規格類型系列e支援掛載ESSD Entry雲端硬碟。
高效雲端硬碟:具備高性價比、中等隨機讀寫效能、高可靠性的雲端硬碟產品。建議在開發與測試業務和系統硬碟等情境中使用。
普通雲端硬碟:屬於上一代雲端硬碟產品,已經逐步停止售賣。
儲存規格
適用情境
根據業務需求,您可以對雲端硬碟進行以下操作:
業務需求 | 參考連結 |
儲存應用資料 | |
系統硬碟或資料盤容量不足 | 關於擴容的更多資訊,請參見雲端硬碟擴容指引。 具體操作,請參見: |
持久化儲存 | 具體操作,請參見: |
使用限制及說明
雲端硬碟類型:訂用帳戶的雲端硬碟不能進行掛載、卸載操作。
共用儲存:雲端硬碟為阿里雲儲存團隊提供的非共用儲存,只能同時被一個Pod掛載。
掛載數量及容量:每個節點最多掛載雲端硬碟數量由ECS機型決定,更多資訊,請參見執行個體規格類型系列。單塊雲端硬碟容量最小為1 GiB (ESSD PL0, ESSD AutoPL),最大32 TiB(32768 GiB)。
與ECS執行個體的關係:雲端硬碟類型和ECS類型需要匹配才可以掛載,否則會掛載失敗。關於雲端硬碟類型和ECS類型的匹配關係,請參見執行個體規格類型系列。此外,雲端硬碟只能掛載到相同可用性區域的ECS執行個體,不支援跨可用性區域掛載。
掛載應用類型:推薦使用有狀態應用(StatefulSet)掛載使用雲端硬碟。無狀態應用(Deployment)掛載雲端硬碟時Replica需要配置為1,無法為每個Pod配置獨立的儲存卷,且不能保證掛載、卸載的優先順序。此外,由於Deployment的升級策略,重啟Pod時新的Pod可能一直無法掛載,故不推薦使用。
應用參數配置:使用雲端硬碟儲存卷時,如果在應用模板中配置了securityContext.fsgroup參數,kubelet在儲存卷掛載完成後會執行
chmod
和chown
操作,導致掛載時間延長。若需要減少掛載時間,具體操作,請參見NAS儲存卷掛載時間延長和OSS儲存卷掛載時間延長。
計費說明
待掛載的雲端硬碟類型必須是隨用隨付,訂用帳戶的雲端硬碟無法被掛載。當您將叢集中的ECS執行個體從隨用隨付轉換成訂用帳戶時,不能將雲端硬碟一起變成訂用帳戶,否則雲端硬碟將無法被掛載使用。
關於雲端硬碟計費項目資訊,請參見Block Storage計費。關於雲端硬碟的價格資訊,請參見Elastic Compute Service產品詳情頁。
待掛載的雲端硬碟不支援訂用帳戶類型,您可以通過購買SCU的方式降低成本。關於SCU的更多資訊,請參見儲存容量單位包SCU介紹。
更多資訊,請參見計費。
儲存類(StorageClass)
如果PVC請求量很大,就需要建立很多PV,對於營運人員來說維護成本很高,Kubernetes提供一種自動建立PV的機制,稱為StorageClass。
Container ServiceACK預設提供以下幾種儲存類StorageClass。
儲存類StorageClass | 類型說明 | 推薦情境 |
alicloud-disk-efficiency | 高效雲端硬碟 | 單可用性區域 |
alicloud-disk-ssd | SSD雲端硬碟 | 單可用性區域 |
alicloud-disk-essd | ESSD雲端硬碟 | 單可用性區域 |
alicloud-disk-topology-alltype | 提供高可用選項,優先建立ESSD雲端硬碟。
| 多可用性區域 |
通過StorageClass建立雲端硬碟,可用性區域選擇規則如下:
StorageClass配置volumeBindingMode: WaitForFirstConsumer,則取PVC的Pod所在可用性區域作為建立雲端硬碟的可用性區域。
StorageClass配置volumeBindingMode: Immediate,且配置zoneId參數(一個可用性區域),則選擇此可用性區域為建立雲端硬碟的可用性區域。
StorageClass配置volumeBindingMode: Immediate,且配置zoneId參數(多個可用性區域),則每次選擇輪詢配置的多個可用性區域中的一個作為建立雲端硬碟的可用性區域。
綜上,如果您是多可用性區域叢集,推薦您使用WaitForFirstConsumer模式的StorageClass。您可以根據所需雲端硬碟類型自行建立StorageClass。
Default StorageClass
Kubernetes提供Default StorageClass機制,您在PVC不指定StorageClass的情況下,可以通過Default StorageClass建立資料卷,請參見Default StorageClass。
由於Default StorageClass會對所有PVC起作用,對於具備不同類型儲存卷能力的叢集,需要小心使用。例如,您想產生一個NAS類型的PVC、PV,並綁定PVC和PV,但可能因為有Default StorageClass而自動建立了雲端硬碟PV。基於上述原因,ACK叢集沒有提供Default StorageClass,如果您期望使用Default StorageClass,可以參考以下配置。
一個叢集中最多配置一個Default StorageClass,否則預設能力將不起作用。
執行以下命令將StorageClass (alicloud-disk-ssd)配置為一個Default StorageClass。
kubectl patch storageclass alicloud-disk-ssd -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
此時查詢叢集中的StorageClass可以看到alicloud-disk-ssd名字後面加了(default)字樣。
kubectl get sc
預期輸出:
NAME PROVISIONER AGE alicloud-disk-ssd (default) diskplugin.csi.alibabacloud.com 96m
使用Default StorageClass。
使用以下模板建立一個沒有配置StorageClass的PVC。
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: disk-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 20Gi
叢集會自動建立一個雲端硬碟卷(PV),且配置了Default StorageClass(alicloud-disk-ssd)。
kubectl get pvc
預期輸出:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE disk-pvc Bound d-bp18pbai447qverm3ttq 20Gi RWO alicloud-disk-ssd 49s
您可以通過以下命令取消預設儲存類型配置。
kubectl patch storageclass alicloud-disk-ssd -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"false"}}}'