Container yönetimindeki dinamik ortamda, Kubernetes containerized uygulamaların yönetimi için de facto standart olarak ortaya çıkmıştır. Bu ekosistemin ayrılmaz bir parçası depolama yönetimidir; karmaşık bir alan olan bu alanda Azure Container Storage (ACS), basitleştirmeyi ve geliştirmeyi hedeflemektedir.
Geleneksel Bulut Depolama Entegrasyonundaki Zorluklar
Geleneksel cloud storage’ların container’lar ile entegrasyonu Container Storage Interface (CSI) sürücülerine dayanıyordu. Bu sürücüler, başlangıçta IaaS iş yükleri için tasarlanmış depolama hizmetlerini, konteyner ortamlarının ihtiyaçlarına uyacak şekilde uyarlamakla görevliydi. Ancak bu adaptasyon zorluklarla dolu değildi. Operasyonel zorluklar sıklıkla ortaya çıkıyor, uygulama kullanılabilirliği ile ilgili artan risklere yol açıyordu. CSI sürücülerindeki hataların veya uyumsuzlukların potansiyeli bu riskleri daha da karmaşık hale getiriyordu. Dahası, ölçeklenebilirlik endişeleri ve performans gecikmeleri, geliştiricilerin ve operasyon ekiplerinin başa çıkması gereken önemli konulardı.
Bu challange’ları ortadan kaldırmak için container birimleri ile oldukça uyumlu çalışan storage opsiyonu Azure tarafından public preview olarak duyuruldu.
Azure Container Storage tam olarak nedir? 🙂
OpenEBS’ten ilham alan, açık kaynaklı bir Kubernetes depolama çözümü olan Azure Container Storage, gerçekten konteyner öncelikli bir depolama deneyimi sunar. Bunun başarılması için, bir Kubernetes framework içinde mikro servis tabanlı storage controller’larını operate eden managed volume orchestration system entegre eder. Bu yenilikçi yaklaşım, depolama yönetim katmanını hem pod’lardan hem de temel depolama altyapısından ayrıştırır. Sonuç olarak, birden fazla CSI sürücüsüne olan bağımlılığı en aza indiren, basitleştirilmiş bir depolama çözümü elde edilir. Örneğin, yeni bir Azure Kubernetes cluster sağlandığında, varsayılan kurulum disk ve dosya depolaması için belirli CSI sürücülerini içerir. Ancak, Azure Container Storage ile tüm depolama türleri için tek bir CSI sürücüsü yeterlidir; bu da sistemin verimliliğini ve basitliğini gösterir.
Nasıl etkinleştiririm?
Azure container storage’ı Kubernetes cluster’larınız için etkinleştirmek için aşağıdaki yolu takip edebilirsiniz.
Önce gerekli provider’lar register edilmelidir.
az provider register --namespace Microsoft.ContainerService --wait
az provider register --namespace Microsoft.KubernetesConfiguration --wait
Sonrasında aşağıdaki komutu kullanarak Azure Container Storage’ı etkinleştirebilirsiniz.
az k8s-extension create --cluster-type managedClusters --cluster-name <cluster name> --resource-group <resource group name> --name <name of extension> --extension-type microsoft.azurecontainerstorage --scope cluster --release-train stable --release-namespace acstor
Storage pool oluşturmak için aşağıdaki yaml’ı kendinize göre düzenleyebilirsiniz.
Aşağıdaki yaml geçici disk oluşturacaktır.
apiVersion: containerstorage.azure.com/v1
kind: StoragePool
metadata:
name: ephemeraldisk
namespace: acstor
spec:
poolType:
ephemeralDisk:
diskType: temp
Storage pool üzerinden gerekli provisioning işlemini yapmak için gerekli olan PVC yaml örneği de aşağıdaki gibidir.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: ephemeralpvc
spec:
accessModes:
- ReadWriteOnce
storageClassName: acstor-ephemeraldisk
resources:
requests:
storage: 100Gi
Sonrasında ilgili pvc’yi istediğiniz pod’a volume olarak atayabilirsiniz.
Azure Container Storage’ın Temel Bileşenleri
Azure Container Storage, birkaç temel bileşenden oluşur:
- Storage Pool: Bu, depolama kaynaklarını bir araya getirerek, bunları bir Azure Kubernetes Hizmeti (AKS) cluster için bir bütün depolama varlığı olarak sunar.
- Data-Service Layer: Burada, replikasyon ve şifreleme gibi temel işlevler yönetilir ve temel depolama çözümlerinin eksik olabileceği hizmetler sağlanır.
- Protocol-Layer: NVMe üzerinden Kumaşlar (NVMe-oF) protokolünü kullanarak, bu katman Kalıcı Hacimler (PV’ler) için daha hızlı bir bağlama ve ayırma işlemi sağlar ve depolama işlemlerinin genel performansını artırır.
Azure Container Storage’ın Kurulum ve Entegrasyonu
Azure Container Storage’ı bir AKS kümesine kurmak oldukça basittir, bunun nedeni aks-preview ve k8s-extension CLI uzantılarında yapılan en son güncellemelerdir. Bu araçlar, gerekli kaynak sağlayıcılar için kayıt sürecini basitleştirir ve Azure Active Directory (AAD) rol yayılmasını yönetir, böylece sorunsuz bir kurulum sağlar. Kurulduktan sonra, Azure Container Storage çeşitli depolama seçeneklerini destekler, bunlar arasında Azure Elastic SAN, Azure Disks ve Geçici Diskler gibi farklı uygulama gereksinimlerine ve ölçeklenebilirlik gereksinimlerine uygun olanlar bulunmaktadır.
Azure Container Storage’ı bir AKS kümesiyle entegre ettikten sonra, Azure Container Storage’ın sağladığı kapsamlı ekosistemi yansıtan birkaç yeni Kubernetes resource type mevcut hale gelir. Azure Container Storage’a özgü storage class, örneğin acstor-azuredisk gibi, işlemleri kolaylaştırmak için oluşturulmuştur. Bu sınıflar, depolama kaynaklarının dinamik olarak oluşturulması ve yönetilmesini desteklemek üzere tasarlanmıştır ve container öncelikli depolama felsefesiyle uyumlu olarak çalışır.
Azure Container Storage’ın kullanımına ilişkin bir örnek, bir storage pool resource’u oluşturmaktır; bu, bir disk pool’unun oluşturulmasına yol açar. Bu Disk Havuzu, Azure Disk’ler için bir rezervuar görevi görür ve depolama kaynaklarının verimli tahsis ve geri kazanımından sorumlu kapasite tahsis edicisi tarafından yönetilir.
PVC’ler, PV’ler ve depolama sınıfları da dahil olmak üzere çeşitli Kubernetes kaynakları arasındaki etkileşim, Azure Container Storage’ın sorunsuz entegrasyonunu ve işletme verimliliğini gösterir.
Sonuç
Azure Container Storage, Azure platformundaki Kubernetes depolama çözümlerinde önemli bir ilerleme temsil eder. Geleneksel bulut depolama entegrasyonunun doğal zorluklarını ele alarak ve konteyner-öncelikli depolama prensiplerinden yararlanarak, Azure Container Storage sağlam, verimli ve ölçeklenebilir bir çözüm sunar. Sadece Kubernetes ortamlarında depolama yönetimini basitleştirmekle kalmaz, aynı zamanda Azure’da dağıtılan konteynerleştirilmiş uygulamaların güvenilirliğini ve performansını artırır.