Container Compute Service (ACS), Lingjun için bir CPFS dosya sisteminin bağlanmasını destekler. Birden çok pod aynı anda bu dosya sistemini bağlayarak verileri paylaşabilir.
Önkoşullar
-
Bir ACS kümesi oluşturdunuz.
ACS için CSI bileşenleri (bmcpfs-csi-controller, bmcpfs-csi-node ve cnfs-nas-daemon) ACS platformu tarafından yönetilir. Bileşen sürümlerini veya yükseltmelerini yönetmenize gerek yoktur.
Lingjun için bir CPFS dosya sistemi oluşturup dosya sistemi kimliğini kaydettiniz. Daha fazla bilgi için bkz. Lingjun için CPFS dosya sistemi oluşturma.
Bir pod, RDMA'yı desteklemeyen bir düğüme zamanlanırsa veya senaryo hesaplama-depolama yakınlık alanlarını aşıyorsa önceden bir VPC bağlantı noktası oluşturmanız ve bağlantı noktası etki alanı adını (
cpfs-***-vpc-***.<Region>.cpfs.aliyuncs.combiçiminde) kaydetmeniz gerekir. VPC bağlantı noktasının ait olduğu VPC, ACS kümesiyle aynı VPC olmalıdır. Daha fazla bilgi için bkz. VPC bağlantı noktalarını yönetme.
1. Adım: PV ve PVC oluşturma
Pod türünüzü temel alarak uygun şablonu seçin:
Aynı hesaplama-depolama yakınlık alanındaki Lingjun GPU podları: "Yöntem A: RDMA"yi kullanın.
CPU podları veya hesaplama-depolama yakınlık alanları arasında Lingjun erişimi: "Yöntem B: VPC bağlantı noktası"nı kullanın.
Bir ACS Lingjun podu, CPFS ile aynı hesaplama-depolama yakınlık alanında olduğunda en iyi performans için VSC + RDMA doğrudan bağlama yoluyla dosya sistemine erişir. CPU podları veya hesaplama-depolama yakınlık alanları arasında Lingjun erişimi için erişim bir VPC bağlantı noktası üzerinden gerçekleşir. Hesaplama-depolama yakınlık alanlarının kavramı ve belirlenme yöntemi için bkz. Bağlama erişimine genel bakış .
RDMA ağı
kubectl CLI
-
PV ve PVC'yi tanımlamak için
cpfs-pv-pvc.yamladlı bir dosya oluşturun:apiVersion: v1 kind: PersistentVolume metadata: name: cpfs-test labels: alicloud-pvname: cpfs-test spec: accessModes: - ReadWriteMany capacity: storage: 10Ti csi: driver: bmcpfsplugin.csi.alibabacloud.com volumeAttributes: mountpointAutoSwitch: "true" # Enables automatic switchover between the RDMA mount address and the VPC mount address vpcMountTarget: cpfs-***-vpc-***.<Region>.cpfs.aliyuncs.com filesystemId: bmcpfs-***** path: / volumeHandle: bmcpfs-***** --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: cpfs-test spec: accessModes: - ReadWriteMany selector: matchLabels: alicloud-pvname: cpfs-test resources: requests: storage: 10TiParametre açıklaması:
-
PV parametreleri:
Parametre
Açıklamalabels
PVC'nin PV'yi eşleştirmek ve bağlamak içinselectorkullanabilmesi amacıyla bir etiket ayarlar.accessModes
PV'nin erişim modu.capacity.storage
Birim için bildirilen kapasite.csi.driver
Sürücü türü. Değeribmcpfsplugin.csi.alibabacloud.comolarak ayarlayın.csi.volumeAttributes
CPFS biriminin nitelikleri.filesystemId: Lingjun için CPFS dosya sisteminin kimliği.path: Varsayılan değer/, CPFS dosya sisteminin kök dizinini bağlar. İsteğe bağlı olarak/dirgibi bir alt dizin belirtin. Alt dizin yoksa birim bağlandığında otomatik olarak oluşturulur.csi.volumeHandle
Lingjun için CPFS dosya sisteminin kimliği. -
PVC parametreleri:
Parametre
AçıklamaaccessModes
PVC'nin PV'den istediği erişim modu.selector
PV üzerindeki etikete göre PV'yi eşleştirir ve bağlar.resources.requests.storage
Pod'a ayrılan depolama kapasitesi. Değer, PV'nin kapasitesini aşmamalıdır.
-
-
Oluşturma komutunu çalıştırın:
kubectl create -f cpfs-pv-pvc.yaml -
PVC'nin PV'ye bağlı olduğunu doğrulayın.
kubectl get pvc cpfs-testÖrnek çıktı (Bound durumundaki STATUS, başarıyı gösterir):
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE cpfs-test Bound cpfs-test 10Ti RWX <unset> <unset> 10s
Konsol
ACS konsoluna giriş yapın.
Clusters sayfasında hedef kümenin adına tıklayarak yönetim sayfasına gidin.
-
Sol gezinme bölmesinde seçeneklerini belirleyin, Create seçeneğine tıklayın ve aşağıdaki yapılandırmayı tamamlayın:
Parametre
Açıklama
Örnek
PVC Type
CPFS seçeneğini belirleyin.
CPFS
Name
PVC için özel bir ad. Adlandırma gereksinimleri için ekrandaki ipuçlarına bakın.
cpfs-pvc
Allocation Mode
Gereksinime göre Existing Volume veya Create Volume seçeneğini belirleyin.
Create Volume
CPFS Type
CPFS for Lingjun seçeneğini belirleyin.
CPFS for Lingjun
Access Mode
ReadWriteMany ve ReadWriteOnce desteklenir.
ReadWriteMany
File System ID
Bağlanacak Lingjun için CPFS dosya sisteminin kimliğini yapılandırın.
bmcpfs-011513q5 -
Oluşturulan PV ve PVC'yi görüntüleyin.
PersistentVolumeClaims sayfasında ve Volumes sayfasında yeni oluşturulan PV ve PVC'yi görebilirsiniz. Bunların bağlı olduğunu doğrulayın.
VPC ağı
CPU podları, standart GPU'lar (T4 veya A10 gibi) ve hesaplama-depolama yakınlık alanları arasında Lingjun GPU erişimi için geçerlidir.
-
PV ve PVC'yi tanımlamak için
cpfs-pv-pvc.yamladlı bir dosya oluşturun:apiVersion: v1 kind: PersistentVolume metadata: name: cpfs-test labels: alicloud-pvname: cpfs-test # [PV label] Used by the PVC to bind to this PV spec: accessModes: - ReadWriteMany capacity: storage: 10Ti csi: driver: nasplugin.csi.alibabacloud.com volumeAttributes: mountProtocol: efc server: cpfs-***-vpc-***.cn-wulanchabu.cpfs.aliyuncs.com # Replace with your VPC mount point domain name path: / autoSwitch: "true" # Optional. Enables automatic VSC/VPC switching (recommended for Lingjun cross-AZ scenarios) volumeHandle: bmcpfs-***** # Replace with your CPFS for Lingjun file system ID --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: cpfs-test # [PVC name] Referenced by the Deployment spec: accessModes: - ReadWriteMany selector: matchLabels: alicloud-pvname: cpfs-test # [PVC selector] Must match the PV label resources: requests: storage: 10TiParametre açıklaması:
-
PV parametreleri:
Parametre
Açıklamalabels
PVC'nin PV'yi eşleştirmek ve bağlamak içinselectorkullanabilmesi amacıyla bir etiket ayarlar.accessModes
PV'nin erişim modu.capacity.storage
Birim için bildirilen kapasite.csi.driver
Sürücü türü. Değeribmcpfsplugin.csi.alibabacloud.comolarak ayarlayın.csi.volumeAttributes
CPFS biriminin nitelikleri.filesystemId: Lingjun için CPFS dosya sisteminin kimliği.path: Varsayılan değer/, CPFS dosya sisteminin kök dizinini bağlar. İsteğe bağlı olarak/dirgibi bir alt dizin belirtin. Alt dizin yoksa birim bağlandığında otomatik olarak oluşturulur.csi.volumeHandle
Lingjun için CPFS dosya sisteminin kimliği. -
PVC parametreleri:
Parametre
AçıklamaaccessModes
PVC'nin PV'den istediği erişim modu.selector
PV üzerindeki etikete göre PV'yi eşleştirir ve bağlar.resources.requests.storage
Pod'a ayrılan depolama kapasitesi. Değer, PV'nin kapasitesini aşmamalıdır. autoSwitch: İsteğe bağlı bir parametredir."true"olarak ayarlandığında otomatik VSC/VPC geçişini etkinleştirir. Lingjun GPU'ları kullanılabilirlik alanları arasında eriştiğinde sistem RDMA'den VPC kanalına otomatik olarak geçer.
NotVPC kanalının aktarım hızı ağ bant genişliğiyle sınırlıdır ve yaklaşık 3,2 GB/s (25 Gbps) seviyesindedir; bu da doğrudan RDMA bağlantısından daha düşüktür. Performans odaklı senaryolar için aynı hesaplama-depolama yakınlık alanındaki bir CPFS örneğine öncelik vermenizi öneririz.
-
-
Oluşturma komutunu çalıştırın:
kubectl create -f cpfs-pv-pvc.yaml -
PVC'nin PV'ye bağlı olduğunu doğrulayın.
kubectl get pvc cpfs-testÖrnek çıktı (Bound durumundaki STATUS, başarıyı gösterir):
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE cpfs-test Bound cpfs-test 10Ti RWX <unset> <unset> 10s
2. Adım: Uygulama oluşturma ve CPFS bağlama
Depolamayı konteynerdeki belirli bir dizine bağlamak için PVC'ye başvuran bir Dağıtım oluşturun. Tercihinize göre CLI veya konsol yöntemini seçin.
kubectl
-
Aşağıdaki içeriğe sahip
cpfs-test.yamladlı bir dosya oluşturun.GPU uygulaması
Aşağıdaki YAML örneği iki Pod içeren bir Dağıtım oluşturur. Her iki Pod da GPU tabanlı hesaplama gücü istemek için
alibabacloud.com/compute-class: gpuetiketini ve depolama kaynakları istemek içincpfs-testadlı bir Kalıcı Birim Talebi (PVC) kullanır. Her iki Pod için de bağlama yolu/dataolarak ayarlanır.NotBelirli GPU modelleri hakkında daha fazla bilgi için bkz. ACS GPU Podları için GPU modellerini ve sürücü sürümlerini belirtme.
apiVersion: apps/v1 kind: Deployment metadata: name: cpfs-test labels: app: cpfs-test spec: replicas: 2 selector: matchLabels: app: cpfs-test template: metadata: labels: app: cpfs-test # Specify the compute type as GPU. alibabacloud.com/compute-class: gpu # Specify the GPU model, for example, T4. alibabacloud.com/gpu-model-series: T4 alibabacloud.com/compute-qos: default spec: containers: - name: nginx image: registry.cn-hangzhou.aliyuncs.com/acs-sample/nginx:latest ports: - containerPort: 80 volumeMounts: - name: pvc-cpfs mountPath: /data volumes: - name: pvc-cpfs persistentVolumeClaim: claimName: cpfs-testCPU uygulaması
Aşağıdaki YAML örneği,
cpfs-testadlı bir PVC kullanarak depolama kaynakları isteyen ve her ikisi de/datayoluna bağlanan 2 pod içeren bir Dağıtım oluşturur.apiVersion: apps/v1 kind: Deployment metadata: name: cpfs-test labels: app: cpfs-test spec: replicas: 2 selector: matchLabels: app: cpfs-test template: metadata: labels: app: cpfs-test spec: containers: - name: nginx image: registry.cn-hangzhou.aliyuncs.com/acs-sample/nginx:latest ports: - containerPort: 80 volumeMounts: - name: pvc-cpfs mountPath: /data volumes: - name: pvc-cpfs persistentVolumeClaim: claimName: cpfs-test -
Dağıtımı oluşturun ve CPFS birimini bağlayın.
kubectl create -f cpfs-test.yaml -
Dağıtımdaki Pod'ların durumunu kontrol edin.
kubectl get pod | grep cpfs-testBeklenen çıktıda iki Pod'un 'Running' durumunda olduğu gösterilir.
cpfs-test-****-***a 1/1 Running 0 45s cpfs-test-****-***b 1/1 Running 0 45s -
Bağlama yolunu kontrol edin.
Bu komut, bağlı dizinin (/data) içeriğini listeler; dizin varsayılan olarak boştur ve Lingjun için CPFS dosya sisteminden gelen verileri içerir.
kubectl exec cpfs-test-****-***a -- ls /data
Konsol
Küme yönetim sayfasının sol gezinme bölmesinde seçeneklerini belirleyin.
Deployments sayfasında Create from Image seçeneğine tıklayın.
-
Dağıtım için parametreleri yapılandırın ve Create seçeneğine tıklayın.
Temel parametreler aşağıda açıklanmıştır. Diğer parametreler için varsayılan değerleri koruyabilirsiniz. Daha fazla bilgi için bkz. Dağıtım kullanarak durum bilgisi olmayan uygulama oluşturma.
GPU uygulaması
Bölüm
Parametre
Açıklama
Örnek
Basic Information
Application Name
Dağıtım için benzersiz bir ad girin. Ad, sayfada gösterilen biçim gereksinimlerine uygun olmalıdır.
cpfs-test
Replicas:
Dağıtım için Pod çoğaltma sayısı.
2
Instance Type
Pod'lar için CPU veya belirli bir GPU modeli gibi donanım kaynaklarını belirtir.
GPU, T4
Container
Image Name
Uygulamayı dağıtmak için kullanılan konteyner görüntüsü.
registry.cn-hangzhou.aliyuncs.com/acs-sample/nginx:latest
Required Resources
Her Pod'a ayrılacak GPU, sanal CPU ve bellek kaynaklarının miktarı.
GPU: 1
Sanal CPU: 2
Bellek: 2 GiB
Volume
Add PVC seçeneğine tıklayın ve ardından parametreleri yapılandırın.
Mount Source: Mevcut Kalıcı Birim Talebini seçin.
Container Path: CPFS dosya sisteminin bağlanacağı konteyner içindeki yolu girin.
Bağlama kaynağı: pvc-cpfs
Konteyner yolu: /data
CPU uygulaması
Bölüm
Parametre
Açıklama
Örnek
Basic Information
Application Name
Dağıtım için benzersiz bir ad girin. Ad, sayfada gösterilen biçim gereksinimlerine uygun olmalıdır.
cpfs-test
Replicas:
Dağıtım için Pod çoğaltma sayısı.
2
Instance Type
Pod'un hesaplama türü.
CPU, Genel Amaçlı
Container
Image Name
Uygulamayı dağıtmak için kullanılan konteyner görüntüsü.
registry.cn-hangzhou.aliyuncs.com/acs-sample/nginx:latest
Required Resources
Her Pod'a ayrılacak sanal CPU ve bellek kaynaklarının miktarı.
Sanal CPU: 0,25
Bellek: 0,5 GiB
Volume
Add PVC seçeneğine tıklayın ve ardından parametreleri yapılandırın.
Mount Source: Mevcut Kalıcı Birim Talebini seçin.
Container Path: CPFS dosya sisteminin bağlanacağı konteyner içindeki yolu girin.
Bağlama kaynağı: pvc-cpfs
Konteyner yolu: /data
-
Uygulamanın durumunu kontrol edin.
Deployments sayfasında uygulama adına tıklayın.
Pods sekmesinde Pod'ların 'Running' durumunda olduğunu kontrol edin.
CPFS'nin paylaşılan depolama ve kalıcı depolama özelliklerini doğrulama
Önceki örnekte oluşturulan Dağıtım, aynı CPFS dosya sistemini bağlayan iki pod içerir. Depolama yeteneklerini aşağıdaki yollarla doğrulayın:
Paylaşılan depolamayı doğrulamak için bir pod'da dosya oluşturun ve ardından dosyayı diğer pod'da görüntüleyin.
Kalıcı depolamayı doğrulamak için Dağıtımı yeniden başlatın ve ardından verilerin dosya sisteminde yeni pod'larda hala var olup olmadığını kontrol edin.
-
Pod bilgilerini görüntüleyin.
kubectl get pod | grep cpfs-testAşağıdaki çıktı döndürülür:
cpfs-test-****-***a 1/1 Running 0 45s cpfs-test-****-***b 1/1 Running 0 45s Paylaşılan depolamayı doğrulayın.
-
Bir pod'da dosya oluşturun.
Aşağıdaki örnekte
cpfs-test-****-***aadlı pod kullanılır:kubectl exec cpfs-test-****-***a -- touch /data/test.txt -
Dosyayı diğer pod'da görüntüleyin.
Aşağıdaki örnekte
cpfs-test-****-***badlı pod kullanılır:kubectl exec cpfs-test-****-***b -- ls /dataAşağıdaki çıktı döndürülür. Yeni dosya
test.txtpaylaşılmıştır.test.txt Kalıcı depolamayı doğrulayın.
-
Pod'larını yeniden oluşturmak için Dağıtımı yeniden başlatın.
kubectl rollout restart deploy cpfs-test -
Pod'ları görüntüleyin ve yeni pod'lar oluşturulana kadar bekleyin.
kubectl get pod | grep cpfs-testAşağıdaki çıktı döndürülür:
cpfs-test-****-***c 1/1 Running 0 78s cpfs-test-****-***d 1/1 Running 0 52s -
Dosya sistemindeki verilerin yeni bir pod'da hala var olup olmadığını kontrol edin.
Aşağıdaki örnekte
cpfs-test-****-***cadlı pod kullanılır:kubectl exec cpfs-test-****-***c -- ls /dataAşağıdaki çıktı döndürülür. CPFS dosya sistemindeki veriler hala mevcuttur ve yeni pod'un bağlama dizininde kullanılabilir durumdadır.
test.txt