Veritabanları ve ara katmanlar gibi yoğun G/Ç gerektiren ve gecikmeye duyarlı iş yükleri için ideal olan dinamik birim mekanizması, her uygulama çoğaltması için otomatik olarak özel bir cloud disk oluşturup bağlayarak depolama yaşam döngüsü yönetimini basitleştirir.
Nasıl çalışır
StatefulSet, cloud diskleri aşağıdaki süreçle dinamik depolama birimleri olarak kullanır:
Bir şablon tanımlayın veya varsayılan StorageClass'ı şablon olarak kullanarak cloud diskleri dinamik şekilde oluşturun. StorageClass; disk türü, performans ve geri alma ilkesi gibi temel parametreleri belirtir.
-
Uygulamada depolama gereksinimlerini belirtin
StatefulSet içinde
volumeClaimTemplatestanımlayın ve PVC'ler için depolama kapasitesi ile erişim modunu belirtmek üzere StorageClass'a referans verin. Depolama birimlerini otomatik olarak oluşturun ve bağlayın StatefulSet bir Pod oluşturduğunda sistem, şablona göre Pod için benzersiz bir PVC otomatik olarak oluşturur. Ardından CSI bileşeni, StorageClass'a dayalı bir PV oluşturur, PV'yi PVC'ye bağlar ve ilgili cloud diski Pod'a monte eder.
Önkoşullar
Kullanılabilirlik alanı sınırlamaları: ESSD bölge yedekli cloud diskler hariç, diğer cloud disk türleri yalnızca aynı kullanılabilirlik alanındaki podlara eklenebilir.
Örnek tür ailesi sınırlamaları: Bazı cloud disk türleri yalnızca belirli örnek tür ailelerine eklenebilir.
-
CSI bileşen gereksinimleri: csi-plugin ve csi-provisioner bileşenlerinin yüklü olması gerekir.
CSI bileşenleri varsayılan olarak yüklüdür. Yüklü olduklarından emin olmak için sayfasını kontrol edin. CSI bileşenlerini en son sürüme yükseltmenizi öneririz.
-
Sanal düğüm sınırlamaları: Sanal düğümde cloud disk kullanmak için kümeniz ve kube-scheduler aşağıdaki sürüm gereksinimlerini karşılamalıdır.
-
Lingjun Node sınırlamaları: Lingjun Node üzerinde cloud disk kullanmak için aşağıdaki gereksinimleri karşılamanız gerekir.
Adım 1: Bir StorageClass seçin
ACK birkaç varsayılan StorageClass sağlar. StorageClass oluşturulduktan sonra değiştirilemediğinden, varsayılan yapılandırmalar gereksinimlerinizi karşılamıyorsa manuel olarak bir StorageClass oluşturabilirsiniz.
Varsayılan StorageClass
Aşağıdaki varsayılan StorageClass'lardan birini seçebilir ve adını uygulamanızın storageClassName alanında referans olarak kullanabilirsiniz.
Storageclass adı | Sağlanan disk türü |
| Bu StorageClass, Cloud Disk oluşturmadan önce Pod'u zamanlar; bu sayede kullanılabilirlik alanı uyumsuzluklarından kaynaklanan bağlama hatalarını önler ( |
| Bir ESSD sağlar. Varsayılan performans düzeyi PL1'dir ve minimum disk kapasitesi 20 GiB'dir. Önemli Cloud Box'taki ESSD'ler yalnızca PL0 performans düzeyini destekler. Manuel olarak bir StorageClass oluşturmanız ve |
| Bir SSD cloud disk sağlar. Minimum disk kapasitesi 20 GiB'dir. |
| Bir ultra disk sağlar. Minimum disk kapasitesi 20 GiB'dir. |
Bir StorageClass'ın ayrıntılı yapılandırmasını görüntülemek için kubectl describe sc <storageclass-name> komutunu çalıştırabilirsiniz.
Manuel oluşturma
Kubectl
-
disk-sc.yamladlı bir dosya oluşturun.Aşağıdaki örnekte, PV bağlamayı geciktirmek için
volumeBindingMode: WaitForFirstConsumerkullanan bir StorageClass gösterilmektedir.apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: # Name of the StorageClass name: alicloud-disk-wait-for-first-consumer # Provisioner. This must be set to this value when using the Alibaba Cloud Disk CSI plug-in. provisioner: diskplugin.csi.alibabacloud.com parameters: # Cloud Disk type. The system attempts to create a disk in the specified order. type: cloud_auto,cloud_essd,cloud_ssd # File system type fstype: ext4 diskTags: "a:b,b:c" encrypted: "false" # Performance level for the ESSD performanceLevel: PL1 provisionedIops: "40000" burstingEnabled: "false" # Volume binding mode. WaitForFirstConsumer is recommended for multi-AZ scenarios. volumeBindingMode: WaitForFirstConsumer # Reclaim policy reclaimPolicy: Retain # Whether to allow volume expansion allowVolumeExpansion: true # Topology restrictions: Restricts disk creation to the specified availability zones. allowedTopologies: - matchLabelExpressions: - key: topology.diskplugin.csi.alibabacloud.com/zone values: # Replace with your availability zones - cn-hangzhou-i - cn-hangzhou-kAşağıdaki tabloda ana parametreler açıklanmaktadır.
Parametre
Açıklama
provisionerSağlayıcı. Alibaba Cloud Disk CSI eklentisi kullanılırken bu zorunlu parametre
diskplugin.csi.alibabacloud.comolarak ayarlanmalıdır.parameterstypeCloud Disk türü. Bu zorunlu bir parametredir. Geçerli değerler şunlardır:
cloud_essd(varsayılan): ESSDcloud_auto: ESSD AutoPL cloud diskcloud_essd_entry: Blok Depolamaya Genel Bakışcloud_ssd: SSD cloud diskcloud_efficiency: ultra diskelastic_ephemeral_disk_standard: Standart elastik geçici diskelastic_ephemeral_disk_premium: Premium elastik geçici diskcloud_regional_disk_auto: ESSD Birlikte Konumlandırılmış Yedekli Disk
Virgülle ayrılmış bir tür listesi belirtebilirsiniz, örneğin
type: cloud_ssd,cloud_essd,cloud_auto. Sistem belirtilen sırayla disk oluşturmayı dener. Nihai disk türü, node'un örnek türü ve kullanılabilirlik alanında bulunan disk türleri gibi faktörlere bağlıdır.resourceGroupIdCloud Disk için kaynak grubu. Varsayılan:
"".regionIdCloud Disk'in bölgesi; kümenin bölgesiyle aynı olmalıdır.
fstypeCloud Disk için dosya sistemi. Geçerli değerler:
ext4(varsayılan) vexfs.mkfsOptionsCloud Disk için biçimlendirme seçenekleri, örneğin
mkfsOptions: "-O project,quota".diskTagsCloud Disk için etiketler. Örneğin,
diskTags: "a:b,b:c". AyrıcadiskTags/a: bformatını da kullanabilirsiniz. CSI bileşen sürümü v1.30.3 veya üzeri gerektirir.encryptedCloud Disk'in şifrelenip şifrelenmeyeceğini belirtir. Varsayılan:
false.performanceLevelESSD'nin performans düzeyi. Geçerli değerler
PL0,PL1(varsayılan),PL2vePL3'tür.Cloud Box ile kullanıldığında bu değer
PL0olarak ayarlanmalıdır.volumeExpandAutoSnapshot(Kullanımdan Kaldırıldı)CSI sürüm 1.31.4'ten itibaren kullanımdan kaldırıldı.
provisionedIopsBir ESSD AutoPL cloud disk için sağlanan IOPS değerini ayarlar.
burstingEnabledBir ESSD AutoPL cloud disk için patlama özelliğinin etkinleştirilip etkinleştirilmeyeceğini belirtir. Varsayılan:
false.multiAttachCloud Disk için çoklu ekleme özelliğinin etkinleştirilip etkinleştirilmeyeceğini belirtir. Varsayılan:
false.volumeBindingModeCloud Disk için birim bağlama modu. Geçerli değerler:
Immediate(varsayılan): Pod oluşturulmadan önce Cloud Disk'i oluşturur.WaitForFirstConsumer: Bağlamayı geciktirir. Önce Pod'u zamanlar, ardından Cloud Disk'i Pod'un kullanılabilirlik alanında oluşturur.Çok AZ'li kümelerde, bir Cloud Disk ile node'un farklı kullanılabilirlik alanlarında bulunmasından kaynaklanabilecek bağlama hatalarını önlemek için
WaitForFirstConsumerönerilir.Pod'ları sanal node'lara zamanlamanız gerekiyorsa,
WaitForFirstConsumertüründeki bir StorageClass kullanımı belirli zamanlama yöntemleri veya belirli açıklamalarla desteklenmez. Daha fazla bilgi için bkz. Cloud Disk içeren bir Pod sanal node'a zamanlandığında PVC neden Bekliyor durumunda kalır?.
reclaimPolicyCloud Disk için geri alma ilkesi.
Delete(varsayılan): PVC silindiğinde PV ve altta yatan Cloud Disk de silinir.Retain: PVC silindiğinde PV ve altta yatan Cloud Disk saklanır.Kaza sonucu veri kaybını önlemek için
Retainilkesini kullanmanızı öneririz.
allowVolumeExpansiontrueolarak ayarlandığında Cloud Disklerin çevrimiçi genişletilmesine olanak tanır.allowedTopologiesCloud Disk'in yalnızca belirli topolojik alanlarda sağlanmasını kısıtlar.
key: Topoloji alanı etiketi. Desteklenen değerler şunlardır:topology.diskplugin.csi.alibabacloud.com/zone: Alibaba Cloud CSI eklentisi tarafından sağlanan özel bir topolojianahtarı.alibabacloud.com/ecs-instance-id: Elastik geçici disk kullanırken bir node belirtmek için bunu kullanabilirsiniz.
values: Kullanılabilirlik alanı veya node kimliklerini içeren bir liste.
-
StorageClass'ı oluşturun.
kubectl create -f disk-sc.yaml -
StorageClass'ı doğrulayın.
kubectl get scÇıktı, StorageClass'ın
WaitForFirstConsumerbağlama moduyla oluşturulduğunu gösterir.NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE alicloud-disk-wait-for-first-consumer diskplugin.csi.alibabacloud.com Retain WaitForFirstConsumer true 10s
Konsol
ACK Kümeleri sayfasında kümenizin adına tıklayın. Sol gezinme bölmesinde seçeneğine tıklayın.
-
Create öğesine tıklayın, Birim Türü olarak Cloud Disk seçeneğini belirleyin, parametreleri yapılandırın ve ardından Create öğesine tıklayın.
Parametre
Açıklama
Parametreler
Varsayılan parametre:
type.Cloud Disk türü. Bu zorunlu bir parametredir. Geçerli değerler şunlardır:
cloud_essd(varsayılan): ESSDcloud_auto: ESSD AutoPL cloud diskcloud_essd_entry: Blok Depolamaya Genel Bakışcloud_ssd: SSD cloud diskcloud_efficiency: ultra diskelastic_ephemeral_disk_standard: Standart elastik geçici diskelastic_ephemeral_disk_premium: Premium elastik geçici diskcloud_regional_disk_auto: ESSD Birlikte Konumlandırılmış Yedekli Disk
Virgülle ayrılmış bir tür listesi belirtebilirsiniz, örneğin
type: cloud_ssd,cloud_essd,cloud_auto. Sistem belirtilen sırayla disk oluşturmayı dener. Nihai disk türü, node'un örnek türü ve kullanılabilirlik alanında bulunan disk türleri gibi faktörlere bağlıdır.
Geri alma ilkesi
Cloud Disk için geri alma ilkesi.
Delete(varsayılan): PVC silindiğinde PV ve altta yatan Cloud Disk de silinir.Retain: PVC silindiğinde PV ve altta yatan Cloud Disk saklanır.Kaza sonucu veri kaybını önlemek için
Retainilkesini kullanmanızı öneririz.
Binding Mode
Cloud Disk için birim bağlama modu. Geçerli değerler:
Immediate(varsayılan): Pod oluşturulmadan önce Cloud Disk'i oluşturur.WaitForFirstConsumer: Bağlamayı geciktirir. Önce Pod'u zamanlar, ardından Cloud Disk'i Pod'un kullanılabilirlik alanında oluşturur.Çok AZ'li kümelerde, bir Cloud Disk ile node'un farklı kullanılabilirlik alanlarında bulunmasından kaynaklanabilecek bağlama hatalarını önlemek için
WaitForFirstConsumerönerilir.Pod'ları sanal node'lara zamanlamanız gerekiyorsa,
WaitForFirstConsumertüründeki bir StorageClass kullanımı belirli zamanlama yöntemleri veya belirli açıklamalarla desteklenmez. Daha fazla bilgi için bkz. Cloud Disk içeren bir Pod sanal node'a zamanlandığında PVC neden Bekliyor durumunda kalır?.
Yeni StorageClass, StorageClasses sayfasında görünür.
Adım 2: Cloud diskli bir uygulama oluşturun
Bu bölümde, bir Cloud Disk biriminin nasıl monte edileceğini göstermek için örnek olarak bir StatefulSet kullanılmaktadır.
Cloud Disk paylaşılmayan depolama sağlar ve çoklu ekleme etkinleştirilmedikçe aynı anda yalnızca bir Pod'a monte edilebilir. Çok çoğaltmalı bir Dağıtımda bir PVC'nin paylaşılması, Cloud Disk başka bir Pod tarafından zaten kullanılıyorsa yeni Pod'ların başlatılmasını engelleyebilir.
Bir Dağıtımla birlikte hâlâ Cloud Disk kullanmanız gerekiyorsa geçici birim olarak Cloud Disk kullanmayı düşünebilirsiniz. Çoklu eklemeyi etkinleştirmek için bkz. Çoklu ekleme ve rezervasyon ile NVMe tabanlı Cloud Diskleri kullanma.
-
statefulset.yamladlı bir dosya oluşturun.Aşağıdaki örnekte iki Pod içeren bir StatefulSet oluşturulur. Her Pod için bağımsız bir kalıcı birimi otomatik olarak oluşturmak ve bağlamak amacıyla
volumeClaimTemplateskullanılır.apiVersion: apps/v1 kind: StatefulSet metadata: name: web spec: serviceName: "nginx" replicas: 2 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: # We recommend configuring the following securityContext to optimize mount performance. securityContext: fsGroup: 1000 fsGroupChangePolicy: "OnRootMismatch" containers: - name: nginx image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6 ports: - containerPort: 80 volumeMounts: # Mount the data volume to the /data directory in the container. # The name must match metadata.name defined in volumeClaimTemplates. - name: pvc-disk mountPath: /data # Define the PVC template. volumeClaimTemplates: - metadata: name: pvc-disk spec: # Access mode accessModes: [ "ReadWriteOnce" ] # Associate with the StorageClass created earlier. storageClassName: "alicloud-disk-wait-for-first-consumer" resources: requests: # Requested storage capacity, which is the size of the Cloud Disk. storage: 20GiÖnemlisecurityContext.fsgroupyapılandırırken, kubelet bir birimi monte ederken dosya izinlerini yinelemeli olarak değiştirir (chmod/chown). Bu durum, çok sayıda dosya içeren birimler için montaj süresini önemli ölçüde artırabilir.1,20 veya sonraki sürümlere sahip kümeler için
fsGroupChangePolicydeğeriniOnRootMismatcholarak ayarlamanızı öneririz. Bu ayar, yalnızca birim ilk kez monte edildiğinde ve kök dizin izinleri eşleşmediğinde yinelemeli izin değişikliği gerçekleştirerek montaj performansını optimize eder. Performans sorunları devam ederse veya daha ayrıntılı izin denetimine ihtiyaç duyuyorsanız, uygulama konteyneri başlamadan önce izinleri yönetmek için birinitContainerkullanın. -
StatefulSet'i oluşturun.
kubectl create -f statefulset.yaml -
Pod'ların çalıştığını doğrulayın.
kubectl get pod -l app=nginx -
Cloud Disk'in monte edildiğini doğrulayın.
Bu örnekte Pod adı
web-1şeklindedir. Bunu kendi Pod adınızla değiştirin.kubectl exec web-1 -- df -h /dataBeklenen çıktı:
Filesystem Size Used Avail Use% Mounted on /dev/vdb 20G 24K 20G 1% /data
Adım 3: Kalıcı depolamayı doğrulayın
Cloud diskteki verilerin kalıcı olduğunu doğrulamak için diske veri yazacak, Pod'u silecek ve ardından Pod yeniden oluşturulduktan sonra verilerin korunduğunu kontrol edeceksiniz.
-
Pod'a test verileri yazın.
web-1Pod'unda, cloud disk için bağlama noktası olan/datadizinindetestadlı bir dosya oluşturun.kubectl exec web-1 -- touch /data/test kubectl exec web-1 -- ls /dataBeklenen çıktı:
lost+found test -
Pod'u silerek bir Pod arızasını simüle edin.
kubectl delete pod web-1Tekrar
kubectl get pod -l app=nginxkomutunu çalıştırın. Aynı ada sahip yeni bir Pod olanweb-1otomatik olarak oluşturulur. -
Yeni Pod'daki verileri doğrulayın.
Yeni
web-1Pod'unda/datadizinini tekrar kontrol edin.kubectl exec web-1 -- ls /dataÇıktı,
testdosyasının hâlâ mevcut olduğunu doğrular. Bu durum, Pod silinip yeniden oluşturulsa bile kalıcı depolamanın verileri koruduğunu gösterir.lost+found test
Üretim dağıtımı
-
Yüksek kullanılabilirlik
-
Cloud disk seçimi
Pod'larınızın uyumlu node'lara zamanlandığından emin olmak için performans, faturalama, kullanılabilirlik alanları ve örnek tür aileleri gibi faktörleri değerlendirin.
Bir cloud disk türü seçerken SSD cloud disklerin ve Ultra cloud disklerin kullanımının aşamalı olarak durdurulduğunu unutmayın. Ultra cloud disklerin yerine ESSD PL0 cloud diskleri veya ESSD Entry cloud diskleri, SSD cloud disklerin yerine ise ESSD AutoPL cloud diskleri kullanmanızı öneririz.
-
AZ'ler arası olağanüstü durum kurtarma
Uygulama düzeyinde olağanüstü durum kurtarma: Veritabanları gibi kritik iş yükleri için uygulama örneklerini birden fazla kullanılabilirlik alanında dağıtın ve yüksek kullanılabilirlik için uygulamanın yerel veri senkronizasyon mekanizmasını kullanın.
Depolama düzeyinde olağanüstü durum kurtarma: Çok AZ'li olağanüstü durum kurtarmayı destekleyen bir cloud disk türü seçin. Bu özellik, verileri aynı bölgedeki farklı kullanılabilirlik alanlarına eşzamanlı olarak yazar ve AZ'ler arası yük devretmeyi etkinleştirir. Daha fazla bilgi için bkz. ESSD Birlikte Konumlandırılmış Yedekli Diskleri Kullanma.
-
-
Veri güvenliği ve yedekleme
-
Kaza sonucu veri silmeyi önleme:
Veri kaybını önlemek için StorageClass'ın
reclaimPolicydeğeriniRetainolarak ayarlayın. Bu sayede PVC silindiğinde altta yatan cloud disk saklanır ve veri kurtarma işlemi kolaylaşır. -
Düzenli yedeklemeler
Dinamik birimler kaynak sağlamayı basitleştirir ancak veri yedeklemelerinin yerine geçmez. Kritik iş yükleri için verilerinizi yedeklemek ve geri yüklemek amacıyla Yedekleme Merkezi kullanın.
Durağan halde şifreleme: Hassas verilerle çalışan uygulamalar için cloud diskleri şifrelemek üzere StorageClass'ta
encrypted: "true"yapılandırmasını yapın.
-
-
Performans ve maliyet optimizasyonu
-
Paralel ekleme
Pod başlatma hızını artırmak için cloud diskler için paralel eklemeyi kullanın.
-
Çevrimiçi birim yeniden boyutlandırma
Depolama ihtiyaçlarınız arttığında cloud disk depolama birimlerini çevrimiçi olarak yeniden boyutlandırmak için StorageClass'ta
allowVolumeExpansion: trueayarını yapın. -
Depolama izleme ve uyarılar
Depolama birimi anormalliklerini veya performans darboğazlarını hızlıca tespit etmek için konteyner depolama izleme temelinde uyarılar yapılandırın.
-
Faturalama
Bir StorageClass tarafından dinamik olarak sağlanan cloud diskler kullandıkça öde faturalandırma modelini kullanır. Daha fazla bilgi için bkz. blok depolama faturalandırması ve blok depolama fiyatlandırması.
Kaynakları temizleyin
Beklenmeyen ücretlendirmeleri önlemek ve veri güvenliğini sağlamak için kullanılmayan kaynakları serbest bırakmak üzere aşağıdaki adımları izleyin.
-
İş yükünü silin
-
Eylem: İlişkili Kalıcı Birim Talebini (PVC) kullanan Dağıtımlar ve StatefulSet'ler gibi tüm uygulamaları silin. Bu işlem çalışan Pod'ları durdurur ve ilişkili birimleri söker.
Örnek komut:
kubectl delete deployment <your-deployment-name>
-
-
PVC'yi silin
-
Eylem: Uygulamanızla ilişkili PVC'yi silin. StorageClass'ın
reclaimPolicydeğeri, bağlı Kalıcı Birimin (PV) ve altta yatan cloud diskin serbest bırakılmasını belirler.-
Delete: İlkeDeleteise PVC'yi silmek, buna bağlı PV'yi ve altta yatan cloud diski de siler. Bu işlem geri alınamaz. Dikkatli ilerleyin.Kaza sonucu veri kaybını önlemek için silmeden önce cloud diski yedeklemek üzere otomatik anlık görüntü ilkesi oluşturabilirsiniz .
Retain: İlkeRetainise PVC'yi silmek, buna bağlı PV'nin durumunuReleasedolarak değiştirir ancak PV nesnesi ve altta yatan cloud disk saklanır. Cloud diske ve üzerindeki verilere artık ihtiyacınız yoksa diski silmek için Cloud disk serbest bırakma bölümündeki talimatları izleyin. Bu işlem geri alınamaz. Dikkatli ilerleyin.
Örnek komut:
kubectl delete pvc <your-pvc-name> -
-
-
Kubernetes depolama kaynak tanımlarını silin. Bu işlem yalnızca kaynak tanımlarını kümeden kaldırır ve altta yatan cloud diski silmez.
-
PV'yi silin
Eylem:
Releaseddurumundaki bir PV için kaynak tanımını manuel olarak silebilirsiniz.Örnek komut:
kubectl delete pv <your-pv-name>
-
StorageClass'ı silin
Eylem: Bu tür bir depolamaya artık ihtiyacınız yoksa ilgili StorageClass'ı silebilirsiniz.
Örnek komut:
kubectl delete sc <your-storageclass-name>
-
SSS
PVC, sanal node'a zamanlandığında Pending durumunda takılı kalıyor
Bu sorun, sanal node'lara zamanlamayı desteklemeyen bir StorageClass kullandığınızda ortaya çıkabilir. Belirli etiketler veya açıklamalar kullanarak bir pod'u sanal node'a zamanladığınızda volumeBindingMode: WaitForFirstConsumer ile yapılandırılmış bir StorageClass kullanamazsınız.
Neden:
WaitForFirstConsumer modu, bir Pod için fiziksel bir node seçmek üzere kube-scheduler'a dayanır. Bu seçim kullanılabilirlik alanını belirler ve ardından o kullanılabilirlik alanında bir cloud disk oluşturulur. Ancak sanal node'lar için zamanlama mekanizması bu süreci takip etmez. Bu durum CSI'nin kullanılabilirlik alanı bilgilerini almasını engeller ve sonuçta PV oluşturulamaz, bu da PVC'nin Bekliyor durumunda kalmasına neden olur.-
Bu sorunla karşılaşırsanız pod'unuzun veya ad alanınızın aşağıdaki yapılandırmalardan herhangi birine sahip olup olmadığını kontrol edin:
-
Etiket:
alibabacloud.com/eci: "true": Pod'u ECI üzerinde çalışacak şekilde zamanlar.alibabacloud.com/acs: "true": Pod'u bir ACS pod'una zamanlar.
-
Node sabitleme:
spec.nodeNamedeğerinivirtual-kubeletönekine sahip bir node adına ayarlamak pod'u o node'a sabitler.
-
Açıklama:
k8s.aliyun.com/eci-vswitch: ECI pod'u için vSwitch'i belirtir.k8s.aliyun.com/eci-fail-strategy: "fail-fast": ECI pod'u için hata stratejisinifail-fastolarak ayarlar.
-
Tek pod veya tek çoğaltmalı dağıtım için cloud disk monte etme
Çok çoğaltmalı ölçeklendirme veya kararlı ağ tanımlayıcıları gerektirmeyen basit uygulamalar için manuel olarak bir Kalıcı Birim Talebi oluşturabilir ve bunu kalıcı depolama için bir pod'a veya Dağıtıma monte edebilirsiniz.
İş akışı şu şekildedir: Bir StorageClass Seçin -> Bir Kalıcı Birim Talebi Oluşturun -> Kalıcı Birim Talebini uygulamanıza monte edin.
-
Depolama kaynaklarını talep etmek için bir Kalıcı Birim Talebi oluşturun.
kubectl
-
disk-pvc.yamladlı bir dosya oluşturun.apiVersion: v1 kind: PersistentVolumeClaim metadata: name: disk-pvc spec: # Access mode accessModes: - ReadWriteOnce volumeMode: Filesystem resources: requests: # Requested storage capacity, which is the size of the cloud disk storage: 20Gi # Associate with the StorageClass created earlier storageClassName: alicloud-disk-topology-alltypeAşağıdaki tabloda parametreler açıklanmaktadır.
Parametre
Açıklama
accessModesBirim için erişim modları. Geçerli değerler
ReadWriteOnce,ReadOnlyManyveReadWriteMany'dir. Desteklenen erişim modları, StorageClass'takimultiAttachayarına ve Kalıcı Birim TalebindekivolumeModeayarına bağlıdır.multiAttach, cloud disk çoklu eklemeyi etkinleştirip etkinleştirmediğini belirtir. Varsayılan değerfalse'tur; bu, özelliğin devre dışı olduğu anlamına gelir.multiAttachdeğerifalsevevolumeModeherhangi bir değere ayarlandığında desteklenen tek erişim moduReadWriteOnce'dir.multiAttachdeğeritruevevolumeModedeğeriFilesystemolduğunda desteklenen erişim modlarıReadWriteOnceveReadOnlyMany'dir.multiAttachdeğeritruevevolumeModedeğeriBlockolarak ayarlandığında üç erişim modunun tümü desteklenir.
ÖnemliBu senaryoda erişim modu genellikle
ReadWriteOnce(RWO) olur; bu, birimin aynı anda yalnızca bir Pod tarafından monte edilebileceği anlamına gelir. Bu nedenle Dağıtım çoğaltma sayısı 1'den büyük olamaz. Ölçeklendirmeye çalışırsanız yeni Pod'lar, zaten kullanımda olan cloud diski monte edemedikleri içinPendingdurumunda kalır.volumeModeBirim modu. Geçerli değerler:
Filesystem(varsayılan): Birim bir dizin olarak biçimlendirilir ve monte edilir.Block: Birim pod'a ham, biçimlendirilmemiş bir blok aygıtı olarak sağlanır.
storageTalep edilen depolama kapasitesi. Farklı cloud disk türlerinin farklı kapasite aralıkları vardır. Cloud disk oluşturmanın başarısız olmasını önlemek için
storagedeğerinin, başvurulan StorageClass'a karşılık gelen cloud disk türünün kapasite sınırları içinde olduğundan emin olun.storageClassNameBu talep için kullanılacak StorageClass'ın adı.
-
Kalıcı Birim Talebini oluşturun.
kubectl create -f disk-pvc.yaml -
Kalıcı Birim Talebini kontrol edin.
kubectl get pvcÇıktıda, StorageClass
WaitForFirstConsumermodunu kullandığından PVC, onu kullanan ilk Pod başarıyla zamanlanana kadarPendingdurumunda kalır.NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE disk-pvc Pending alicloud-disk-wait-for-first-consumer <unset> 14s
Konsol
Küme yönetimi sayfasının sol gezinme bölmesinde seçeneğine tıklayın.
-
Persistent Volume Claims sayfasında Create öğesine tıklayın. PVC Type olarak Cloud Disk seçeneğini belirleyin ve istendiği gibi parametreleri yapılandırın.
Parametre
Açıklama
Allocation Mode
Use StorageClass seçeneğini belirleyin.
Existing Storage Class
Varsayılan veya manuel olarak oluşturulmuş bir StorageClass seçin.
Kapasite
Talep edilen depolama kapasitesi. Farklı cloud disk türlerinin farklı kapasite aralıkları vardır. Cloud disk oluşturmanın başarısız olmasını önlemek için
storagedeğerinin, başvurulan StorageClass'a karşılık gelen cloud disk türünün kapasite sınırları içinde olduğundan emin olun.Access Mode
Bu senaryo yalnızca ReadWriteOnce erişim modunu destekler; bu, tek bir pod'un birime okuma-yazma erişimiyle monte edebileceği anlamına gelir.
Kalıcı Birim Talebini oluşturduktan sonra bunu Persistent Volume Claims sayfasında görüntüleyebilirsiniz.
-
-
Kalıcı Birim Talebini uygulamanıza monte edin.
-
disk-deployment.yamladlı bir dosya oluşturun. -
Dağıtımı dağıtın.
kubectl create -f disk-deployment.yaml
-
-
Montaj sonucunu doğrulayın.
-
Pod'un çalıştığını onaylayın.
kubectl get pods -l app=nginx-single -
Pod'a bağlanın ve cloud diskin
/datadizinine monte edildiğini doğrulayın.# Get the pod name POD_NAME=$(kubectl get pods -l app=nginx-single -o jsonpath='{.items[0].metadata.name}') # Run the df -h command on the mount point kubectl exec $POD_NAME -- df -h /dataAşağıdaki çıktı, 20 GiB cloud diskin başarıyla monte edildiğini gösterir.
Filesystem Size Used Avail Use% Mounted on /dev/vdb 20G 24K 20G 1% /data
-
Referanslar
Çok kullanılabilirlik alanlı bir dağıtımda cloud disk birimleri için yüksek kullanılabilirlik yapılandırma önerileri hakkında bilgi almak için bkz. Cloud disk birimleri için yüksek kullanılabilirlik yapılandırma önerileri.
İş yükü yapılandırma parametreleri hakkında bilgi almak için bkz. StatefulSet ile durum bilgisi olan iş yükü oluşturma ve Deployment ile durum bilgisi olmayan iş yükü oluşturma.
Bir cloud diske artık ihtiyacınız yoksa ve bunun için ücretlendirilmeyi durdurmak istiyorsanız Cloud disk serbest bırakma işlemini gerçekleştirebilirsiniz. Dismin serbest bırakılması, diski ve üzerindeki tüm verileri kalıcı olarak siler.
Cloud disk birimlerini kullanırken sorunlarla karşılaşırsanız bkz. Cloud disk birimi SSS.
Kümeniz hâlâ kullanımdan kaldırılmış FlexVolume bileşenini kullanıyorsa bkz. FlexVolume'dan CSI'ye geçiş.
