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

Aplikace spuštěné ve službě Azure Kubernetes Service (AKS) můžou potřebovat ukládat a načítat data. I když některé úlohy aplikací můžou používat místní, rychlé úložiště na nepotřebných, vyprázdněných uzlech, jiné vyžadují úložiště, které se v rámci platformy Azure zachová na častějších datových svazcích.

Může být potřeba provést několik podů:

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

Můžete také potřebovat shromažďovat a ukládat citlivá data nebo informace o konfiguraci aplikace do podů.

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

Diagram možností úložiště pro aplikace v clusteru Azure Kubernetes Services (AKS)

Dočasný disk s operačním systémem

Azure ve výchozím nastavení automaticky replikuje disk operačního systému pro virtuální počítač do služby Azure Storage, aby se zabránilo ztrátě dat při přemístění virtuálního počítače na jiného hostitele. Vzhledem k tomu, že kontejnery nejsou navržené tak, aby měly trvalý místní stav, nabízí toto chování omezenou hodnotu a zároveň poskytuje určité nevýhody. Mezi tyto nevýhody patří, ale nejsou omezené na pomalejší zřizování uzlů a vyšší latenci čtení a zápisu.

Naproti tomu dočasné disky s operačním systémem se ukládají jenom na hostitelském počítači, stejně jako dočasný disk. Díky této konfiguraci získáte nižší latenci čtení a zápisu spolu s rychlejším škálováním uzlů a upgrady clusteru.

Poznámka:

Pokud pro operační systém explicitně nepožadujete spravované disky Azure, AKS pro danou konfiguraci fondu uzlů ve výchozím nastavení nastaví dočasný operační systém.

Požadavky na velikost a doporučení pro dočasné disky s operačním systémem jsou k dispozici v dokumentaci k virtuálnímu počítači Azure. Tady jsou některé obecné aspekty velikosti:

  • Pokud jste se rozhodli použít výchozí velikost virtuálního počítače AKS Standard_DS2_v2 skladové položky s výchozí velikostí disku s operačním systémem 100 GiB, výchozí velikost virtuálního počítače podporuje dočasný operační systém, ale velikost mezipaměti má pouze 86 GiB. Pokud ji explicitně nezadáte, tato konfigurace se ve výchozím nastavení nastaví na spravované disky. Pokud požadujete dočasný operační systém, zobrazí se chyba ověření.

  • Pokud požádáte o stejnou skladovou položku Standard_DS2_v2 s diskem s operačním systémem 60 GiB, bude tato konfigurace ve výchozím nastavení dočasného operačního systému. Požadovaná velikost 60 GiB je menší než maximální velikost mezipaměti 86 GiB.

  • Pokud vyberete skladovou položku Standard_D8s_v3 s diskem s operačním systémem 100 GB, tato velikost virtuálního počítače podporuje dočasný operační systém a má 200 GiB místa v mezipaměti. Pokud nezadáte typ disku s operačním systémem, fond uzlů bude ve výchozím nastavení přijímat dočasný operační systém.

Nejnovější generace řady virtuálních počítačů nemá vyhrazenou mezipaměť, ale pouze dočasné úložiště. Pokud jste například vybrali velikost virtuálního počítače Standard_E2bds_v5 s výchozí velikostí disku s operačním systémem 100 GiB, podporuje dočasné disky s operačním systémem, ale má pouze 75 GB dočasného úložiště. Pokud ji explicitně nezadáte, tato konfigurace se ve výchozím nastavení nastaví na spravované disky s operačním systémem. Pokud požadujete dočasný disk s operačním systémem, zobrazí se chyba ověření.

  • Pokud požadujete stejnou velikost virtuálního počítače Standard_E2bds_v5 s diskem s operačním systémem 60 GiB, tato konfigurace ve výchozím nastavení používá dočasné disky s operačním systémem. Požadovaná velikost 60 GiB je menší než maximální dočasné úložiště 75 GiB.

  • Pokud vyberete Standard_E4bds_v5 skladovou položku s diskem s operačním systémem 100 GiB, tato velikost virtuálního počítače podporuje dočasný operační systém a má 150 GiB dočasného úložiště. Pokud typ disku s operačním systémem nezadáte, Azure ve výchozím nastavení zřídí dočasný disk s operačním systémem do fondu uzlů.

Klíče spravované zákazníkem

Šifrování dočasného disku s operačním systémem můžete spravovat pomocí vlastních klíčů v clusteru AKS. Další informace najdete v tématu Použití klíče spravovaného zákazníkem s diskem Azure v AKS.

Množství

Kubernetes obvykle zpracovává jednotlivé pody jako dočasné a jednorázové 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 napříč pody a prostřednictvím životního cyklu aplikace.

Tradiční svazky se vytvářejí jako prostředky Kubernetes zálohované službou Azure Storage. Můžete ručně vytvořit datové svazky, které se mají přiřadit přímo podům, nebo je Kubernetes automaticky vytvořit. Datové svazky můžou používat: Disk Azure, Soubory Azure, Azure NetApp Files nebo Objekty blob Azure.

Poznámka:

V závislosti na SKU virtuálního počítače, který používáte, může mít ovladač CSI disku Azure limit svazku pro jednotlivé uzly. U některých vysoce 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ích podrobných limitů kapacity najdete v tématu Velikosti virtuálních počítačů pro obecné účely.

Informace uvedené v článku o službě Soubory Azure a Azure NetApp Files vám pomůžou určit nejvhodnější řešení pro vaše úlohy.

Azure Disk

K vytvoření prostředku Datového disku Kubernetes použijte Azure Disk. Mezi typy disků patří:

  • Disky SSD úrovně Premium (doporučeno pro většinu úloh)
  • Disky Ultra
  • Disky SSD úrovně Standard
  • Disky HDD úrovně Standard

Tip

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

Vzhledem k tomu, že disk Azure je připojený jako ReadWriteOnce, je k dispozici pouze pro jeden uzel. Pro svazky úložiště přístupné pody na více uzlech současně použijte službu Azure Files.

Soubory Azure

Služba Soubory Azure slouží k připojení sdílené složky SMB (Server Message Block) verze 3.1.1 nebo systému souborů NFS (Network File System) verze 4.1. Soubory Azure umožňují sdílet data mezi několika uzly a pody a můžou používat:

  • Azure Premium Storage založené na vysoce výkonných discích SSD
  • Azure Standard Storage zálohované běžnými pevnými disky

Azure NetApp Files

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

Azure Blob Storage

Pomocí služby 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, jak vložit data do podu pro použití v kontejnerech.

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

emptyDir

Běžně se používá jako dočasný prostor pro pod. Všechny kontejnery v podu mají přístup k datům na svazku. Data zapsaná do tohoto typu svazku se uchovávají pouze po dobu životnosti podu. Po odstranění podu se svazek 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ý klíč pomocí rozhraní Kubernetes API.
  2. Definujte pod nebo nasazení a požádejte o konkrétní tajný klíč.
    • Tajné kódy se poskytují jenom uzlům s naplánovaným podem, který je vyžaduje.
    • Tajný kód je uložen v tmpfs, není zapsán na disk.
  3. Když odstraníte poslední pod na uzlu vyžadujícím tajný klíč, tajný kód se odstraní z tmpfs uzlu.
    • Tajné kódy jsou uložené v daném oboru názvů a jsou přístupné pouze pody ve stejném oboru názvů.

configMap

Objekt configMap můžete použít k vložení vlastností páru klíč-hodnota do podů, jako jsou například informace o konfiguraci aplikace. Definujte informace o konfiguraci aplikace jako prostředek Kubernetes, snadno se aktualizují a použijí na nové instance podů při jejich nasazení.

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

  1. Vytvořte objekt ConfigMap pomocí rozhraní API Kubernetes.
  2. Při definování podu nebo nasazení požádejte objekt ConfigMap.
    • Konfigurace Mapy jsou uloženy v daném oboru názvů a jsou přístupné pouze pody ve stejném oboru názvů.

Trvalé svazky

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

K zajištění trvalého svazku můžete použít následující datové služby Azure Storage:

Jak je uvedeno v části Svazky, volba disků Azure nebo služby Azure Files je často určena potřebou souběžného přístupu k datům nebo úrovni výkonu.

Diagram trvalých svazků v clusteru Azure Kubernetes Services (AKS)

Správce clusteru může staticky vytvořit trvalý svazek nebo ho může dynamicky vytvořit server rozhraní API Kubernetes. Pokud je pod naplánovaný a vyžaduje úložiště, které je aktuálně nedostupné, může Kubernetes vytvořit podkladové úložiště Azure Disk nebo File a připojit ho k podu. Dynamické zřizování používá třídu úložiště k identifikaci typu prostředku, který se má 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 zadat různé úrovně úložiště, například Premium nebo Standard, můžete vytvořit třídu úložiště.

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

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

Třída úložiště Popis
managed-csi K vytvoření spravovaného disku používá místně redundantní úložiště SSD úrovně Azure Standard (LRS). Zásady uvolnění paměti zajistí, že se základní disk Azure odstraní, když se odstraní trvalý svazek, který ho použil. Třída úložiště také nakonfiguruje trvalé svazky tak, aby se rozšiřily. Můžete upravit trvalou deklaraci identity svazku a určit tak novou velikost.
managed-csi-premium K vytvoření spravovaného disku používá místně redundantní úložiště Azure Premium (LRS). Zásada uvolnění znovu zajistí, že se základní disk Azure odstraní, když se odstraní trvalý svazek, který ho použil. Podobně tato třída úložiště umožňuje rozšíření trvalých svazků.
azurefile-csi Používá úložiště Azure Standard k vytvoření sdílené složky Azure. Zásada uvolnění prostředků zajišťuje, že se základní sdílená složka Azure odstraní, když se odstraní trvalý svazek, který ji použil.
azurefile-csi-premium Používá Azure Premium Storage k vytvoření sdílené složky Azure. Zásada uvolnění prostředků zajišťuje, že se základní sdílená složka Azure odstraní, když se odstraní trvalý svazek, který ji použil.
azureblob-nfs-premium Používá Azure Premium Storage k vytvoření kontejneru úložiště objektů blob v Azure a připojení pomocí protokolu NFS v3. Zásada uvolnění paměti zajišťuje, že se základní kontejner úložiště objektů blob v Azure odstraní, když se odstraní trvalý svazek, který ho použil.
azureblob-fuse-premium Používá Azure Premium Storage k vytvoření kontejneru azure Blob Storage a připojení pomocí BlobFuse. Zásada uvolnění paměti zajišťuje, že se základní kontejner úložiště objektů blob v Azure odstraní, když se odstraní trvalý svazek, který ho použil.

Pokud pro trvalý svazek nezadáte třídu úložiště, použije se výchozí třída úložiště. Zajistěte, aby svazky používaly příslušné úložiště, které potřebujete při vyžádání trvalých svazků.

Důležité

Počínaje Kubernetes verze 1.21 používá AKS ve výchozím nastavení pouze ovladače CSI a migrace csI je povolená. I když stávající trvalé svazky ve stromu nadále fungují, počínaje verzí 1.26 už AKS nebude podporovat svazky vytvořené pomocí ovladače stromu a úložiště zřízeného pro soubory a disky.

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

Můžete vytvořit třídu úložiště pro jiné potřeby pomocí kubectl. Následující příklad používá spravované disky Úrovně 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_ZRS
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ů

Deklarace trvalého svazku (PVC) vyžaduje uložení konkrétní třídy úložiště, režimu přístupu a velikosti. Server rozhraní API Kubernetes může dynamicky zřizovat základní prostředek Azure Storage, pokud žádný existující prostředek nemůže splnit deklaraci identity na základě definované třídy úložiště.

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

Diagram trvalých deklarací identity svazků v clusteru Azure Kubernetes Services (AKS).

Jakmile je k podu žádajícímu úložišti přiřazen dostupný prostředek úložiště, je trvalý svazek svázán s trvalou deklarací identity svazku. Trvalé svazky se mapují na deklarace identity v mapování 1:1.

Následující příklad manifestu YAML ukazuje trvalou deklaraci identity svazku, která používá třídu spravovaného úložiště premium a požaduje disk Azure, který má velikost 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 zadáte také:

  • Deklarace trvalého svazku pro vyžádání požadovaného úložiště.
  • Připojení svazku pro vaše aplikace ke čtení a zápisu dat.

Následující příklad manifestu YAML ukazuje, jak se dá předchozí deklarace identity trvalého svazku použít k připojení svazku v /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 v 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 ukládání a zálohování v AKS a aspektech úložiště 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: