Bu konu, Container Compute Service (ACS) üzerinde File Storage NAS (NAS) dosya sisteminin nasıl bağlanacağını ve NAS'in paylaşımlı depolama ile veri kalıcılığı yeteneklerinin nasıl doğrulanacağını açıklar.
Senaryolar
NAS; paylaşımlı erişim, ölçeklenebilirlik, yüksek güvenilirlik ve yüksek performans sunan dağıtık bir dosya sistemi hizmetidir. Veri paylaşımı ve yüksek IOPS gerektiren senaryolar için uygundur. Maliyet ve performans gereksinimlerinize göre uygun dosya sistemi türünü ve depolama sınıfını seçebilirsiniz. Daha fazla bilgi için bkz. Genel Amaçlı NAS, Extreme NAS dosya sistemleri ve Seçim kılavuzu.
Genel Amaçlı NAS dosya sistemleri ile Extreme NAS dosya sistemleri arasında bağlantı noktası sınırlamaları, dosya sistemi sayısı ve dosya paylaşım protokolleri açısından farklılıklar bulunur. Daha fazla bilgi için bkz. Sınırlamalar ve kotalar.
Mevcut bir NAS dosya sisteminizin olup olmadığına bağlı olarak, NAS birimlerini bağlamak ve kullanmak için aşağıdaki yöntemlerden birini seçebilirsiniz:
Zaten kullanılabilir bir NAS dosya sisteminiz varsa, bunu doğrudan bağlayıp paylaşabilirsiniz. Daha fazla bilgi için bkz. Mevcut bir NAS dosya sistemi kullanma.
Kullanılabilir bir NAS dosya sisteminiz yoksa, StorageClass aracılığıyla otomatik olarak bir tane oluşturup bağlayarak kullanabilirsiniz. Daha fazla bilgi için bkz. Birim olarak NAS dosya sistemi oluşturma.
Önkoşullar
ACS kümesinde managed-csiprovisioner bileşeni yüklüdür.
ACS konsolundaki ACS küme yönetimi sayfasına gidin. Küme yönetimi sayfasının sol gezinme bölmesinde seçeneğini belirleyin. Storage sekmesinde managed-csiprovisioner bileşeninin yüklü olup olmadığını kontrol edebilirsiniz.
Sınırlamalar
NAS dosya sistemleri SMB protokolü kullanılarak bağlanamaz.
-
NAS dosya sistemleri yalnızca aynı VPC içindeki pod'lara bağlanabilir.
NotNAS dosya sistemleri, aynı VPC içindeki alanlar arasında bağlanabilir.
NAS dosya sistemleri yalnızca NFSv3 protokolü kullanılarak bağlanabilir.
Dikkat edilmesi gerekenler
NAS paylaşımlı depolama sağlar. Tek bir NAS birimi birden çok Pod'a bağlanabilir. Birden çok Pod aynı veriyi eş zamanlı olarak değiştirirse uygulamanızın veri senkronizasyonunu yönetmesi gerekir.
-
Bir NAS birimi bağlarken uygulamanın YAML dosyasında
securityContext.fsgroupparametresini yapılandırmayın. Aksi takdirde birim bağlanmayabilir.NotNAS dosya sisteminin kök dizini olan
/için izinleri, sahibi veya grubu değiştiremezsiniz. Bir NAS birimini bağladıktan sonra bağlama hedefini silmeyin. Aksi takdirde işletim sistemi yanıt vermeyi durdurabilir.
Mevcut bir NAS dosya sistemi kullanma
Adım 1: NAS dosya sistemi bilgilerini alma
-
ACS pod'ları tarafından kullanılan VPC Kimliğini ve vSwitch Kimliğini alın.
NotBu bilgilere konsoldan ulaşabilirsiniz. Alternatif olarak, acs-profile ConfigMap'inin YAML dosyasını görüntülemek için
kubectl get cm -n kube-system acs-profile -o yamlkomutunu çalıştırın. VPC Kimliği ve vSwitch KimliğivpcIdvevSwitchIdsalanlarında belirtilir.ACS konsoluna giriş yapın.
Clusters sayfasında kümenin adına tıklayarak küme yönetimi sayfasına gidin.
Sol gezinme bölmesinde seçeneğini belirleyin.
ConfigMap sayfasının üst kısmındaki ad alanını kube-system olarak değiştirin. Ardından acs-profile öğesini bulun ve Edit YAML seçeneğine tıklayın.
VPC Kimliğini ve vSwitch Kimliğini
vpcIdvevSwitchIdsalanlarından alın.
-
Mevcut NAS dosya sisteminin gereksinimleri karşıladığını doğrulayın ve bağlama hedefi adresini alın.
NAS konsoluna giriş yapın. Sol gezinme bölmesinde File System List seçeneğine tıklayın.
-
Hedef NAS dosya sistemini bulun ve bölge, alan ile protokol türünün gereksinimleri karşıladığını doğrulayın.
NAS, VPC'ler arası bağlamayı desteklemez; bu nedenle bölgeler arasında kullanılamaz. NAS dosya sisteminin ACS kümenizle aynı bölgede olduğundan emin olun.
Aynı VPC içinde bir NAS dosya sistemi alanlar arasında bağlanabilir. Ancak en iyi performans için NAS dosya sistemi ile ACS kümesindeki pod'ların aynı alanda olması önerilir.
NAS dosya sisteminin protokol türünün NFS olduğunu doğrulayın. SMB protokolü kullanan NAS dosya sistemlerini bağlayamazsınız.
-
Bağlama hedefinin gereksinimleri karşıladığını doğrulayın ve adresini alın.
Dosya sistemi kimliğine tıklayın.
Dosya sistemi ayrıntıları sayfasında sol gezinme bölmesinden Mount Targets seçeneğine tıklayın.
-
Mount Target alanında mevcut bir bağlama hedefinin gereksinimleri karşıladığını doğrulayın ve ardından bağlama hedefi adresini alın.
NotGenel Amaçlı bir NAS dosya sistemi oluşturduğunuzda bir bağlama hedefi otomatik olarak oluşturulur. Extreme NAS dosya sistemi için bir bağlama hedefini manuel olarak oluşturmanız gerekir.
Mevcut bir bağlama hedefi gereksinimleri karşılamıyorsa yeni bir tane oluşturabilirsiniz. Daha fazla bilgi için bkz. Bağlama hedeflerini yönetme.
Bağlama hedefinin VPC'si ACS kümesinin VPC'siyle aynı olmalıdır. Aksi takdirde bağlama işlemi başarısız olur.
En iyi performans için bağlama hedefi ile ACS kümesindeki pod'ların aynı vSwitch'i kullanması önerilir.
Bağlama hedefinin durumu Available olmalıdır.
Adım 2: StorageClass oluşturma
-
Parametre açıklamalarına göre aşağıdaki YAML içeriğini düzenleyin ve nas-sc.yaml olarak kaydedin.
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: alicloud-nas-subpath mountOptions: - nolock,tcp,noresvport - vers=3 parameters: volumeAs: subpath server: "*******-mw***.cn-shanghai.nas.aliyuncs.com:/csi" provisioner: nasplugin.csi.alibabacloud.com reclaimPolicy: RetainParametre açıklamaları:
Parameter
Description
volumeAsSağlama modu. Her kalıcı birimi (PV) bir alt dizin olarak oluşturmak için bu değeri
subpatholarak ayarlayın. Her PV, NAS dosya sisteminin bir alt dizinine karşılık gelir.serverNAS dosya sisteminin bağlama hedefi adresi. Format:
mount-target-address:path. Buradapath, bağlamak istediğiniz NAS alt dizinidir.-
Bir yol belirtmezseniz varsayılan olarak kök dizin bağlanır.
-
Dizin NAS dosya sisteminde yoksa otomatik olarak oluşturulur ve ardından bağlanır.
Kök dizin Genel Amaçlı NAS dosya sistemleri için
/, Extreme NAS dosya sistemleri için ise/shareşeklindedir.provisionerSağlayıcı türünü belirtir. Alibaba Cloud NAS CSI eklentisini kullanmak için bu değer
nasplugin.csi.alibabacloud.comolarak ayarlanmalıdır.reclaimPolicyPV'nin geri kazanma ilkesi. Yalnızca
Retaindesteklenir. Bu, PV'yi sildiğinizde ilgili NAS dosya sisteminin ve bağlama hedefinin korunduğu anlamına gelir. -
Adım 3: PVC oluşturma
kubectl
-
Aşağıdaki içeriği nas-pvc.yaml olarak kaydedin.
kind: PersistentVolumeClaim apiVersion: v1 metadata: name: nas-pvc annotations: spec: accessModes: - ReadWriteMany resources: requests: storage: 20Gi storageClassName: alicloud-nas-subpathParametre açıklamaları:
Parameter
DescriptionaccessModes
Erişim modu.storage
Oluşturulacak kalıcı birimin kapasitesi.storageClassName
Kullanılacak StorageClass adı. -
PVC'yi oluşturun.
kubectl create -f nas-pvc.yaml -
PV'yi görüntüleyin.
kubectl get pvÇıktı, CSI eklentisinin StorageClass'a dayanarak otomatik olarak bir PV oluşturduğunu ve bunu PVC'ye bağladığını gösterir.
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE nas-ea7a0b6a-bec2-4e56-b767-47222d3a**** 20Gi RWX Retain Bound default/nas-pvc alicloud-nas-subpath 1m58s
Console
ACS konsoluna giriş yapın.
Clusters sayfasında kümenin adına tıklayarak küme yönetimi sayfasına gidin.
Küme yönetimi sayfasının sol gezinme bölmesinde seçeneğini belirleyin.
Persistent Volume Claims sayfasında Create seçeneğine tıklayın.
-
İletişim kutusunda parametreleri ayarlayın ve ardından Create seçeneğine tıklayın.
Parameter
Description
Example
PVC Type
NAS seçin.
NAS
Volume Name:
PVC adı. Özel bir ad girin. Biçimlendirme gereksinimleri için ekrandaki ipucuna bakın.
nas-pvc
Allocation Mode
Use StorageClass seçeneğini belirleyin.
Dynamic Provisioning Using StorageClass
Capacity
Oluşturulacak kalıcı birimin kapasitesi.
20Gi
Access Mode
ReadWriteMany ve ReadWriteOnce desteklenir.
ReadWriteManyPVC oluşturulduktan sonra Persistent Volume Claims sayfasında listelenir. PVC, otomatik olarak oluşturulan bir PV'ye bağlanır; bu PV bir NAS kalıcı birimidir. PV'nin ayrıntılarını Persistent Volumes sayfasında görüntüleyebilirsiniz.
Adım 4: Uygulama oluşturma ve birimi bağlama
kubectl
-
Aşağıdaki içeriği içeren nas-test.yaml adlı bir dosya oluşturun.
Aşağıdaki YAML dosyası iki pod içeren bir Deployment oluşturur. Her iki pod da
nas-pvcadlı PVC'yi kullanır ve birimi/datayoluna bağlar.apiVersion: apps/v1 kind: Deployment metadata: name: nas-test labels: app: nginx spec: replicas: 2 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: registry.cn-hangzhou.aliyuncs.com/acs-sample/nginx:latest ports: - containerPort: 80 volumeMounts: - name: pvc-nas mountPath: /data volumes: - name: pvc-nas persistentVolumeClaim: claimName: nas-pvc -
Deployment'ı oluşturun ve NAS kalıcı birimini bağlayın.
kubectl create -f nas-test.yaml -
Deployment içindeki pod'ların dağıtım durumunu kontrol edin.
kubectl get pod | grep nas-testAşağıdaki çıktı iki pod'un oluşturulduğunu gösterir.
nas-test-****-***a 1/1 Running 0 40s nas-test-****-***b 1/1 Running 0 40s -
Bağlama yolunu kontrol edin.
kubectl exec nas-test-****-***a -- df -h /dataBeklenen çıktı:
Filesystem Size Used Avail Use% Mounted on 350514*****-mw***.cn-shanghai.nas.aliyuncs.com:/ 1.0P 0 1.0P 0% /dataBu çıktı, dosya sisteminin başarıyla bağlandığını doğrular.
Console
Küme yönetimi sayfasının sol gezinme bölmesinde seçeneğini belirleyin.
Deployments sayfasında Create from Image seçeneğine tıklayın.
-
Deployment parametrelerini ayarlayın ve ardından Create seçeneğine tıklayın.
Aşağıdaki tabloda ana parametreler açıklanmıştır. Diğer parametreler için varsayılan değerleri koruyabilirsiniz. Daha fazla bilgi için bkz. Durumsuz Deployment oluşturma.
Configuration page
Parameter
Description
Example
Basic Information
Application Name
Deployment adı. Özel bir ad girin. Biçimlendirme gereksinimleri için ekrandaki ipucuna bakın.
nas-test
Replicas:
Deployment için çoğaltma sayısı.
2
Container
Image Name
Uygulamayı dağıtmak için kullanılan görüntünün adresini girin.
registry.cn-hangzhou.aliyuncs.com/acs-sample/nginx:latest
Required Resources
Gerekli vCPU ve bellek kaynaklarını ayarlayın.
0.25 vCPU, 0,5 GiB
Volume
Add PVC seçeneğine tıklayın ve ardından parametreleri ayarlayın.
-
Mount Source: Oluşturduğunuz PVC'yi seçin.
-
Container Path: NAS dosya sistemini bağlamak istediğiniz konteyner içindeki yolu girin.
-
Mount Source: nas-pvc
-
Container Path: /data
-
-
Uygulama dağıtım durumunu kontrol edin.
Deployments sayfasında uygulamanın adına tıklayın.
Pods sekmesinde pod'ların Running durumunda olduğunu doğrulayın.
Birim olarak NAS dosya sistemi oluşturma
Adım 1: StorageClass oluşturma
-
Parametre açıklamalarına göre aşağıdaki YAML içeriğini düzenleyin ve dosyayı nas-sc.yaml olarak kaydedin.
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: alicloud-nas-fs mountOptions: - nolock,tcp,noresvport - vers=3 parameters: volumeAs: filesystem fileSystemType: standard storageType: Performance regionId: cn-shanghai zoneId: cn-shanghai-e vpcId: "vpc-2ze2fxn6popm8c2mzm****" vSwitchId: "vsw-2zwdg25a2b4y5juy****" accessGroupName: DEFAULT_VPC_GROUP_NAME deleteVolume: "false" provisioner: nasplugin.csi.alibabacloud.com reclaimPolicy: RetainAşağıdaki tabloda parametreler açıklanmıştır.
ÖnemliNAS dosya sistemi türleri ve depolama sınıfları için destek bölgeye ve kullanılabilirlik alanına göre değişir. NAS dosya sistemi ve bunun bağlama hedefi için seçtiğiniz bölge, kullanılabilirlik alanı, VPC ve vSwitch'in ACS kümeniz ile pod'larınız tarafından kullanılan VPC ve vSwitch ile uyumlu olduğundan emin olun. Daha fazla bilgi için aşağıdaki konulara bakın:
Farklı NAS dosya sistemi türleri için depolama sınıfları, performans, faturalama ve desteklenen bölgeler ile kullanılabilirlik alanları hakkında bilgi edinmek için bkz. General-purpose NAS ve Extreme NAS.
Genel Amaçlı NAS ve Extreme NAS arasında bağlama bağlantısı, dosya sistemi sayısı ve protokol türleri açısından farklı sınırlamalar bulunur. Daha fazla bilgi için bkz. Sınırlamalar.
kubectl get cm -n kube-system acs-profile -o yamlkomutunu çalıştırarakacs-profileYAML dosyasını görüntüleyebilir ve Pod'lar tarafından kullanılan VPC Kimliği ile vSwitch KimliklerinivpcIdvevSwitchIdsalanlarından alabilirsiniz.
Parameter
Description
volumeAsBirim sağlama yöntemini belirtir. Her birim için otomatik olarak yeni bir NAS dosya sistemi oluşturmak amacıyla bu değeri
filesystemolarak ayarlayın.fileSystemTypeNAS dosya sisteminin türü.
-
standard(varsayılan): Genel Amaçlı NAS. Daha fazla bilgi için bkz. General-purpose NAS. -
extreme: Extreme NAS. Daha fazla bilgi için bkz. Extreme NAS.
storageTypeNAS dosya sisteminin depolama sınıfı.
-
Genel Amaçlı NAS için geçerli değerler şunlardır:
-
Performance(varsayılan): Performans -
Capacity: Kapasite
-
-
Extreme NAS için geçerli değerler şunlardır:
-
standard(varsayılan): Standart -
advanced: Gelişmiş
-
regionIdNAS dosya sisteminin bulunduğu bölge. Bu değer ACS kümenizin bölgesiyle aynı olmalıdır.
zoneIdNAS dosya sisteminin bulunduğu kullanılabilirlik alanı. ACS kümenizdeki pod'lar tarafından kullanılan vSwitch'e göre bir kullanılabilirlik alanı seçin.
NotAynı VPC içinde bir NAS dosya sistemi kullanılabilirlik alanları arasında bağlanabilir. En iyi performans için aynı kullanılabilirlik alanını seçmeniz önerilir.
vpcId,vSwitchIdNAS dosya sisteminin bağlama hedefi için VPC ve vSwitch kimlikleri. Bunlar, ACS kümenizdeki pod'lar tarafından kullanılan VPC ve vSwitch kimlikleri olmalıdır.
accessGroupNameNAS dosya sisteminin bağlama hedefi için izin grubu. Varsayılan değer
DEFAULT_VPC_GROUP_NAMEşeklindedir.provisionerSağlayıcı. Bu değer, Alibaba Cloud NAS CSI eklentisinin kullanıldığını belirten
nasplugin.csi.alibabacloud.comolarak ayarlanmalıdır.reclaimPolicyPV için geri kazanma ilkesi. Desteklenen tek ilke
Retain'dir. Bu, PV silindiğinde ilgili NAS dosya sisteminin ve bağlama hedefinin korunduğu anlamına gelir. -
StorageClass'ı oluşturun.
kubectl create -f nas-sc.yaml -
StorageClass'ı kontrol edin.
kubectl get scBeklenen çıktı:
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE alicloud-nas-fs nasplugin.csi.alibabacloud.com Retain Immediate false 13m ......
Adım 2: Kalıcı Birim Talebi (PersistentVolumeClaim) oluşturma
-
Aşağıdaki içeriği nas-pvc-fs.yaml adlı bir dosyaya kaydedin.
kind: PersistentVolumeClaim apiVersion: v1 metadata: name: nas-pvc-fs spec: accessModes: - ReadWriteMany storageClassName: alicloud-nas-fs resources: requests: storage: 20GiAşağıdaki tabloda parametreler açıklanmıştır.
Parameter
Description
accessModesErişim modu.
storageOluşturulacak NAS biriminin kapasitesi.
NotExtreme NAS için minimum kapasite 100 GiB'dir. StorageClass'ta tanımlanan NAS dosya sistemi türü Extreme NAS ise
storagedeğeri 100 GiB veya daha büyük olmalıdır. Aksi takdirde ilgili Kalıcı Birim oluşturulamaz.storageClassNameKullanılacak StorageClass adı.
-
Kalıcı Birim Talebini (PersistentVolumeClaim) oluşturun.
kubectl create -f nas-pvc-fs.yaml -
Kalıcı Birim Talebini kontrol edin.
kubectl get pvcÇıktı, Kalıcı Birim Talebinin otomatik olarak oluşturulan Kalıcı Birime bağlandığını gösterir. İlgili NAS dosya sistemini ayrıca NAS konsolunda görüntüleyebilirsiniz.
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE nas-pvc-fs Bound nas-04a730ba-010d-4fb1-9043-476d8c38**** 20Gi RWX alicloud-nas-fs <unset> 14s
Adım 3: Uygulama oluşturma ve NAS birimini bağlama
-
Aşağıdaki içeriğe sahip nas-test-fs.yaml adlı bir dosya oluşturun.
Aşağıdaki YAML, iki pod içeren bir Deployment oluşturur. Her iki pod da
nas-pvc-fsadlı Kalıcı Birim Talebinden depolama ister ve birimi/databağlama yoluna bağlar.apiVersion: apps/v1 kind: Deployment metadata: name: nas-test labels: app: nginx spec: replicas: 2 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: registry.cn-hangzhou.aliyuncs.com/acs-sample/nginx:latest ports: - containerPort: 80 volumeMounts: - name: pvc-nas mountPath: /data volumes: - name: pvc-nas persistentVolumeClaim: claimName: nas-pvc-fs -
Deployment'ı oluşturun ve NAS birimini bağlayın.
kubectl create -f nas-test-fs.yaml -
Deployment içindeki pod'ların dağıtım durumunu kontrol edin.
kubectl get pod | grep nas-testAşağıdaki çıktı iki pod'un oluşturulduğunu gösterir.
nas-test-****-***a 1/1 Running 0 40s nas-test-****-***b 1/1 Running 0 40s -
Bağlama yolunu kontrol edin.
kubectl exec nas-test-****-***a -- df -h /dataBeklenen çıktı:
Filesystem Size Used Avail Use% Mounted on 350514*****-mw***.cn-shanghai.nas.aliyuncs.com:/ 1.0P 0 1.0P 0% /dataBu çıktı, dosya sisteminin başarıyla bağlandığını doğrular.
Paylaşımlı ve kalıcı depolamayı doğrulama
Önceki örnekte oluşturulan deployment, aynı NAS dosya sistemini bağlayan iki pod içerir. Bu kurulumu aşağıdaki gibi doğrulayın:
Paylaşımlı depolamayı doğrulamak için bir pod'da dosya oluşturun ve diğer pod'da görüntüleyin.
Kalıcı depolamayı doğrulamak için deployment'ı yeniden başlatın ve verilerin yeni bir pod'da kalıp kalmadığını kontrol edin.
-
Pod bilgilerini kontrol edin.
kubectl get pod | grep nas-testÖrnek çıktı:
nas-test-****-***a 1/1 Running 0 40s nas-test-****-***b 1/1 Running 0 40s -
Paylaşımlı depolamayı doğrulayın.
-
Bir pod'da dosya oluşturun.
Bu örnekte
nas-test-****-***aadlı pod kullanılmaktadır:kubectl exec nas-test-****-***a -- touch /data/test.txt -
Dosyayı diğer pod'da görüntüleyin.
Bu örnekte
nas-test-****-***badlı pod kullanılmaktadır:kubectl exec nas-test-****-***b -- ls /dataBeklenen çıktıda yeni
test.txtdosyası gösterilir; bu da dosyanın pod'lar arasında paylaşıldığını doğrular.test.txt
-
-
Kalıcı depolamayı doğrulayın.
-
Deployment'ı yeniden başlatın.
kubectl rollout restart deploy nas-test -
Pod'ları kontrol edin ve yeni pod'ların başlamasını bekleyin.
kubectl get pod | grep nas-testÖrnek çıktı:
nas-test-****-***c 1/1 Running 0 67s nas-test-****-***d 1/1 Running 0 49s -
Yeni pod'lardan birinde verilerin dosya sisteminde kalıcı olduğunu doğrulayın.
Bu örnekte
nas-test-****-***cadlı pod kullanılmaktadır:kubectl exec nas-test-****-***c -- ls /dataÇıktı, NAS dosya sistemindeki verilerin kalıcı olduğunu ve yeni pod'un bağlama dizininden erişilebilir olduğunu doğrular.
test.txt
-