Aracılığıyla paylaş


Azure Arc tarafından etkinleştirilen AKS'deki uygulamalar için depolama seçenekleri

Şunlar için geçerlidir: Azure Yerel 22H2'de AKS, Windows Server'da AKS

Azure Arc tarafından etkinleştirilen Azure Kubernetes Service'i kullanarak AKS dağıtımlarında çalışan uygulamaların verileri depolaması ve alması gerekebilir. Bazı uygulama iş yüklerinde, podlar silindiğinde veriler gereksiz bir düğümde yerel ve hızlı depolama kullanabilir (Kubernetes, bir uygulamanın örneğini çalıştırmak için podları kullanır).

Diğer iş yükleri, daha düzenli veri hacimlerinde kalıcı depolama gerektirebilir. Birden çok pod aynı veri birimlerini paylaşmalı veya pod farklı bir düğümde yeniden zamanlanmışsa veri birimlerini yeniden eklemiş olabilir. Ayrıca, podlar hassas veriler veya uygulama yapılandırma bilgileri içeriyorsa bir depolama seçeneğine ihtiyacınız olabilir.

Küme yöneticisini ve düğümünü gösteren mimari depolama görüntüsü.

Bu makalede AKS Arc'taki uygulamalarınıza depolama sağlayan temel kavramlar açıklanır; örneğin:

  • Birimler
  • Kalıcı birimler
  • Depolama sınıfları
  • Kalıcı birim talepleri (PVC)

Birimler

Uygulamaların genellikle verileri depolayabilmesi ve alabilmesi gerekir. Kubernetes genellikle tek tek podları geçici ve tek kullanımlık kaynaklar olarak değerlendirdiği için, uygulamaların verileri kullanması ve kalıcı hale getirmek için farklı yaklaşımlar kullanılabilir. Birim, podlar arasında ve uygulama yaşam döngüsü boyunca verileri depolamanın, almanın ve kalıcı hale getirmek için kullanılan bir yolu temsil eder.

Kubernetes'te birimler, bilgilerin depolandığı ve alındığı geleneksel bir birimden fazlasını temsil edebilir. Kubernetes birimleri, kapsayıcıların kullanması için bir pod'a veri eklemenin bir yolu olarak da kullanılabilir. Bazı yaygın Kubernetes birim türleri şunlardır:

  • emptyDir - Bu birim genellikle pod için geçici alan olarak kullanılır. Pod içindeki tüm kapsayıcılar birimdeki verilere erişebilir. Bu birim türüne yazılan veriler yalnızca podun kullanım ömrü boyunca kalır. Pod silindiğinde birim silinir. Bu birim genellikle temel alınan yerel düğüm disk depolama alanını kullanır, ancak yalnızca düğümün belleğinde de bulunabilir.

  • secret - Bu birim, parolalar gibi hassas verileri podlara eklemek için kullanılır. İlk olarak Kubernetes API'sini kullanarak bir gizli dizi oluşturursunuz. Podunuzu veya dağıtımınızı tanımlarken belirli bir gizli dizi isteyebilirsiniz. Gizli diziler yalnızca gerektiren zamanlanmış podu olan düğümlere sağlanır ve gizli dizi diske yazılmaz, tmpfs içinde depolanır. Gizli dizi gerektiren bir düğümdeki son pod silindiğinde, gizli dizi düğümün tmpfs'lerinden silinir. Gizli diziler belirli bir ad alanında depolanır ve yalnızca aynı ad alanı içindeki podlar tarafından erişilebilir.

  • configMap - Bu birim türü, uygulama yapılandırma bilgileri gibi anahtar-değer çifti özelliklerini podlara eklemek için kullanılır. Kapsayıcı görüntüsünde uygulama yapılandırma bilgilerini tanımlamak yerine, kolayca güncelleştirilebilen ve dağıtılan yeni pod örneklerine uygulanabilen bir Kubernetes kaynağı olarak tanımlayabilirsiniz. Gizli dizi kullanmaya benzer şekilde, önce Kubernetes API'sini kullanarak bir ConfigMap oluşturursunuz. Bu ConfigMap daha sonra bir pod veya dağıtım tanımladığınızda istenebilir. ConfigMap'ler belirli bir ad alanında depolanır ve yalnızca aynı ad alanı içindeki podlar tarafından erişilebilir.

Kalıcı birimler

Pod yaşam döngüsünün parçası olarak tanımlanan ve oluşturulan birimler yalnızca pod silinene kadar mevcut olur. Podlar genellikle özellikle StatefulSets'te bir bakım olayı sırasında pod farklı bir konakta yeniden zamanlanırsa depolamalarının kalmasını bekler. Kalıcı birim, Kubernetes API'si tarafından oluşturulan ve yönetilen ve tek bir podun ömründen daha uzun süre var olabilecek bir depolama kaynağıdır.

VHDX tarafından yedeklenen VE ReadWriteOnce olarak bağlanan ve tek seferde tek bir düğüm tarafından erişilebilen AKS disk birimlerini kullanabilirsiniz. İsterseniz, SMB veya NFS dosya paylaşımları tarafından yedeklenen AKS dosya birimlerini de kullanabilirsiniz. Bunlar ReadWriteMany olarak bağlanır ve aynı anda birden çok düğümde kullanılabilir.

Küme yöneticisi statik olarak kalıcı bir birim oluşturabilir veya birim Kubernetes API sunucusu tarafından dinamik olarak oluşturulabilir. Bir pod zamanlanmışsa ve şu anda kullanılabilir olmayan bir depolama alanı isterse Kubernetes, temel alınan VHDX dosyasını oluşturabilir ve pod'a ekleyebilir. Dinamik sağlama, oluşturulması gereken depolama türünü belirlemek için StorageClass kullanır.

Depolama sınıfları

Depolamanın farklı katmanlarını (ve konumunu) tanımlamak için bir StorageClass oluşturabilirsiniz. StorageClass ayrıca reclaimPolicy'yi de tanımlar. Bu reclaimPolicy , pod silindiğinde ve kalıcı birim artık gerekli olmayabilirken temel depolama kaynağının davranışını denetler. Temel alınan depolama kaynağı silinebilir veya gelecekteki bir pod ile kullanılmak üzere tutulabilir.

AKS Arc'ta varsayılan depolama sınıfı otomatik olarak oluşturulur ve CSV kullanarak VHDX destekli birimler oluşturur. Geri kazanma ilkesi, kullanılan kalıcı birim silindiğinde temel alınan VHDX'in silinmesini sağlar. Depolama sınıfı ayrıca kalıcı birimleri genişletilebilir olacak şekilde yapılandırdığından, kalıcı birim talebinizi yeni boyutla düzenlemeniz yeterlidir.

Kalıcı birim için storageclass belirtilmezse varsayılan StorageClass kullanılır. Kalıcı birimler istediğinizde uygun depolama alanını kullandıklarından emin olun. Ek gereksinimler için bir StorageClass oluşturabilirsiniz.

Kalıcı birim talepleri

PersistentVolumeClaim, belirli bir StorageClass ve boyutunun ReadWriteOnce veya ReadWriteMany depolamasını ister. Kubernetes API sunucusu, tanımlanan StorageClass temelinde talebi yerine getirmek için mevcut kaynak yoksa AKS Arc'ta temel depolama kaynağını dinamik olarak sağlayabilir. Pod tanımı, birim pod'a bağlandıktan sonra birim bağlamasını içerir.

PersistentVolume, bunu isteyen pod'a kullanılabilir bir depolama kaynağı atandıktan sonra PersistentVolumeClaim'e bağlanır. Kalıcı birimlerin taleplere 1:1 eşlemesi vardır.

Aşağıdaki örnek YAML bildirimi, varsayılan StorageClass'ı kullanan ve 5Gi diski isteyen kalıcı bir birim talebi gösterir:

apiVersion: v1 
kind: PersistentVolumeClaim 
metadata: 
  name: aks-hci-vhdx 
spec: 
  accessModes: 
  - ReadWriteOnce 
  storageClassName: default 
  resources: 
    requests: 
      storage: 5Gi 

Pod tanımı oluşturduğunuzda, istenen depolamayı istemek için kalıcı birim talebini belirtirsiniz. Ardından, uygulamalarınızın verileri okuması ve yazması volumeMount için öğesini de belirtirsiniz. Aşağıdaki örnek YAML bildirimi, önceki kalıcı birim talebi tarafından konumundaki bir birimi /mnt/aks-hcibağlamak için nasıl kullanılabileceğini gösterir:

kind: Pod 
apiVersion: v1 
metadata: 
  name: nginx 
spec: 
  containers: 
    - name: myfrontend 
      image: k8s.gcr.io/nginx 
      volumeMounts: 
      - mountPath: "/mnt/aks-hci" 
        name: volume
  nodeSelector:
      kubernetes.io/os: linux
  volumes: 
    - name: volume 
      persistentVolumeClaim: 
        claimName: aks-hci-vhdx 

Aşağıdaki örnekte, bir birimin Bir Windows kapsayıcısına nasıl bağlanacağınız ve sürücü harfi ile yolu nasıl belirteceğiniz gösterilmektedir:

volumeMounts: 
        - mountPath: "d:" 
          name: volume 
        - mountPath: "c:\k" 
          name: k-dir 

Sonraki adımlar