Možnosti úložiště pro aplikace v Azure Kubernetes Service (AKS)

Aplikace spuštěné v Azure Kubernetes Service (AKS) můžou potřebovat ukládat a načítat data. Zatímco některé úlohy aplikací můžou využívat místní a rychlé úložiště na nepotřebných, vyprázdněných uzlech, jiné vyžadují úložiště, které se udržuje na pravidelných datových svazcích v rámci platformy Azure.

Více podů může vyžadovat:

  • Sdílejte stejné datové svazky.
  • Pokud je pod přeplánovaný na jiném uzlu, znovu připojte datové svazky.

Nakonec možná budete muset shromažďovat a ukládat citlivá data nebo informace o konfiguraci aplikací do podů.

Tento článek představuje základní koncepty, které poskytují úložiště aplikacím v AKS:

Možnosti úložiště pro aplikace v clusteru Azure Kubernetes Services (AKS)

Svazky

Kubernetes obvykle zachází s jednotlivými pody jako s dočasnými, jednorázovými prostředky. Aplikace mají k dispozici různé přístupy k používání a uchovávání dat. Svazek představuje způsob, jak ukládat, načítat a uchovávat data v podech a v průběhu životního cyklu aplikace.

Tradiční svazky se vytvářejí jako prostředky Kubernetes zálohované službou Azure Storage. Datové svazky můžete vytvořit ručně a přiřadit je přímo k podům, nebo je můžete nechat, aby je Kubernetes vytvořil automaticky. Datové svazky můžou používat disky Azure, Azure Files, Azure NetApp Files nebo objekty blob Azure.

Poznámka

V závislosti na SKU virtuálního počítače, který se používá, může mít ovladač CSI disků Azure limit svazku na uzel. U některých výkonných virtuálních počítačů (například 16 jader) je limit 64 svazků na uzel. Pokud chcete zjistit limit na skladovou položku virtuálního počítače, projděte si sloupec Maximální počet datových disků pro každou nabízenou skladovou položku virtuálního počítače. Seznam nabízených skladových položek virtuálních počítačů a jejich odpovídající podrobné limity kapacity najdete v tématu Velikosti virtuálních počítačů pro obecné účely.

Disky Azure

Pomocí disků Azure vytvořte prostředek Kubernetes DataDisk . Mezi typy disků patří:

  • Disky úrovně Ultra
  • Disky SSD úrovně Premium
  • Disky SSD úrovně Standard
  • Disky HDD úrovně Standard

Tip

Pro většinu produkčních a vývojových úloh použijte SSD úrovně Premium.

Vzhledem k tomu, že disky Azure jsou připojené jako ReadWriteOnce, jsou dostupné jenom pro jeden uzel. Pro svazky úložiště, ke kterým mají přístup pody na více uzlech současně, použijte Azure Files.

Azure Files

Pomocí Azure Files připojte sdílenou složku smb (Server Message Block) verze 3.1.1 nebo sdílenou složku systému souborů NFS (Network File System) verze 4.1, kterou k podům využívá účet úložiště Azure. Azure Files umožňují sdílet data mezi několika uzly a pody a můžou používat:

  • Azure Premium Storage s využitím vysoce výkonných disků SSD
  • Úložiště Azure Standard s využitím běžných pevných disků

Azure NetApp Files

  • Úložiště úrovně Ultra
  • Premium Storage
  • Storage úrovně Standard

Azure Blob Storage

Pomocí Azure Blob Storage vytvořte kontejner úložiště objektů blob a připojte ho pomocí protokolu NFS verze 3.0 nebo BlobFuse.

  • Objekty blob bloku

Typy svazků

Svazky Kubernetes představují více než jen tradiční disk pro ukládání a načítání informací. Svazky Kubernetes je také možné použít jako způsob vložení dat do podu pro použití kontejnery.

Mezi běžné typy svazků v Kubernetes patří:

emptyDir

Běžně se používá jako dočasné místo pro pod. Všechny kontejnery v rámci podu mají přístup k datům na svazku. Data zapsaná na tento typ svazku se uchovávají pouze po dobu životnosti podu. Jakmile pod odstraníte, svazek se odstraní. Tento svazek obvykle používá základní diskové úložiště místního uzlu, i když může existovat pouze v paměti uzlu.

Tajný kód

Tajné svazky můžete použít k vložení citlivých dat do podů, jako jsou hesla.

  1. Vytvořte tajný kód pomocí rozhraní API Kubernetes.
  2. Definujte pod nebo nasazení a vyžádejte si konkrétní tajný klíč.
    • Tajné kódy se poskytují jenom uzlům s naplánovaným podem, který je vyžaduje.
    • Tajný klíč je uložený v tmpfs, nezapisuje se na disk.
  3. Když odstraníte poslední pod na uzlu, který vyžaduje tajný kód, tajný klíč se odstraní z tmpfs uzlu.
    • Tajné kódy jsou uložené v daném oboru názvů a přístup k nim mají jenom pody ve stejném oboru názvů.

mapa konfigurace

Pomocí nástroje configMap můžete do podů vložit vlastnosti páru klíč-hodnota, například informace o konfiguraci aplikace. Definovat informace o konfiguraci aplikace jako prostředek Kubernetes, snadno aktualizovat a aplikovat je na nové instance podů při jejich nasazení.

Podobně jako při použití tajného kódu:

  1. Vytvořte objekt ConfigMap pomocí rozhraní API Kubernetes.
  2. Při definování podu nebo nasazení si vyžádejte objekt ConfigMap.
    • Objekty ConfigMap jsou uložené v daném oboru názvů a mají přístup pouze k podům ve stejném oboru názvů.

Trvalé svazky

Svazky definované a vytvořené jako součást životního cyklu podů existují pouze do odstranění podu. Pody často očekávají, že jejich úložiště zůstane, pokud se během události údržby přeplánuje na jiného hostitele, zejména v případě stavových sad. Trvalý svazek (PV) je prostředek úložiště vytvořený a spravovaný rozhraním API Kubernetes, který může existovat po dobu životnosti jednotlivého podu.

K poskytnutí trvalého svazku můžete použít disky Azure nebo Azure Files. Jak je uvedeno v části Svazky , volba disků nebo souborů je často určena potřebou souběžného přístupu k datům nebo vrstvou výkonu.

Trvalé svazky v clusteru Azure Kubernetes Services (AKS)

PersistentVolume může vytvořit staticky správce clusteru nebo dynamicky vytvořit server rozhraní API Kubernetes. Pokud je naplánovaný pod a vyžaduje aktuálně nedostupné úložiště, Kubernetes může vytvořit základní úložiště Azure Disk nebo Files a připojit ho k podu. Dynamické zřizování používá třídu StorageClass k identifikaci typu úložiště Azure, který je potřeba vytvořit.

Důležité

Trvalé svazky nemůžou sdílet pody s Windows a Linuxem kvůli rozdílům v podpoře systému souborů mezi těmito dvěma operačními systémy.

Třídy úložiště

Pokud chcete definovat různé úrovně úložiště, například Premium a Standard, můžete vytvořit třídu StorageClass.

Třída StorageClass také definuje reclaimPolicy. Když odstraníte trvalý svazek, zásady reclaimPolicy řídí chování základního prostředku úložiště Azure. Základní prostředek úložiště je možné buď odstranit, nebo ponechat pro použití s budoucím podem.

Pro clustery používající ovladače rozhraní pro úložiště kontejnerů (CSI) se vytvoří následující:StorageClasses

Oprávnění Důvod
managed-csi K vytvoření spravovaného disku používá místně redundantní úložiště Azure StandardSSD (LRS). Zásada uvolnění zajišťuje odstranění základního disku Azure při odstranění trvalého svazku, který ho používal. Třída úložiště také konfiguruje trvalé svazky tak, aby byly rozšiřitelné. Stačí upravit deklaraci identity trvalého svazku s novou velikostí.
managed-csi-premium Používá místně redundantní úložiště Azure Premium (LRS) k vytvoření spravovaného disku. Zásada uvolnění paměti znovu zajistí odstranění základního disku Azure při odstranění trvalého svazku, který ho používal. Podobně tato třída úložiště umožňuje rozšíření trvalých svazků.
azurefile-csi K vytvoření sdílené složky Azure používá úložiště Azure Úrovně Standard. Zásada uvolnění zajišťuje, že se základní sdílená složka Azure odstraní při odstranění trvalého svazku, který ji používal.
azurefile-csi-premium K vytvoření sdílené složky Azure používá Azure Premium Storage. Zásada uvolnění zajišťuje, že se základní sdílená složka Azure odstraní při odstranění trvalého svazku, který ji používal.
azureblob-nfs-premium Pomocí služby Azure Premium Storage vytvoříte kontejner úložiště objektů blob v Azure a připojíte se pomocí protokolu NFS v3. Zásada uvolnění zajišťuje odstranění základního kontejneru úložiště objektů blob v Azure při odstranění trvalého svazku, který ho používal.
azureblob-fuse-premium Pomocí služby Azure Premium Storage vytvoříte kontejner úložiště objektů blob v Azure a připojíte se pomocí BlobFuse. Zásada uvolnění zajišťuje odstranění základního kontejneru úložiště objektů blob v Azure při odstranění trvalého svazku, který ho používal.

Pokud nezadáte třídu StorageClass pro trvalý svazek, použije se výchozí třída StorageClass. Ujistěte se, že svazky používají odpovídající úložiště, které potřebujete při žádosti o trvalé svazky.

Důležité

Počínaje Kubernetes verze 1.21 používá AKS ve výchozím nastavení jenom ovladače CSI a je povolená migrace CSI. I když stávající trvalé svazky ve stromové struktuře budou dál fungovat, od verze 1.26 už AKS nebude podporovat svazky vytvořené pomocí ovladače ve stromové struktuře a úložiště zřízené pro soubory a disky.

Třída default bude stejná jako managed-csitřída .

Třídu StorageClass pro další potřeby můžete vytvořit pomocí .kubectl Následující příklad používá Spravované disky Premium a určuje, že při odstranění podu by se měl zachovat základní disk Azure:

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: managed-premium-retain
provisioner: disk.csi.azure.com
parameters:
  skuName: Premium_LRS
reclaimPolicy: Retain
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true

Poznámka

AKS odsouhlasí výchozí třídy úložiště a přepíše všechny změny, které v těchto třídách úložiště provedete.

Další informace o třídách úložiště najdete v tématu StorageClass v Kubernetes.

Deklarace identit trvalých svazků

A PersistentVolumeClaim požaduje úložiště konkrétní třídy StorageClass, režimu přístupu a velikosti. Server rozhraní Kubernetes API může dynamicky zřizovat základní prostředek úložiště Azure, pokud žádný existující prostředek nemůže splnit deklaraci identity na základě definované třídy StorageClass.

Definice podu zahrnuje připojení svazku po připojení svazku k podu.

Trvalé deklarace identity svazků v clusteru Azure Kubernetes Services (AKS)

Jakmile je k podu, který žádá o úložiště, přiřazen dostupný prostředek úložiště, je PersistentVolume vázán na PersistentVolumeClaim. Trvalé svazky jsou 1:1 mapované na deklarace identity.

Následující příklad manifestu YAML ukazuje deklaraci trvalého svazku, který používá třídu managed-premium StorageClass a požaduje velikost disku 5Gi :

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: azure-managed-disk
spec:
  accessModes:
  - ReadWriteOnce
  storageClassName: managed-premium-retain
  resources:
    requests:
      storage: 5Gi

Při vytváření definice podu také zadáte:

  • Trvalá deklarace identity svazku pro vyžádání požadovaného úložiště.
  • VolumeMount pro vaše aplikace pro čtení a zápis dat.

Následující příklad manifestu YAML ukazuje, jak je možné použít předchozí deklaraci identity trvalého svazku k připojení svazku na adrese /mnt/azure:

kind: Pod
apiVersion: v1
metadata:
  name: nginx
spec:
  containers:
    - name: myfrontend
      image: mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine
      volumeMounts:
      - mountPath: "/mnt/azure"
        name: volume
  volumes:
    - name: volume
      persistentVolumeClaim:
        claimName: azure-managed-disk

Pro připojení svazku do kontejneru Windows zadejte písmeno jednotky a cestu. Příklad:

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

Další kroky

Související osvědčené postupy najdete v tématu Osvědčené postupy pro úložiště a zálohy v AKS.

Informace o používání ovladačů CSI najdete v následujících článcích s postupy:

Další informace o základních konceptech Kubernetes a AKS najdete v následujících článcích: