Azure Kubernetes Service'te (AKS) Azure Diskleriyle 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 bunu dinamik veya statik olarak sağlayabilirsiniz. Bu makalede, Azure Kubernetes Service (AKS) kümesinde Azure Diskleri ile dinamik olarak kalıcı birimler oluşturma adımları gösterilmektedir.
Not
Azure diski yalnızca ReadWriteOnce erişim modu türüyle bağlanabilir ve bu da AKS'deki bir düğümün kullanımına sunulması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 makalede aşağıdaki işlemler hakkında bilgi edinirsiniz:
- 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
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 PersistentVolumes için depolama sınıfı parametreleri
Aşağıdaki tabloda, PersistentVolumeClaim'iniz için özel bir depolama sınıfı tanımlamak için kullanabileceğiniz parametreler yer alır.
Veri Akışı Adı | Anlamı | Kullanılabilir Değer | Zorunlu | Default value |
---|---|---|---|---|
skuName | Azure Disks 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 , , btrfs Linux için, ntfs Windows için |
Hayır | ext4 Linux için, ntfs Windows için |
cachingMode | Azure Veri Diski Ana Bilgisayarı Önbellek Ayarı (PremiumV2_LRS ve UltraSSD_LRS yalnızca önbelleğe alma modunu destekler None ) |
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 veya Premium SSD v2 IOPS Özelliği (en az: 2 IOPS/GiB) | 100~160000 | Hayır | 500 |
DiskMBpsReadWrite | UltraSSD disk veya Premium SSD v2 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 |
tags | 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ı önlemek için 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ı ani artışa olanak tanıyın. İsteğe bağlı seri artış yalnızca Premium diske ve disk boyutu > 512 GB olduğunda uygulanmalıdır. Ultra ve paylaşılan disk desteklenmez. Seri 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 toplam paylaşılan disk bağlama 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 olur 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ümesi, ikisi Azure Disklerle çalışacak şekilde yapılandırılmış dört önceden oluşturulmuş depolama sınıfı içerir:
- Varsayılan depolama sınıfı standart bir SSD Azure Disk sağlar.
- Standart SSD'ler Standart depolamayı yedekler 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
- Kubernetes sürüm 1.29'dan başlayarak, Azure Kubernetes Service (AKS) kümelerini birden çok kullanılabilirlik alanına dağıttığınızda AKS artık yerleşik depolama sınıflarında yönetilen diskler oluşturmak için alanlar arası yedekli depolama (ZRS) kullanıyor.
- ZRS, Azure yönetilen disklerinizin seçtiğiniz bölgedeki birden çok Azure kullanılabilirlik alanı arasında zaman uyumlu çoğaltmasını sağlar. Bu yedeklilik stratejisi, uygulamalarınızın dayanıklılığını artırır ve verilerinizi veri merkezi hatalarına karşı korur.
- Ancak, alanlar arası yedekli depolamanın (ZRS) yerel olarak yedekli depolamaya (LRS) kıyasla daha yüksek bir maliyetle geldiğini unutmayın. Maliyet iyileştirme öncelikliyse, LRS SKU adı parametresiyle yeni bir depolama sınıfı oluşturabilir ve bunu Kalıcı Birim Talebinizde (PVC) kullanabilirsiniz.
Veri kaybı riski nedeniyle PVC boyutunun küçültülmesi 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, disk önbelleğe alma 4 TiB ve daha büyük diskler için desteklenmediğinden 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 kullanılabilen ö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 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ı, 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ına göre 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 çıktısı 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, 'D:' gibi Windows yol kuralını kullanarak 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
/mnt/azure
bağlı olduğu çalışan bir podunuz 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'te (AKS) ultra diskleri kullanma.
Azure etiketlerini kullanma
Azure etiketlerini kullanma hakkında daha fazla bilgi için bkz . Azure Kubernetes Service'te (AKS) Azure etiketlerini kullanma.
Birimi statik olarak sağlama
Bu bölümde, iş yükü tarafından kullanılmak üzere Azure Disklerinin ayrıntılarını içeren bir veya daha fazla kalıcı birim oluşturmak isteyen küme yöneticilerine yönelik yönergeler sağlanır.
Kalıcı birim için statik sağlama parametreleri
Aşağıdaki tablo, kalıcı birim tanımlamak için kullanabileceğiniz parametreleri içerir.
Veri Akışı Adı | Anlamı | Kullanılabilir Değer | Zorunlu | Default value |
---|---|---|---|---|
volumeHandle | Azure disk URI'si | /subscriptions/{sub-id}/resourcegroups/{group-name}/providers/microsoft.compute/disks/{disk-id} |
Yes | Yok |
volumeAttributes.fsType | Dosya sistemi türü | ext4 , ext3 , ext2 , xfs , , btrfs Linux 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 -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 Contributor
için Azure Kubernetes Service (AKS) yönetilen kimliğine 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
Komutun çıkışı aşağıdaki örneğe benzer:
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'lik bir 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 kaynağı kimliğiyle güncelleştirin
volumeHandle
. Windows Server kapsayıcıları için fsType parametresi için ntfs belirtin.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 PersistentVolume ve PersistentVolumeClaim'i
kubectl apply
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 çıkışı 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. Windows Server kapsayıcıları için, 'D:' gibi Windows yol kuralını kullanarak bir mountPath belirtin.
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 volumes: - name: azure persistentVolumeClaim: claimName: pvc-azuredisk
Komutunu kullanarak yapılandırmayı uygulayın ve birimi bağlayın
kubectl apply
.kubectl apply -f azure-disk-pod.yaml
Kaynakları temizleme
Bu makalede oluşturulan kaynaklarla işiniz bittiğinde 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 Disk depolamayı kullanma.
- İlişkili en iyi yöntemler için bkz . AKS'de depolama ve yedeklemeler için en iyi yöntemler.
Azure Kubernetes Service