Azure Kubernetes Service'de (AKS) Azure Diskleri ile birim oluşturma ve kullanma
Kalıcı birim, Kubernetes podlarıyla kullanılmak üzere sağlanan bir depolama parçasını temsil eder. Kalıcı birimi bir veya birden çok pod ile kullanabilir ve dinamik veya statik olarak sağlayabilirsiniz. Bu makalede, bir Azure Kubernetes Service (AKS) kümesinde Azure Diskleri ile dinamik olarak kalıcı birimlerin nasıl oluşturulacağı gösterilmektedir.
Not
Azure diski yalnızca ReadWriteOnceerişim modu türüyle bağlanabilir ve bu da AKS'deki bir düğüm için kullanılabilir olmasını sağlar. Bu erişim modu, podlar aynı düğümde çalıştırıldığında birden çok pod'un birime erişmesine izin verir. Daha fazla bilgi için bkz. Kubernetes PersistentVolume erişim modları.
Bu makale, şunları nasıl yapacağınızı gösterir:
- Kapsayıcı Depolama Arabirimi (CSI) sürücüsünü yükleyerek ve bir poda eklemek için dinamik olarak bir veya daha fazla Azure yönetilen diski oluşturarak dinamik kalıcı birim (PV) ile çalışın.
- Bir veya daha fazla Azure yönetilen diski oluşturarak veya var olan bir diski kullanıp poda ekleyerek statik pv ile çalışın.
Kubernetes birimleri hakkında daha fazla bilgi için bkz. AKS'deki uygulamalar için depolama seçenekleri.
Başlamadan önce
Bir Azure depolama hesabına ihtiyacınız vardır.
Azure CLI sürüm 2.0.59 veya üzerinin yüklü ve yapılandırılmış olduğundan emin olun. Sürümü bulmak için
az --version
komutunu çalıştırın. Yüklemeniz veya yükseltmeniz gerekirse, bkz. Azure CLI yükleme.Azure Disk CSI sürücüsünün düğüm başına birim sınırı vardır. Birim sayısı düğüm/düğüm havuzunun boyutuna göre değişir. Düğüm başına ayrılabilecek birim sayısını belirlemek için kubectl get komutunu çalıştırın:
kubectl get CSINode <nodename> -o yaml
Birimi dinamik olarak sağlama
Bu bölüm, bir iş yükü tarafından kullanılmak üzere Azure Disk depolama ayrıntılarını içeren bir veya daha fazla kalıcı birim sağlamak isteyen küme yöneticileri için rehberlik sağlar. Kalıcı birim talebi (PVC), bir Azure Disk depolama kapsayıcısını dinamik olarak sağlamak için depolama sınıfı nesnesini kullanır.
Dinamik sağlama parametreleri
Name | Anlamı | Kullanılabilir Değer | Zorunlu | Varsayılan değer |
---|---|---|---|---|
skuName | Azure Diskleri depolama hesabı türü (diğer ad: storageAccountType ) |
Standard_LRS , Premium_LRS , StandardSSD_LRS , PremiumV2_LRS , UltraSSD_LRS , Premium_ZRS , StandardSSD_ZRS |
Hayır | StandardSSD_LRS |
fsType | Dosya Sistemi Türü | ext4 , ext3 , ext2 , xfs , Linux btrfs için, ntfs Windows için |
Hayır | ext4 Linux için, ntfs Windows için |
cachingMode | Azure Veri Diski Ana Bilgisayarı Önbellek Ayarı | None , ReadOnly , ReadWrite |
Hayır | ReadOnly |
resourceGroup | Azure Diskleri için kaynak grubunu belirtme | Mevcut kaynak grubu adı | Hayır | Sürücü boşsa geçerli AKS kümesiyle aynı kaynak grubu adını kullanır |
DiskIOPSReadWrite | UltraSSD disk IOPS Özelliği (en az: 2 IOPS/GiB) | 100~160000 | Hayır | 500 |
DiskMBpsReadWrite | UltraSSD disk Aktarım Hızı Özelliği(en az: 0,032/GiB) | 1~2000 | Hayır | 100 |
LogicalSectorSize | Ultra disk için bayt cinsinden mantıksal kesim boyutu. Desteklenen değerler 512 ad 4096'dır. Varsayılan değer 4096'dır. | 512 , 4096 |
Hayır | 4096 |
etiketler | Azure Disk etiketleri | Etiket biçimi: key1=val1,key2=val2 |
Hayır | "" |
diskEncryptionSetID | Bekleyen şifrelemeyi etkinleştirmek için kullanılacak disk şifreleme kümesinin ResourceId değeri | Biçim: /subscriptions/{subs-id}/resourceGroups/{rg-name}/providers/Microsoft.Compute/diskEncryptionSets/{diskEncryptionSet-name} |
Hayır | "" |
diskEncryptionType | Disk şifreleme kümesinin şifreleme türü. | EncryptionAtRestWithCustomerKey (varsayılan olarak), EncryptionAtRestWithPlatformAndCustomerKeys |
Hayır | "" |
writeAcceleratorEnabled | Azure Disklerde Yazma Hızlandırıcısı | true , false |
Hayır | "" |
networkAccessPolicy | Disk veya anlık görüntü için SAS URI'sinin oluşturulmasını önlemeye yönelik NetworkAccessPolicy özelliği | AllowAll , DenyAll , AllowPrivate |
Hayır | AllowAll |
diskAccessID | Disklerde özel uç noktaları kullanmak için DiskAccess kaynağının Azure Kaynak Kimliği | Hayır | `` | |
enableBursting | Diskin sağlanan performans hedefinin ötesinde isteğe bağlı seri yüklemeyi etkinleştirin. İsteğe bağlı ani artış yalnızca Premium diske ve disk boyutu > 512 GB olduğunda uygulanmalıdır. Ultra ve paylaşılan disk desteklenmez. Ani artış varsayılan olarak devre dışıdır. | true , false |
Hayır | false |
Useragent | Müşteri kullanımı ilişkilendirmesi için kullanılan kullanıcı aracısı | Hayır | Oluşturulan Useragent biçimlendirilmiş driverName/driverVersion compiler/version (OS-ARCH) |
|
subscriptionID | Azure Disklerinin oluşturulduğu Azure abonelik kimliğini belirtin. | Azure abonelik kimliği | Hayır | Boş değilse sağlanmalıdır resourceGroup . |
--- | Aşağıdaki parametreler yalnızca v2 için geçerlidir | --- | --- | --- |
maxShares | Disk için izin verilen paylaşılan disk bağlamalarının toplam sayısı. Değerin 2 veya daha fazla olarak ayarlanması ek çoğaltmalarını etkinleştirir. | Desteklenen değerler disk boyutuna bağlıdır. Desteklenen değerler için bkz. Azure yönetilen diski paylaşma . | Hayır | 1 |
maxMountReplicaCount | Korunacak çoğaltma eklerinin sayısı. | Bu değer aralıkta olmalıdır [0..(maxShares - 1)] |
Hayır | ise accessMode ReadWriteMany , varsayılan değer şeklindedir 0 . Aksi takdirde, varsayılan değer maxShares - 1 |
Yerleşik depolama sınıfları
Depolama sınıfları, bir depolama biriminin kalıcı bir birimle dinamik olarak nasıl oluşturulduğunu tanımlar. Kubernetes depolama sınıfları hakkında daha fazla bilgi için bkz. Kubernetes depolama sınıfları.
Her AKS kümesinde önceden oluşturulmuş dört depolama sınıfı vardır ve ikisi Azure Diskleri ile çalışacak şekilde yapılandırılmıştır:
- Varsayılan depolama sınıfı standart bir SSD Azure Disk sağlar.
- Standart SSD'ler Standart depolamayı desteklemektedir ve güvenilir performans sunarken uygun maliyetli depolama sunar.
- managed-csi-premium depolama sınıfı bir premium Azure Disk sağlar.
- SSD tabanlı yüksek performanslı, düşük gecikme süreli diskler Premium diskleri geri alır. Üretim iş yüklerini çalıştıran VM'ler için idealdir. AKS üzerinde Azure Disk CSI sürücüsünü kullandığınızda, Standart SSD yerel olarak yedekli depolama (LRS) tarafından yedeklenen depolama sınıfını da kullanabilirsiniz
managed-csi
.
- SSD tabanlı yüksek performanslı, düşük gecikme süreli diskler Premium diskleri geri alır. Üretim iş yüklerini çalıştıran VM'ler için idealdir. AKS üzerinde Azure Disk CSI sürücüsünü kullandığınızda, Standart SSD yerel olarak yedekli depolama (LRS) tarafından yedeklenen depolama sınıfını da kullanabilirsiniz
PVC boyutunu küçültmek (veri kaybını önlemek için) desteklenmez. komutunu kullanarak mevcut bir depolama sınıfını kubectl edit sc
düzenleyebilir veya kendi özel depolama sınıfınızı oluşturabilirsiniz. Örneğin, 4 TiB boyutunda bir disk kullanmak istiyorsanız, 4 TiB ve daha büyük diskler için disk önbelleğe alma desteklenmediğinden bunu tanımlayan cachingmode: None
bir depolama sınıfı oluşturmanız gerekir. Depolama sınıfları ve kendi depolama sınıfınızı oluşturma hakkında daha fazla bilgi için bkz. AKS'deki uygulamalar için depolama seçenekleri.
komutunu kullanarak önceden oluşturulmuş depolama sınıflarını kubectl get sc
görebilirsiniz. Aşağıdaki örnekte, AKS kümesinde bulunan önceden oluşturulmuş depolama sınıfları gösterilmektedir:
kubectl get sc
Komutun çıkışı aşağıdaki örneğe benzer:
NAME PROVISIONER AGE
default (default) disk.csi.azure.com 1h
managed-csi disk.csi.azure.com 1h
Not
Kalıcı birim talepleri GiB'de belirtilir, ancak Azure yönetilen diskleri belirli bir boyut için SKU tarafından faturalandırılır. Bu SKU'lar S4 veya P4 diskleri için 32GiB ile S80 veya P80 diskler için 32TiB arasında değişir (önizlemede). Premium yönetilen diskin aktarım hızı ve IOPS performansı, AKS kümesindeki düğümlerin hem SKU hem de örnek boyutuna bağlıdır. Daha fazla bilgi için bkz . Yönetilen disklerin fiyatlandırması ve performansı.
Kalıcı birim talebi oluşturma
Kalıcı birim talebi (PVC), depolama sınıfını temel alan depolamayı otomatik olarak sağlar. Bu durumda PVC, standart veya premium Azure yönetilen diski oluşturmak için önceden oluşturulmuş depolama sınıflarından birini kullanabilir.
Adlı
azure-pvc.yaml
bir dosya oluşturun ve aşağıdaki bildirimde kopyalayın. Talep, ReadWriteOnce erişimiyle boyutu 5 GB olan adlıazure-managed-disk
bir disk talep eder. Managed-csi depolama sınıfı depolama sınıfı olarak belirtilir.apiVersion: v1 kind: PersistentVolumeClaim metadata: name: azure-managed-disk spec: accessModes: - ReadWriteOnce storageClassName: managed-csi resources: requests: storage: 5Gi
İpucu
Premium depolama kullanan bir disk oluşturmak için managed-csi yerine kullanınstorageClassName: managed-csi-premium
.
komutunu kullanarak
kubectl apply
kalıcı birim talebi oluşturun ve azure-pvc.yaml dosyanızı belirtin.kubectl apply -f azure-pvc.yaml
Komutun çıkışı aşağıdaki örneğe benzer:
persistentvolumeclaim/azure-managed-disk created
Kalıcı birimi kullanma
Kalıcı birim talebi oluşturduktan sonra durumunun Pending
olduğunu doğrulamanız gerekir. Durum, Pending
pod tarafından kullanılmaya hazır olduğunu gösterir.
komutunu kullanarak
kubectl describe pvc
PVC'nin durumunu doğrulayın.kubectl describe pvc azure-managed-disk
Komutun çıkışı aşağıdaki sıkıştırılmış örneğe benzer:
Name: azure-managed-disk Namespace: default StorageClass: managed-csi Status: Pending [...]
Adlı
azure-pvc-disk.yaml
bir dosya oluşturun ve aşağıdaki bildirimde kopyalayın. Bu bildirim, yoluna/mnt/azure
Azure Disk'i bağlamak için azure-managed-disk adlı kalıcı birim talebi kullanan temel bir NGINX pod oluşturur. Windows Server kapsayıcıları için, Windows yol kuralını kullanarak 'D:' gibi bir mountPath belirtin.kind: Pod apiVersion: v1 metadata: name: mypod spec: containers: - name: mypod image: mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine resources: requests: cpu: 100m memory: 128Mi limits: cpu: 250m memory: 256Mi volumeMounts: - mountPath: "/mnt/azure" name: volume readOnly: false volumes: - name: volume persistentVolumeClaim: claimName: azure-managed-disk
komutunu kullanarak pod oluşturun
kubectl apply
.kubectl apply -f azure-pvc-disk.yaml
Komutun çıkışı aşağıdaki örneğe benzer:
pod/mypod created
Artık azure diskinizin dizine bağlı olduğu çalışan bir podunuz
/mnt/azure
var. komutunu kullanarakkubectl describe
pod yapılandırmasını denetleyin.kubectl describe pod mypod
Komutun çıkışı aşağıdaki örneğe benzer:
[...] Volumes: volume: Type: PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace) ClaimName: azure-managed-disk ReadOnly: false default-token-smm2n: Type: Secret (a volume populated by a Secret) SecretName: default-token-smm2n Optional: false [...] Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled 2m default-scheduler Successfully assigned mypod to aks-nodepool1-79590246-0 Normal SuccessfulMountVolume 2m kubelet, aks-nodepool1-79590246-0 MountVolume.SetUp succeeded for volume "default-token-smm2n" Normal SuccessfulMountVolume 1m kubelet, aks-nodepool1-79590246-0 MountVolume.SetUp succeeded for volume "pvc-faf0f176-8b8d-11e8-923b-deb28c58d242" [...]
Azure ultra disklerini kullanma
Azure ultra disk kullanmak için bkz. Azure Kubernetes Service 'de (AKS) ultra diskleri kullanma.
Azure etiketlerini kullanma
Azure etiketlerini kullanma hakkında daha fazla bilgi için bkz. Azure Kubernetes Service'de (AKS) Azure etiketlerini kullanma.
Birimi statik olarak sağlama
Bu bölüm, bir iş yükü tarafından kullanılmak üzere Azure Disk depolama ayrıntılarını içeren bir veya daha fazla kalıcı birim oluşturmak isteyen küme yöneticileri için rehberlik sağlar.
Statik sağlama parametreleri
Name | Anlamı | Kullanılabilir Değer | Zorunlu | Varsayılan değer |
---|---|---|---|---|
volumeHandle | Azure disk URI'sı | /subscriptions/{sub-id}/resourcegroups/{group-name}/providers/microsoft.compute/disks/{disk-id} |
Yes | Yok |
volumeAttributes.fsType | Dosya sistemi türü | ext4 , ext3 , ext2 , xfs , Linux btrfs için, ntfs Windows için |
Hayır | ext4 Linux için, ntfs Windows için |
volumeAttributes.partition | Mevcut diskin bölüm numarası (yalnızca Linux'ta desteklenir) | 1 , 2 , 3 |
Hayır | Boş (bölüm yok) - Bölüm biçiminin şöyle olduğundan emin olun -part1 |
volumeAttributes.cachingMode | Disk ana bilgisayar önbelleği ayarı | None , ReadOnly , ReadWrite |
Hayır | ReadOnly |
Azure diski oluşturma
AKS ile kullanmak üzere bir Azure diski oluşturduğunuzda, düğüm kaynak grubunda disk kaynağını oluşturabilirsiniz. Bu yaklaşım AKS kümesinin disk kaynağına erişmesine ve bunları yönetmesine olanak tanır. Bunun yerine diski ayrı bir kaynak grubunda oluşturursanız, kümeniz için Azure Kubernetes Service (AKS) yönetilen kimliğine Contributor
rolü diskin kaynak grubuna vermelisiniz.
komutunu kullanarak
az aks show
kaynak grubu adını belirleyin ve parametresini--query nodeResourceGroup
ekleyin.az aks show --resource-group myResourceGroup --name myAKSCluster --query nodeResourceGroup -o tsv # Output MC_myResourceGroup_myAKSCluster_eastus
komutunu kullanarak
az disk create
bir disk oluşturun. Düğüm kaynak grubu adını ve disk kaynağı için myAKSDisk gibi bir ad belirtin. Aşağıdaki örnek 20GiB disk oluşturur ve oluşturulduktan sonra diskin kimliğini verir. Windows Server kapsayıcılarıyla kullanmak üzere bir disk oluşturmanız gerekiyorsa, diski doğru biçimlendirmek için parametresini ekleyin--os-type windows
.az disk create \ --resource-group MC_myResourceGroup_myAKSCluster_eastus \ --name myAKSDisk \ --size-gb 20 \ --query id --output tsv
Not
Azure Diskleri SKU tarafından belirli bir boyut için faturalandırılır. Bu SKU'lar S4 veya P4 diskleri için 32GiB ile S80 veya P80 diskler için 32TiB arasında değişir (önizlemede). Premium yönetilen diskin aktarım hızı ve IOPS performansı hem SKU'ya hem de AKS kümesindeki düğümlerin örnek boyutuna bağlıdır. Bkz. Yönetilen Diskler Fiyatlandırması ve Performansı.
Disk kaynak kimliği, aşağıdaki örnek çıktıda gösterildiği gibi komut başarıyla tamamlandıktan sonra görüntülenir. Sonraki bölümde diski bağlamak için disk kimliğini kullanacaksınız.
/subscriptions/<subscriptionID>/resourceGroups/MC_myAKSCluster_myAKSCluster_eastus/providers/Microsoft.Compute/disks/myAKSDisk
Diski birim olarak bağlama
PersistentVolume ile pv-azuredisk.yaml dosyası oluşturun. Önceki adımdaki disk kaynak kimliğiyle güncelleştirin
volumeHandle
.apiVersion: v1 kind: PersistentVolume metadata: annotations: pv.kubernetes.io/provisioned-by: disk.csi.azure.com name: pv-azuredisk spec: capacity: storage: 20Gi accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain storageClassName: managed-csi csi: driver: disk.csi.azure.com volumeHandle: /subscriptions/<subscriptionID>/resourceGroups/MC_myAKSCluster_myAKSCluster_eastus/providers/Microsoft.Compute/disks/myAKSDisk volumeAttributes: fsType: ext4
PersistentVolumeClaim ile PersistentVolume kullanan bir pvc-azuredisk.yaml dosyası oluşturun.
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: pvc-azuredisk spec: accessModes: - ReadWriteOnce resources: requests: storage: 20Gi volumeName: pv-azuredisk storageClassName: managed-csi
komutunu kullanarak
kubectl apply
PersistentVolume ve PersistentVolumeClaim oluşturun ve oluşturduğunuz iki YAML dosyasına başvurun.kubectl apply -f pv-azuredisk.yaml kubectl apply -f pvc-azuredisk.yaml
Komutunu kullanarak PersistentVolumeClaim'inizin oluşturulduğunu ve PersistentVolume'a
kubectl get pvc
bağlı olduğunu doğrulayın.kubectl get pvc pvc-azuredisk
Komutun çıktısı aşağıdaki örneğe benzer:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE pvc-azuredisk Bound pv-azuredisk 20Gi RWO 5s
PersistentVolumeClaim'inize başvurmak için bir azure-disk-pod.yaml dosyası oluşturun.
apiVersion: v1 kind: Pod metadata: name: mypod spec: nodeSelector: kubernetes.io/os: linux containers: - image: mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine name: mypod resources: requests: cpu: 100m memory: 128Mi limits: cpu: 250m memory: 256Mi volumeMounts: - name: azure mountPath: /mnt/azure volumeMounts volumes: - name: azure persistentVolumeClaim: claimName: pvc-azuredisk
Komutunu kullanarak
kubectl apply
yapılandırmayı uygulayın ve birimi bağlayın.kubectl apply -f azure-disk-pod.yaml
Kaynakları temizleme
Bu makalede oluşturulan kaynakları tamamladığınızda komutunu kullanarak kubectl delete
bunları kaldırabilirsiniz.
# Remove the pod
kubectl delete -f azure-pvc-disk.yaml
# Remove the persistent volume claim
kubectl delete -f azure-pvc.yaml
Sonraki adımlar
- Azure Diskler depolaması için CSI sürücüsünü kullanmayı öğrenmek için bkz. CSI sürücüsüyle Azure Diskleri depolamayı kullanma.
- İlişkili en iyi yöntemler için bkz. AKS'de depolama ve yedeklemeler için en iyi yöntemler.