İş yükleri büyüdükçe pod'lara monte edilen disk birimlerinde alan yetersizliği oluşabilir. Container Service for Kubernetes (ACK), Kubernetes 1.16 ve sonraki sürümlerde FlexVolume kullanarak çevrimiçi disk birimi genişletmeyi destekler; çoğu durumda pod'u yeniden başlatmanız gerekmez. Bu konu, hem pod Çalışır durumdayken hem de pod'u yeniden başlattıktan sonra yapılan genişletme senaryolarını kapsar.
Ön koşullar
Başlamadan önce aşağıdakilere sahip olduğunuzdan emin olun:
Kümeniz için bir kubeconfig dosyası ve buna bağlanacak şekilde yapılandırılmış kubectl. Bkz. kubectl kullanarak ACK kümesine bağlanma.
Bir kalıcı birim talebi (PVC) aracılığıyla monte edilmiş ve
storageClassNameparametresini içeren dinamik olarak sağlanan bir kalıcı birim (PV).v1.14.8.109-5f88ade-aliyun veya sonraki sürümde FlexVolume eklentisi. Yükseltmek için ACK konsolundaki küme bileşenleri sayfasını kontrol edin.
Sınırlamalar
Bir disk birimini genişletmeden önce aşağıdaki kısıtlamaları gözden geçirin:
| Kısıtlama | Ayrıntılar |
|---|---|
| Yalnızca dinamik olarak sağlanan PV'ler | Yalnızca StorageClass ile dinamik olarak sağlanan PV'ler çevrimiçi olarak genişletilebilir. Satır içi birimler ve temel disklerle desteklenen birimler, hizmet kesintisi olmadan genişletilemez. |
| Maksimum disk boyutu | 2.000 GiB veya daha küçük boyuttaki diskler, hizmet kesintisi olmadan genişletilebilir. |
| Pod Çalışır durumunda olmalıdır | Genişletme sırasında pod Çalışır durumunda kalmalıdır. Çalışır durumda değilse bunun yerine yeniden başlatmaya dayalı yöntemi kullanın. |
StorageClass gereksinimi
StorageClass içinde allowVolumeExpansion: true ayarı bulunmalıdır. ACK tarafından oluşturulan StorageClass'lar bu ayarı otomatik olarak uygular. Manuel olarak oluşturulan StorageClass'lar için bunu açıkça ayarlayın:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: alicloud-disk-available
provisioner: alicloud/disk
allowVolumeExpansion: true
Verilerinizi yedekleyin
Genişletme işlemi sırasında oluşabilecek hatalardan kaynaklanan veri kaybına karşı korunmak için genişletmeden önce bir disk anlık görüntüsü oluşturun.
RAM rolüne ResizeDisk izni verin
Bir disk birimini genişletmeden önce kümenin Master RAM rolüne ResizeDisk iznini verin. Bu izin verilmediğinde genişletme isteği bir yetkilendirme hatası döndürür.
ACK konsolunda oturum açın.
Sol gezinme bölmesinde Clusters seçeneğine tıklayın.
Kümeyi bulun ve Actions sütunundaki Details seçeneğine tıklayın.
Sol gezinme bölmesinde Cluster Information seçeneğine tıklayın.
Cluster Resources sekmesine tıklayın, ardından Master RAM Role yanındaki köprüye tıklayın.
-
RAM konsolunda role ResizeDisk iznini verin. Ayrıntılar için bkz. Özel ilkenin belgesini ve açıklamasını değiştirme.

FlexVolume kullanan ACK özel kümeleri veya ACK yönetilen kümeleri için yukarıdaki 1-4. adımları izleyin ve Master RAM Role yanındaki köprüye tıklayın.
Pod'u yeniden başlatmadan disk birimini genişletin
Pod Çalışır durumdayken bu yöntemi kullanın. Disk, hizmet kesintisi olmadan çevrimiçi olarak yeniden boyutlandırılır.
Mevcut durumu kontrol edin
-
Pod'un Çalışır durumunda olduğunu doğrulayın:
kubectl get podBeklenen çıktı:
web-0 1/1 Running 0 42s -
Pod içindeki mevcut disk kullanımını kontrol edin:
kubectl exec web-0 -- df /dataBeklenen çıktı:
Filesystem 1K-blocks Used Available Use% Mounted on /dev/vdb 20511312 45080 20449848 1% /dataMevcut boyutu not edin: 20 GiB.
-
PVC'nin bağlı olduğunu onaylayın ve mevcut kapasitesini kontrol edin:
kubectl get pvcBeklenen çıktı:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE disk-ssd-web-0 Bound d-wz9hpoifm43yn9zie6gl 20Gi RWO alicloud-disk-available 57s
Birimi genişletin
-
Yeni depolama boyutunu istemek için PVC'yi yamalayın:
kubectl patch pvc disk-ssd-web-0 -p '{"spec":{"resources":{"requests":{"storage":"30Gi"}}}}'Genişletmenin tamamlanması için yaklaşık bir dakika bekleyin.
Genişletmeyi doğrulayın
-
PV'nin 30 GiB olarak güncellendiğini onaylayın:
kubectl get pv d-wz9hpoifm43yn9zie6glBeklenen çıktı:
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE d-wz9hpoifm43yn9zie6gl 30Gi RWO Delete Bound default/disk-ssd-web-0 alicloud-disk-available 5m23s -
PVC'nin yeni kapasiteyi yansıttığını onaylayın:
kubectl get pvcBeklenen çıktı:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE disk-ssd-web-0 Bound d-wz9hpoifm43yn9zie6gl 30Gi RWO alicloud-disk-available 5m10s -
Yeni disk boyutunun pod içinde görünür olduğunu doğrulayın:
kubectl exec web-0 -- df /dataBeklenen çıktı:
Filesystem 1K-blocks Used Available Use% Mounted on /dev/vdb 30832548 45036 30771128 1% /dataDisk birimi, kesinti yaşanmadan 20 GiB'ten 30 GiB'e genişletilmiştir.
Disk birimini genişletmek için pod'u yeniden başlatın
Dosya sistemi, pod yeniden başlatılana kadar yeni boyutu yansıtmadığında veya pod Çalışır durumda olmadığında bu yöntemi kullanın.
Mevcut durumu kontrol edin
-
Pod durumunu doğrulayın ve mevcut disk boyutunu not edin:
kubectl get podBeklenen çıktı:
web-0 1/1 Running 0 42s -
Pod içindeki mevcut disk kullanımını kontrol edin:
kubectl exec web-0 -- df /dataBeklenen çıktı:
Filesystem 1K-blocks Used Available Use% Mounted on /dev/vdb 20511312 45080 20449848 1% /data -
PVC ve PV'nin bağlı olduğunu onaylayın:
kubectl get pvc kubectl get pv
Pod'un yeniden zamanlanmasını önleyin
-
PV'nin alan etiketini bulun:
kubectl get pv d-wz9g2j5qbo37r2lamkg4 -oyaml | grep failure-domain.beta.kubernetes.io/zoneBeklenen çıktı:
failure-domain.beta.kubernetes.io/zone: cn-shenzhen-e -
Pod'un zamanlanamaması için alan etiketini geçersiz bir değerle değiştirin:
kubectl label pv d-wz9g2j5qbo37r2lamkg4 failure-domain.beta.kubernetes.io/zone=cn-shenzhen-e-nozone --overwriteBeklenen çıktı:
persistentvolume/d-wz9g2j5qbo37r2lamkg4 labeled -
Yeniden başlatmayı tetiklemek için pod'u silin. Alan etiketi artık hiçbir düğümle eşleşmediğinden pod Beklemede durumuna geçer:
kubectl delete pod web-0Pod'un Beklemede durumunda olduğunu doğrulayın:
kubectl get podBeklenen çıktı:
web-0 0/1 Pending 0 27s
Birimi genişletin
-
Yeni depolama boyutunu istemek için PVC'yi yamalayın:
kubectl patch pvc disk-ssd-web-0 -p '{"spec":{"resources":{"requests":{"storage":"30Gi"}}}}'
Pod'u geri yükleyin
-
Pod'un tekrar zamanlanabilmesi için orijinal alan etiketini geri yükleyin:
kubectl label pv d-wz9g2j5qbo37r2lamkg4 failure-domain.beta.kubernetes.io/zone=cn-shenzhen-e --overwriteBeklenen çıktı:
persistentvolume/d-wz9g2j5qbo37r2lamkg4 labeledPod'un yeniden başlaması ve genişletmenin tamamlanması için yaklaşık bir dakika bekleyin.
Genişletmeyi doğrulayın
-
Pod'un Çalışır durumunda olduğunu onaylayın:
kubectl get podBeklenen çıktı:
web-0 1/1 Running 0 3m23s -
PVC'nin yeni kapasiteyi yansıttığını onaylayın:
kubectl get pvcBeklenen çıktı:
disk-ssd-web-0 Bound d-wz9g2j5qbo37r2lamkg4 30Gi RWO alicloud-disk-available 17m -
PV'nin yeni kapasiteyi yansıttığını onaylayın:
kubectl get pv d-wz9g2j5qbo37r2lamkg4Beklenen çıktı:
d-wz9g2j5qbo37r2lamkg4 30Gi RWO Delete Bound default/disk-ssd-web-0 alicloud-disk-available 17m -
Yeni disk boyutunun pod içinde görünür olduğunu doğrulayın:
kubectl exec web-0 -- df /dataBeklenen çıktı:
/dev/vdb 30832548 45036 30771128 1% /dataDisk birimi 20 GiB'ten 30 GiB'e genişletilmiştir.