Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Azure Container Storage kapsayıcılar için yerel olarak oluşturulmuş bulut tabanlı bir birim yönetimi, dağıtımı ve düzenleme hizmetidir. Bu makalede, Kubernetes iş yükleriniz için arka uç depolama alanı olarak Azure Elastic SAN kullanmak üzere Azure Kapsayıcı Depolama'yı nasıl yapılandırabileceğiniz gösterilmektedir.
Önemli
Bu makale, yerel NVMe disk ve yedekleme depolama türleri olarak Azure Elastic SAN destekleyen Azure Container Storage (sürüm 2.x.x) için geçerlidir. Önceki sürümlerle ilgili ayrıntılar için bkz. Azure Container Storage (sürüm 1.x.x) belgeleri.
Azure Elastic SAN nedir?
Azure Elastic SAN yönetilen, paylaşılan bir blok depolama hizmetidir. IOPS ve aktarım hızı dahil olmak üzere merkezi bir depolama kapasitesi ve performans havuzu sağlar. Bu havuzdan, birden çok birim oluşturur ve bunları birçok işlem kaynağına eklersiniz. Elastik SAN, her iş yükü için ayrı ayrı diskleri sağlamak ve ayarlamak yerine tek bir kapasite havuzundan depolama ayırır ve performansı ekli birimler arasında dağıtır. Bu yaklaşım, talebin zaman içinde değiştiği ve bir birimdeki kullanılmayan performansın diğer birimlere hizmet ettiği birçok dinamik iş yüküne sahip ortamlara uygundur. Elastik SAN genellikle birçok birim veya düğümde paylaşılan, ölçeklenebilir blok depolama için kullanılır. Ayrıca, orkestrasyonlu iş yükleri için daha hızlı birim ekleme ve ayırma, düğüm başına daha yüksek hacim yoğunluğu ve depolama kapasitesi ile performansının merkezi olarak sağlanması ve yönetilmesi konularında destek sunar.
Azure Kapsayıcı Depolama aracılığıyla Elastik SAN kapasitesinin genişletilmesi şu anda desteklenmemektedir. Elastic SAN'ı doğrudan Azure portalından veya Azure CLI kullanarak yeniden boyutlandırabilirsiniz.
Önkoşullar
Azure aboneliğiniz yoksa başlamadan önce free hesabı oluşturun.
Bu makale Azure CLI sürüm v2.83.0 veya üzerini gerektirir. Daha fazla bilgi için bkz. Azure CLI nasıl yüklenir? Sorunlar oluşursa
aks-previewgibi uzantıları devre dışı bırakın. Uzantıları gerektiği gibi yükleyin veya güncelleştirin:az extension add --upgrade --name k8s-extension-
az extension add --upgrade --name elastic-san(Yalnızca elastik SAN)
Kubernetes komut satırı istemcisine ihtiyacınız vardır.
kubectlAzure Cloud Shell kullanıyorsanız zaten yüklüdür. komutunu çalıştırarakaz aks install-cliyerel olarak yükleyebilirsiniz.Hedef bölgenizin Azure Kapsayıcı Depolama bölgelerinde desteklenip desteklenmediğini denetleyin.
yükleme yönergelerine bakın ve Azure Kapsayıcı Depolama'nın düzgün yüklendiğinden emin olun.
Elastik SAN'ı abonelikte ilk kez kullanıyorsanız şu tek seferlik kayıt komutunu çalıştırın:
az provider register --namespace Microsoft.ElasticSan
İzinleri ayarlama
Azure Kapsayıcı Depolama'nın Elastik SAN'ı dağıtabilmesi için Azure Container Storage Operator rolünü AKS yönetilen kimliğine atamanız gerekir. Bu adımı tamamlamak için Azure aboneliğinizde Azure Kapsayıcı Depolama Sahibi rolüne veya Azure Kapsayıcı Depolama Katkıda Bulunan rolüne ihtiyacınız vardır.
AKS Yönetilen Kimliğinize Azure Container Storage Operator rolü atamak için aşağıdaki komutları çalıştırın. , <resource-group>ve <cluster-name> değerlerini kendi değerlerinizle değiştirmeyi <azure-subscription-id>unutmayın. Kapsamı, örneğin /subscriptions/<azure-subscription-id>/resourceGroups/<resource-group>kaynak grubunuzla da daraltabilirsiniz.
export AKS_MI_OBJECT_ID=$(az aks show --name <cluster-name> --resource-group <resource-group> --query "identityProfile.kubeletidentity.objectId" -o tsv)
az role assignment create --assignee $AKS_MI_OBJECT_ID --role "Azure Container Storage Operator" --scope "/subscriptions/<azure-subscription-id>"
Sağlama modeli seçme
Azure Kapsayıcı Depolama, Elastik SAN'ı Azure Kubernetes Service (AKS) ile kullanmanın üç yolunu destekler:
- Dynamic provisioning: Azure Container Storage, elastik SAN birim gruplarını ve birimleri isteğe bağlı olarak oluşturur.
- Önceden sağlanmış Elastik SAN ve birim grubu: Önce Elastik SAN ve birim grubunu oluşturursunuz, ardından Azure Container Storage bu mevcut kaynaklar içinde birimleri sağlar.
- Statik sağlama: Elastik SAN, birim grubu ve birimi önceden oluşturur, ardından birimi statik olarak tanımlanmış kalıcı veri birimi (PV) olarak Kubernetes'e sunarsınız.
Aşağıdaki bölümlerde her model için depolama sınıfı yapılandırma gösterilmektedir.
Elastik SAN'ın dinamik sağlanması
Varsayılan depolama sınıfı oluşturma
gibi storageclass.yamlbir YAML bildirim dosyası oluşturun ve aşağıdaki belirtimi kullanın.
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: azuresan-csi
provisioner: san.csi.azure.com
reclaimPolicy: Delete
volumeBindingMode: Immediate
allowVolumeExpansion: true
Bu depolama sınıfıyla sağlanan varsayılan Elastik SAN kapasitesi 1 TiB'dir.
Alternatif olarak, Terraform kullanarak depolama sınıfını oluşturabilirsiniz.
Aşağıdaki
main.tfgibi bir yapılandırma oluşturarak depolama sınıfını yönetmek için Terraform kullanın. Ortamınız için gerektiğinde sağlayıcı sürümünü veya kubeconfig yolunu güncelleştirin.terraform { required_version = ">= 1.5.0" required_providers { kubernetes = { source = "hashicorp/kubernetes" version = "~> 3.0" } } } provider "kubernetes" { config_path = "~/.kube/config" } resource "kubernetes_storage_class_v1" "azuresan_csi" { metadata { name = "azuresan-csi" } storage_provisioner = "san.csi.azure.com" reclaim_policy = "Delete" volume_binding_mode = "Immediate" allow_volume_expansion = true }Yapılandırmayı başlatın ve uygulayın.
terraform init terraform apply
Özel Elastik SAN kapasitesine sahip bir depolama sınıfı oluşturma
Varsayılan 1 TiB'den farklı bir başlangıç kapasitesine ihtiyacınız varsa, depolama sınıfında parametresini initialStorageTiB ayarlayın.
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: azuresan-csi
provisioner: san.csi.azure.com
reclaimPolicy: Delete
volumeBindingMode: Immediate
allowVolumeExpansion: true
parameters:
initialStorageTiB: "10"
Özel uç nokta ile depolama sınıfı oluşturma
Özel uç nokta, sanal ağınızdaki özel bir IP adresi üzerinden Elastik SAN birim grubunuzla bağlantı kurmanızı sağlar. Özel uç nokta kullanımı için, birim sağlanması sırasında SAN CSI sürücüsünün özel uç noktalar oluşturmasına ve yönetmesine izin vermek üzere, kubelet yönetilen kimliğine AKS tarafından yönetilen kaynak grubunda Network Contributor rolü atanmış olmalıdır.
AKS yönetilen kimliğinize Network Contributor rolünü atamak için aşağıdaki komutları çalıştırın. , <resource-group>ve <cluster-name><azure-subscription-id> değerlerini kendi değerlerinizle değiştirmeyi <your-node-resource-group>unutmayın.
export AKS_MI_OBJECT_ID=$(az aks show --name <cluster-name> --resource-group <resource-group> --query "identityProfile.kubeletidentity.objectId" -o tsv)
az role assignment create --assignee $AKS_MI_OBJECT_ID --role "Network Contributorr" --scope "/subscriptions/<azure-subscription-id><your-node-resource-group>"
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: azuresan-csi
provisioner: san.csi.azure.com
reclaimPolicy: Delete
volumeBindingMode: Immediate
allowVolumeExpansion: true
parameters:
volumegroup: "esan-vg"
networkEndpointType: "privateEndpoint"
Note
Ağ uç noktası türü birim grubu oluşturma zamanında belirlenir ve daha sonra değiştirilemez. Birim grubu varsayılan hizmet uç noktası yapılandırması kullanılarak oluşturulduysa, özel uç nokta isteyen bir StorageClass ile kullanılamaz. Benzer şekilde, özel uç nokta kullanılarak oluşturulan birim grubu, hizmet uç noktasına dayalı StorageClasses ile kullanılamaz.
Farklı bir abonelikte Elastik SAN sağlamak için bir depolama sınıfı oluşturma
Azure Kapsayıcı Depolama, AKS kümesinden farklı bir abonelikte bulunan Elastik SAN'dan birimleri sağlamayı ve eklemeyi destekler. Bu, uyumluluk, idare veya paylaşılan altyapı modelleri için işlem ve depolamanın abonelikler arasında yalıtıldığı senaryolara olanak tanır.
Abonelikler arası sağlamayı kullanmadan önce aşağıdakilerden emin olun:
- Hedef abonelik, Elastik SAN kaynakları için mevcut bir kaynak grubunu içerir.
- AKS kümesi kubelet yönetilen kimliği, hedef kaynak grubunda aşağıdaki rollerden birine sahiptir:
- Contributor
- Azure Kapsayıcı Depolama İşleci
- AKS kümesi ile Elastik SAN arasındaki ağ bağlantısı, özellikle özel uç nokta senaryoları için düzgün yapılandırılır.
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: azuresan-csi
provisioner: san.csi.azure.com
reclaimPolicy: Delete
volumeBindingMode: Immediate
allowVolumeExpansion: true
parameters:
subscriptionId: <external-subcriptionId> # Target subscription Id for which you have admin access
resourceGroup: <external-rg> # Existing resource group in target subscription
Önceden sağlanan Elastik SAN ve birim grupları
Elastik SAN veya Elastik SAN ve birim grubu oluşturup depolama sınıfındaki bu kaynaklara başvurabilirsiniz.
Önceden sağlanan Elastik SAN için depolama sınıfı oluşturma
Henüz Azure Container Storage yüklü değilse yükleyin.
AKS kümesinin yönetilen kaynak grubunu tanımlayın.
kubectl get node -o jsonpath={range .items[*]}{.spec.providerID}{"\n"}{end}Sağlayıcı kimliğinde
/resourceGroup/sonrasında düğüm kaynak grubu görünür.Yönetilen kaynak grubunda bir Elastik SAN oluşturun.
az elastic-san create --resource-group <node-resource-group> --name <san-name> --location <node-region> --sku "{name:Premium_LRS,tier:Premium}" --base-size-tib 1 --extended-capacity-size-tib 1Elastik SAN'a başvuran bir depolama sınıfı oluşturun:
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: azuresan-csi provisioner: san.csi.azure.com reclaimPolicy: Delete volumeBindingMode: Immediate allowVolumeExpansion: true parameters: san: <san-name> # replace with the name of your precreated Elastic SAN
Önceden sağlanan Elastik SAN ve birim grubu için depolama sınıfı oluşturma
Önceden sağlanan Elastik SAN için depolama sınıfı oluşturma bölümünde yer alan adımları izleyerek yönetilen kaynak grubunda bir Elastik SAN oluşturun.
Birim grubu oluşturun.
Sanal ağ (VNet) bilgilerini alın.
az network vnet list -g <node-resource-group> --query [].name -o tsvAlt ağ bilgilerini alın.
az network vnet subnet list -g <node-resource-group> --vnet-name <vnet-name> --query [].name -o tsvHizmet uç noktasını güncelleştirin.
az network vnet subnet update -g <node-resource-group> --vnet-name <vnet-name> --name <subnet-name> --service-endpoints "Microsoft.Storage"Önemli
AKS kümeniz farklı alt ağlarda birden çok düğüm havuzu kullanıyorsa, Elastik SAN birim grubu ağ ACL'lerine tüm düğüm havuzu alt ağ kimliklerini eklemeniz gerekir. Elastik SAN birim grupları yalnızca birim grubu kurallarında açıkça yetkilendirilmiş sanal ağ alt ağlarından erişime izin verir ve diğer alt ağlardan gelen istekler varsayılan olarak engellenir.
Birim grubunu oluşturun.
az elastic-san volume-group create --resource-group <node-resource-group> --elastic-san-name <san-name> --name <volume-group-name> --network-acls '{"virtual-network-rules":[{"id":"<subnet-id>","action":"Allow"}]}'Elastik SAN ve birim grubuna başvuran bir depolama sınıfı oluşturun:
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: azuresan-csi provisioner: san.csi.azure.com reclaimPolicy: Delete volumeBindingMode: Immediate allowVolumeExpansion: true parameters: san: <san-name> # replace with the name of your precreated Elastic SAN volumegroup: <volume-group-name> # replace with the name of your precreated volume group
Manifesti uygula ve depolama sınıfı oluşturmayı doğrula
Bildirimi uygulayın:
kubectl apply -f storageclass.yaml
Depolama sınıfının oluşturulduğunu doğrulayın:
kubectl get storageclass azuresan-csi
Aşağıdakine benzer bir çıktı görmeniz gerekir:
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
azuresan-csi san.csi.azure.com Delete Immediate true 10s
Kalıcı birim talebi oluştur
Kalıcı birim talebi (PVC), depolama sınıfına göre depolamayı otomatik olarak sağlar. Yeni depolama sınıfını kullanarak bir PVC oluşturmak için bu adımları izleyin.
gibi
acstor-pvc.yamlbir YAML bildirim dosyası oluşturun.apiVersion: v1 kind: PersistentVolumeClaim metadata: name: managedpvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi storageClassName: azuresan-csiPVC'yi oluşturmak için manifesti uygulayın.
kubectl apply -f acstor-pvc.yamlAşağıdakine benzer bir çıktı görmeniz gerekir:
persistentvolumeclaim/managedpvc created
Aşağıdaki komutu çalıştırarak PVC'nin durumunu doğrulayabilirsiniz:
kubectl describe pvc managedpvc
PVC oluşturulduğunda, pod tarafından kullanılmaya hazır olur.
Pod kurma ve kalıcı birim bağlama
Performans değerlendirme ve iş yükü simülasyonu için Esnek G/Ç Testi (fio) kullanarak bir pod oluşturun ve kalıcı birim için bir bağlantı yolu belirtin.
claimName için, PVC'yi oluştururken kullandığınız ad değerini kullanın.
gibi
acstor-pod.yamlbir YAML bildirim dosyası oluşturun.apiVersion: v1 kind: Pod metadata: name: fiopod spec: containers: - name: fio image: mayadata/fio args: ["sleep", "1000000"] volumeMounts: - mountPath: "/volume" name: iscsi-volume volumes: - name: iscsi-volume persistentVolumeClaim: claimName: managedpvcPodu dağıtmak için bildirimi uygulayın.
kubectl apply -f acstor-pod.yamlBu örneğe benzer bir çıktı görmeniz gerekir:
pod/fiopod createdPod'un çalışıp çalışmadığını ve PVC'nin bağlı olup olmadığını denetleyin:
kubectl describe pod fiopod kubectl describe pvc managedpvcGeçerli durumunu görmek için fio testini denetleyin:
kubectl exec -it fiopod -- fio --name=benchtest --size=800m --filename=/volume/test --direct=1 --rw=randrw --ioengine=libaio --bs=4k --iodepth=16 --numjobs=8 --time_based --runtime=60
Artık depolama için Elastik SAN kullanan bir poda sahipsiniz.
Elastik SAN biriminin statik sağlanması
Elastik SAN'da birimi önceden oluşturabilir ve statik PV olarak Kubernetes'e sunabilirsiniz. Elastik SAN ve birim grubunu oluşturmak için, Önceden sağlanan bir Elastik SAN ve birim grubu için depolama sınıfı oluşturma adımlarını kullanın. Bu adımları Azure portalında Elastic SAN hizmeti dikey penceresini kullanarak da gerçekleştirebilirsiniz.
Varsayılan Elastik SAN depolama sınıfı oluşturma
Varsayılan elastik SAN depolama sınıfını oluşturmak için aşağıdaki YAML bildirimini kullanın:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: azuresan-csi
provisioner: san.csi.azure.com
reclaimPolicy: Delete
volumeBindingMode: Immediate
allowVolumeExpansion: true
Depolama sınıfını oluşturmak için bildirimi uygulayın:
kubectl apply -f storageclass.yaml
Depolama sınıfını doğrulayın:
kubectl get storageclass azuresan-csi
Elastik SAN birimi oluşturma
az elastic-san volume create -g <node-resource-group> -e <san-name> -v <volume-group-name> -n <volume-name> --size-gib 5
Elastik SAN biriminin Azure Resource Manager (ARM) kimliğini not edin. Kalıcı birim YAML'deki değer için volumeHandle kullanın.
Elastik SAN biriminizin iSCSI Tam Adını (IQN) ve targetPortal değerlerini alın:
az elastic-san volume show --name <volume-name> --resource-group <rg-name> --elastic-san-name <san-name>
Kalıcı birim oluştur
gibi pv_static.yamlbir YAML bildirim dosyası oluşturun.
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-san
annotations:
pv.kubernetes.io/provisioned-by: san.csi.azure.com
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: azuresan-csi
csi:
driver: san.csi.azure.com
volumeHandle: #{rg}#{san}#{vg}#{vol}
volumeAttributes:
# iqn: "<retrieved from pre-provisioned volume>"
# targetPortal: "<retrieved from pre-provisioned volume>"
numsessions: "8"
Manifesti uygulayarak kalıcı birimi oluşturun.
kubectl apply -f pv_static.yaml
Statik bir kalıcı birim talebi oluşturun
gibi pvc_static.yamlbir YAML bildirim dosyası oluşturun.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-san
spec:
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
volumeName: pv-san
storageClassName: azuresan-csi
PVC'yi oluşturmak için manifesti uygulayın.
kubectl apply -f pvc_static.yaml
Statik hacmi kullanan bir pod oluşturun
gibi pod.yamlbir YAML bildirim dosyası oluşturun.
apiVersion: v1
kind: Pod
metadata:
name: pod-san-static
spec:
nodeSelector:
kubernetes.io/os: linux
containers:
- image: mcr.microsoft.com/oss/nginx/nginx:1.19.5
name: nginx
ports:
- containerPort: 80
protocol: TCP
volumeMounts:
- mountPath: /var/www
name: iscsi-volume
volumes:
- name: iscsi-volume
persistentVolumeClaim:
claimName: pvc-san
Pod oluşturmak için manifest dosyasını uygulayın.
kubectl apply -f pod.yaml
Ayrıca bakınız
- Container Storage Azure nedir?
- Azure Elastic SAN nedir?
- Azure Kapsayıcı Depolama'yı AKS ile yükleyin
Azure Container Storage - Azure Elastic SAN birimleri için şifrelemeyi yapılandırın
- Kalıcı birimleri yeniden boyutlandırma
- Azure Elastic SAN birimleriyle birim anlık görüntüleri
Azure Container Storage