您可以在阿里云容器服務Kubernetes集群中使用阿里云云盤存儲卷,本文主要介紹云盤存儲卷的功能介紹、存儲規格、適用場景、注意事項、計費說明以及存儲類(StorageClass)。
功能介紹
云盤是阿里云為云服務器ECS提供的數據塊級別的塊存儲產品,具有低時延、高性能、持久性、高可靠等特點。云盤采用分布式三副本機制,為ECS實例提供數據可靠性保證。云盤支持在可用區內自動復制您的數據,防止意外硬件故障導致的數據不可用,保護您的業務免于組件故障的威脅。更多信息,請參見云盤概述。
ESSD AutoPL云盤:支持根據業務需求自定義云盤的預配置性能以及性能突發。該類云盤在保持ESSD云盤原有功能與性能的同時,可以實現云盤容量與云盤性能解耦。更多信息,請參見ESSD AutoPL云盤。
建議在以下業務場景中使用:
應用于ESSD云盤適用的場景(大型OLTP數據庫、NoSQL數據庫和ELK分布式日志等場景)。
業務所需的云盤容量固定,但需要更高的云盤性能來支撐業務的運行。
業務波動較大,波峰高頻出現,需要云盤具備應對突發業務的能力。
ESSD云盤:基于新一代分布式塊存儲架構的超高性能云盤產品,結合25GE網絡和RDMA技術,單盤可提供高達100萬的隨機讀寫能力和更低的單路時延能力。更多信息,請參見ESSD云盤。
建議在大型OLTP數據庫、NoSQL數據庫和ELK分布式日志等場景中使用。
SSD云盤:具備穩定的高隨機讀寫性能、高可靠性的高性能云盤產品。
建議在I/O密集型應用、中小型關系數據庫和NoSQL數據庫等場景中使用。
ESSD Entry云盤:具備企業級特性及數據保護能力,建議在開發與測試業務和系統盤等場景中使用。
說明僅通用算力型實例規格族u1和經濟型實例規格族e支持掛載ESSD Entry云盤。
高效云盤:具備高性價比、中等隨機讀寫性能、高可靠性的云盤產品。建議在開發與測試業務和系統盤等場景中使用。
普通云盤:屬于上一代云盤產品,已經逐步停止售賣。
存儲規格
性能類別 | ESSD AutoPL云盤 | ESSD云盤 | ESSD Entry云盤 | SSD云盤 | 高效云盤 | 普通云盤 | |||
PL3 | PL2 | PL1 | PL0 | ||||||
單盤容量范圍(GiB) | 1~65,536 | 1261~65,536 | 461~65,536 | 20~65,536 | 1~65,536 | 10~32,768 | 20~32,768 | 20~32,768 | 5~2,000 |
最大IOPS | 1,000,000 | 1,000,000 | 100,000 | 50,000 | 10,000 | 6,000 | 25,000 | 5,000 | 數百 |
最大吞吐量(MB/s) | 4,096 | 4,000 | 750 | 350 | 180 | 150 | 300 | 140 | 30~40 |
單盤IOPS性能計算公式 | min{1,800+50*容量, 50,000} 預配置性能:min{預配置IOPS, 50,000} 性能突發:min{實例規格,1,000,000} | min{1,800+50*容量, 1,000,000} | min{1,800+50*容量, 100,000} | min{1,800+50*容量, 50,000} | min{ 1,800+12*容量, 10,000 } | min{1,800+8*容量, 6,000} | min{1,800+30*容量, 25,000} | min{1,800+8*容量, 5,000} | 無 |
單盤吞吐量性能計算公式(MB/s) | min{120+0.5*容量, 350} 預配置性能:min{16 KB*預配置IOPS/1024, 單盤最大吞吐量} 性能突發:min{實例規格,4 GB/s} | min{120+0.5*容量, 4,000} | min{120+0.5*容量, 750} | min{120+0.5*容量, 350} | min{100+0.25*容量, 180} | min{100+0.15*容量, 150} | min{120+0.5*容量, 300} | min{100+0.15*容量, 140} | 無 |
單路隨機寫平均時延(ms),Block Size=4K | 0.2 | 0.2 | 0.2 | 0.2 | 0.3~0.5 | 1~3 | 0.5~2 | 1~3 | 5~10 |
API參數取值 | cloud_auto | cloud_essd | cloud_essd | cloud_essd | cloud_essd | cloud_essd_entry | cloud_ssd | cloud_efficiency | cloud |
適用場景
根據業務需求,您可以對云盤進行以下操作:
業務需求 | 參考鏈接 |
存儲應用數據 | 具體操作,請參見: |
系統盤或數據盤容量不足 | 關于擴容的更多信息,請參見云盤擴容指引。 具體操作,請參見: |
持久化存儲 | 具體操作,請參見: |
使用限制及說明
云盤類型:包年包月的云盤不能進行掛載、卸載操作。
共享存儲:云盤為阿里云存儲團隊提供的非共享存儲,只能同時被一個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實例從按量付費轉換成包年包月時,不能將云盤一起變成包年包月,否則云盤將無法被掛載使用。
待掛載的云盤不支持包年包月類型,您可以通過購買SCU的方式降低成本。關于SCU的更多信息,請參見存儲容量單位包SCU介紹。
更多信息,請參見計費。
存儲類(StorageClass)
如果PVC請求量很大,就需要創建很多PV,對于運維人員來說維護成本很高,Kubernetes提供一種自動創建PV的機制,稱為StorageClass。
容器服務ACK默認提供以下幾種存儲類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"}}}'