ACK'de kalıcı depolamayı yapılandırmak için birimleri, PV'leri, PVC'leri ve StorageClass'ları anlayın.
Birimler
Konteyner dosya sistemleri geçicidir; dosyalar yeniden başlatmada kaybolur. Birimler, pod spesifikasyonunda harici depolamayı tanımlar; Kubernetes çalışma zamanında bunu konteynerlere monte eder.
ACK aşağıdaki birim türlerini destekler:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Kullanım notları:
Bir pod, farklı türler dahil olmak üzere birden çok birimi monte edebilir.
Bir pod'daki tüm konteynerler monte edilen birimleri paylaşır.
Bir birim, pod'un yaşam döngüsünü paylaşır. Pod silindikten sonra verilerin kalıcılığı birim türüne ve yapılandırmasına bağlıdır.
Kalıcı veriler için PVC'leri ve PV'leri kullanın.
PV'ler ve PVC'ler
Tüm Kubernetes birimleri kalıcı değildir. Kalıcı depolama için Kubernetes, depolamanın nasıl sağlandığını depolamanın nasıl tüketildiğinden ayıran iki nesne sunar:
Bir PV, bir düğüme benzer şekilde küme depolama kaynağıdır: pod'lar düğümleri tüketirken PVC'ler PV'leri tüketir. Bir PV, herhangi bir pod'dan bağımsız kendi yaşam döngüsüne sahiptir.
Bir PVC, bir poda benzer şekilde depolama talebidir: bir pod'un bir düğümden CPU ve bellek talep etmesi gibi, bir PVC de bir PV'den kapasite ve erişim modları talep eder.
Geliştiriciler depolama ihtiyaçlarını (PVC) belirtirken yöneticiler sağlamayı (PV) yönetir.
PV örneği
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-example
spec:
capacity:
storage: 20Gi # adjust to match the actual cloud disk size
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
csi:
driver: diskplugin.csi.alibabacloud.com
volumeHandle: <disk ID>
volumeMode: Filesystem
PVC örneği
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-example
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 20Gi
volumeName: pv-example
Bağlama kuralları
PV'ler ve PVC'ler arasında bire bir ilişki vardır: her PV'ye tam olarak bir PVC bağlanır. Bir PVC bir pod tarafından kullanılmadan önce Kubernetes aşağıdakileri karşılayan bir PV bulmalıdır:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
storage alanının çalışma şekli:
Kubernetes, PV'leri PVC'lere eşlemek ve bağlamak için
storagedeğerini kullanır.Dinamik sağlamada PVC'nin
storagedeğeri PV'nin ve altta yatan kaynağın (bulut diski gibi) kapasitesini belirler.Yeniden boyutlandırmayı destekleyen depolama türleri için PVC'nin
storagedeğeri ölçeklendirmeden sonraki hedef kapasiteyi belirler.storagemantıksal bir kapasite beyanıdır. Gerçek yazılabilir kapasitestoragealanına değil altta yatan depolama ortamına bağlıdır.
Birim erişim modları
Bir birimin nasıl monte edilebileceğini tanımlamak için accessModes alanını kullanın:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Birimler nasıl sağlanır
ACK statik ve dinamik olmak üzere iki sağlama iş akışını destekler.
Statik sağlama
Statik sağlamada küme yöneticisi PV'leri önceden oluşturur. Bulut diskleri, NAS dosya sistemleri ve OSS paketleri statik sağlamayı destekler.
Yönetici, pod gereksinimlerine göre depolama kaynaklarını (örneğin bulut diskleri veya NAS dosya sistemleri) tahsis eder.
Yönetici, kapasite ve yapılandırma dahil olmak üzere bu kaynakları tanımlayan PV'ler oluşturur.
Geliştiriciler iş yüklerinin ihtiyaç duyduğu şeyleri beyan eden PVC'ler oluşturur.
Bir pod oluşturulduğunda Kubernetes PVC'yi eşleşen bir PV'ye bağlar.
Dinamik sağlama
Dinamik sağlamada bir CSI sağlayıcısı bir PVC oluşturulduğunda PV'leri otomatik olarak oluşturur. Bulut diskleri, NAS dosya sistemleri ve OSS paketleri dinamik sağlamayı destekler.
Yönetici, depolama türünü ve sağlayıcıyı tanımlayan bir StorageClass oluşturur. Örneğin
diskplugin.csi.alibabacloud.combulut disklerini sağlar.Geliştiriciler bir StorageClass'a başvuran PVC'ler oluşturur. Manuel PV oluşturmaya gerek yoktur.
Bir pod oluşturulduğunda CSI sağlayıcısı StorageClass'ı okur, bir PV ve altta yatan depolama kaynağı oluşturur ve PV'yi PVC'ye bağlar.
Dinamik sağlama üç avantaj sunar:
Otomatikleştirilmiş yaşam döngüsü yönetimi: Sağlayıcı PV oluşturma ve silme işlemlerini otomatik olarak yürütür.
Azaltılmış operasyonel yük: Yöneticiler tek tek PV'ler yerine StorageClass'ları yönetir.
Kapasite tutarlılığı: PV ve altta yatan kaynak her zaman PVC tarafından talep edilen kapasiteyle eşleşir.
StorageClass'lar
StorageClass, dinamik sağlama için kullanılan depolama türünü, sağlayıcıyı ve parametreleri tanımlar. Bir PVC bir StorageClass'a başvurduğunda ve eşleşen bir PV olmadığında Kubernetes sağlayıcıyı tetikleyerek bir PV ve altta yatan depolamayı otomatik olarak oluşturur.
StorageClass örneği
Aşağıdaki StorageClass Alibaba Cloud disklerini sağlar:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: alicloud-disk-topology-alltype
provisioner: diskplugin.csi.alibabacloud.com
parameters:
type: cloud_auto,cloud_essd,cloud_ssd,cloud_efficiency
fstype: ext4
diskTags/a: b
encrypted: "false"
performanceLevel: PL1
provisionedIops: "40000"
burstingEnabled: "false"
reclaimPolicy: Delete
allowVolumeExpansion: true
volumeBindingMode: WaitForFirstConsumer
Anahtar parametreler
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
volumeBindingMode seçimi:
|
|
|
|
|
|
|
|
|
|
|
|
Çok alanlı kümelerde WaitForFirstConsumer kullanın. Bulut diskleri alanlar arasında monte edilemez. Bir PV A Alanındaysa ancak bir pod B Alanına zamanlanırsa pod başlatılamaz. WaitForFirstConsumer ile sağlayıcı pod zamanlamasını bekler ardından diski pod'un bulunduğu alanda oluşturur.
WaitForFirstConsumer nasıl çalışır:
Bir PVC oluşturulduğunda sağlayıcı bir pod onu tüketene kadar bekler. Zamanlayıcı pod'u bir düğüme yerleştirir ve sonucu (bölge ve düğüm) PVC meta verilerine yazar. Sağlayıcı daha sonra doğru alanda PV'yi ve diski oluşturur.
Varsayılan StorageClass
Varsayılan StorageClass, StorageClass adı belirtilmeyen herhangi bir PVC için otomatik olarak bir PV sağlar.
ACK kümeleri varsayılan bir StorageClass içermez. Varsayılan StorageClass, storageClassName olmayan tüm PVC'ler için geçerlidir. Kümeniz birden çok depolama türü kullanıyorsa yanlış türü sağlayabilir. Tüm PVC'ler aynı depolama türünü kullanıyorsa yalnızca bu durumda etkinleştirin.
Varsayılan StorageClass ayarlama:
alicloud-disk-topology-alltype öğesini varsayılan olarak işaretleyin:
kubectl annotate storageclass alicloud-disk-topology-alltype storageclass.kubernetes.io/is-default-class=true
Değişikliği doğrulayın:
kubectl get sc
Beklenen çıktı:
NAME PROVISIONER AGE
alicloud-disk-topology-alltype (default) diskplugin.csi.alibabacloud.com 96m
StorageClass belirtmeden PVC oluşturma:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: disk-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 20Gi
Küme alicloud-disk-topology-alltype kullanarak otomatik olarak bir bulut diski PV'si oluşturur.
kubectl get pvc
Beklenen çıktı:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
disk-pvc Bound d-bp18pbai447qverm**** 20Gi RWO alicloud-disk-topology-alltype 49s
Varsayılan StorageClass'ı kaldırma:
kubectl annotate storageclass alicloud-disk-topology-alltype storageclass.kubernetes.io/is-default-class-
ACK tarafından sağlanan StorageClass'lar
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
alicloud-disk-topology-alltype StorageClass'ı en iyi kullanılabilir disk türünü seçer:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: alicloud-disk-topology-alltype
parameters:
type: cloud_essd,cloud_ssd,cloud_efficiency
provisioner: diskplugin.csi.alibabacloud.com
reclaimPolicy: Delete
allowVolumeExpansion: true
volumeBindingMode: WaitForFirstConsumer
Sonraki adımlar
Tüm depolama türleri ve kılavuzlar için bkz. Depolama.
Belirli depolama türlerini sağlamak için: