Container Network File System (CNFS) tarafından yönetilen File Storage NAS (NAS) birimleri için otomatik genişletme ilkeleri tanımlayabilirsiniz. Bu ilkeler, depolama kullanımı eşik değerini aştığında NAS birimlerini otomatik olarak genişletir. Bu konuda, CNFS kullanarak NAS birimlerinin nasıl otomatik olarak genişletileceği açıklanmaktadır.
Önkoşullar
Kümeniz, CNFS kullanarak NAS dosya sistemlerini yönetebilmelidir. Daha fazla bilgi için bkz. CNFS kullanarak NAS dosya sistemlerini yönetin.
-
Küme CSI eklentisini kullanır ve depolama ile ilgili bileşenler aşağıdaki gereksinimleri karşılamalıdır:
csi-plugin ve csi-provisioner sürümleri 1.20.5-ff6490f-aliyun veya daha yeni olmalıdır. csi-plugin ve csi-provisioner güncelleme hakkında daha fazla bilgi için bkz. CSI bileşenlerini yükseltin.
csi-plugin için varsayılan
dnsPolicydeğeriClusterFirstdeğeridir. CNFS kullanarak NAS birimlerini otomatik olarak genişletmek istiyorsanız, varsayılan dnsPolicy değeriniClusterFirstdeğerindenClusterFirstWithHostNetdeğerine değiştirmeniz gerekir.storage-operator sürümü 1.18.8.56-2aa33ba-aliyun veya daha yeni olmalıdır. Daha fazla bilgi için bkz. storage-operator.
Adım 1: storage-operator bileşenini yapılandırın ve otomatik genişletmeyi etkinleştirin
storage-operator bileşenindeki varsayılan storage-auto-expander, depolama kaynaklarını otomatik olarak genişletmekten sorumludur. Kümeninize bağlanın ve otomatik genişletme özelliğini etkinleştirmek için storage-operator ConfigMap dosyasını değiştirmek üzere aşağıdaki komutu çalıştırın:
kubectl patch configmap/storage-operator \
-n kube-system \
--type merge \
-p '{"data":{"storage-auto-expander":"{\"imageRep\":\"acs/storage-auto-expander\",\"imageTag\":\"\",\"install\":\"true\",\"template\":\"/acs/templates/storage-auto-expander/install.yaml\",\"type\":\"deployment\"}"}}'
Adım 2: Otomatik genişletme ilkesi yapılandırın
-
CNFS nesnesinin durumunu görüntüleyin. CNFS nesnesinin Available durumunda olduğundan emin olun.
-
CNFS nesnesini sorgulayın.
kubectl get cnfsBeklenen çıktı:
NAME AGE default-cnfs-nas-837d6ea-20210819155623 14d -
CNFS nesnesinin durumunu görüntüleyin.
kubectl get cnfs <The CNFS object queried in the previous step> -o yaml | grep AvailableBeklenen çıktı:
status: Available
-
-
Bir NAS birimi için otomatik genişletme ilkesi oluşturmak üzere aşağıdaki YAML şablonunu kullanın.
cat << EOF | kubectl apply -f - apiVersion: storage.alibabacloud.com/v1alpha1 kind: StorageAutoScalerPolicy metadata: name: hybrid-expand-policy spec: pvcSelector: matchLabels: app: nginx # You must specify the label that is added to the persistent volume claim (PVC) and the Deployment to which the NAS volume is mounted. In this example, app: nginx is specified. namespaces: - default - nginx conditions: - name: condition1 key: volume-capacity-used-percentage operator: Gt values: - "80" actions: - name: action1 type: volume-expand params: scale: 100% limits: 500Gi EOFParametre
Açıklama
pvcSelector
Genişletme ilkesini, NAS birimini bağlamak için kullanılan PVC ile eşleştirmek amacıyla kullanılan etikettir. Bu örnekte nginx kullanılmıştır.
namespaces
NAS birimini bağlamak için kullanılan PVC'nin ad alanıdır. Birden çok ad alanı belirtilirse, ad alanları arasındaki mantıksal işlemci VEYA'dır. Varsayılan değer: default. Bu örnekte default ve nginx belirtilmiştir.
conditions
Eylemi tetikleyen koşullardır. Birden çok conditions arasındaki mantıksal işlemci VE'dir. Her bir condition aşağıdaki parametreleri içerir:
key: ölçüm türü.
volume-capacity-used-percentage: depolama kullanımı eşiğinin yüzde cinsinden ifade edildiğini belirtir.
operator: işlemci. Değerler Gt (büyüktür), Lt (küçüktür), Eq (eşittir) veya Ne (eşit değildir) olabilir. Parametre değeri büyük/küçük harfe duyarlı değildir.
values: eşik değeri.
Örnekteki koşul, PVC'nin depolama kullanımı %80'i aştığında action öğesinin tetikleneceğini belirtir.
actions
Önceki conditions karşılandığında gerçekleştirilen eylemlerdir. Birden çok eyleme izin verilir. Her eylem aşağıdaki parametreleri içerir:
type: eylem türü. Yalnızca volume-expand desteklenir.
scale: birime eklemek istediğiniz depolama boyutu. Geçerli birimler: GiB ve yüzde (%).
limits: action gerçekleştirildiğinde PVC'nin maksimum kapasitesi.
actions bölümünde birden çok actions belirtilmişse, koşulları karşılayan ilk action gerçekleştirilir. Diğer actions atlanır.
Bu örnekte action1, koşullar karşılandığında NAS biriminin %100 oranında genişletileceğini belirtir. NAS birimi en fazla 500 GiB'a kadar genişletilebilir.
-
Bir PVC ve Dağıtım oluşturmak için aşağıdaki YAML şablonunu kullanın.
ÖnemliOtomatik genişletme ilkesi, belirtilen etikete sahip PVC ve Dağıtım'a uygulanır. Bu örnekte, otomatik genişletme ilkesinde pvcSelector.matchLabels değeri
app: nginxolarak ayarlanmıştır. Bu durumda, ilke labels parametresiapp: nginxolarak ayarlanmış olan PVC ve Dağıtım'a uygulanır.cat << EOF | kubectl apply -f - kind: PersistentVolumeClaim apiVersion: v1 metadata: name: cnfs-nas-pvc labels: app: nginx # You must specify the same value as the pvcSelector.matchLabels parameter in the YAML template of the expansion policy. In this example, app: nginx is specified. spec: accessModes: - ReadWriteMany storageClassName: alibabacloud-cnfs-nas resources: requests: storage: 50Gi --- apiVersion: apps/v1 kind: Deployment metadata: name: cnfs-nas-deployment labels: app: nginx spec: selector: matchLabels: app: nginx # You must specify the same value as the pvcSelector.matchLabels parameter in the YAML template of the expansion policy. In this example, app: nginx is specified. template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.14.2 volumeMounts: - mountPath: "/data" name: cnfs-nas-pvc volumes: - name: cnfs-nas-pvc persistentVolumeClaim: claimName: cnfs-nas-pvc EOF
Adım 3: NAS biriminin otomatik olarak genişletilebildiğini doğrulayın
-
default ad alanındaki tüm pod'ları sorgulayın.
kubectl get podBeklenen çıktı:
NAME READY STATUS RESTARTS AGE cnfs-nas-deployment-56dbcc7fb7-wh79z 1/1 Running 0 20m -
Uygulama pod'una giriş yapın ve NAS biriminin bağlandığı dizine 50 GiB veri yazın.
cd /data dd if=<data path> of=<mounted path> kubectl exec -it cnfs-nas-deployment-56dbcc7fb7-wh79z -ti -- dd if=/dev/zero of=/data/test1 bs=1G count=50 -
Birim genişletme ile ilgili olayları kontrol edin.
kubectl get eventsAşağıdaki çıktı, NAS biriminin depolama kullanımının %80'i aştığını ve bunun sonucunda bir birim genişletmenin tetiklendiğini gösterir. NAS birimi 50 GiB'tan 100 GiB'a genişletilmiştir.
12s Warning StartExpand persistentvolumeclaim/cnfs-nas-pvc Start to expand of pvc cnfs-nas-pvc from 50Gi to 100Gi, usedCapacityPercentage:96%, freeSize:2048MB. 12s Normal ExternalExpanding persistentvolumeclaim/cnfs-nas-pvc waiting for an external controller to expand this PVC 12s Normal Resizing persistentvolumeclaim/cnfs-nas-pvc External resizer is resizing volume nas-462db2b2-717d-44fe-b0b6-fb4db03a**** 12s Normal VolumeResizeSuccessful persistentvolumeclaim/cnfs-nas-pvc Resize volume succeeded -
CSI NAS panosundaki birim kullanım bilgilerini kontrol edin.
ACK konsolu adresine giriş yapın. Sol gezinme bölmesinde Clusters seçeneğine tıklayın.
Clusters sayfasında kümenizin adına tıklayın. Sol gezinme bölmesinde seçeneğine tıklayın.
Prometheus Monitoring sayfasında seçeneklerini belirleyin.
-
CSI NAS sekmesinde NAS depolama biriminin bulunduğu ad alanını ve PVC'yi seçin. Ardından toplam kapasite bölümünde NAS biriminin kapasitesini görüntüleyebilirsiniz.
Bu örnekte Namespace değerini default ve PVC değerini cnfs-nas-pvc olarak ayarlayın.

Yukarıdaki grafikte genişletmenin 10:23:30'da gerçekleştiği ve NAS biriminin 100 GiB'a genişletildiği görülmektedir.