Lagringsöverväganden för Azure Kubernetes Service (AKS)

För att kunna köra specifika programarbetsbelastningar måste din organisation eller ditt företag utforma lämpliga funktioner på plattformsnivå för Azure Kubernetes Service (AKS). Dessa arbetsbelastningar har sannolikt olika lagringskrav. När du väljer rätt lagringslösning för ditt program har du flera överväganden, inklusive prestanda, tillgänglighet, återställning, säkerhet och kostnad. Målet med den här artikeln är att hjälpa dig att välja rätt alternativ eller kombination av alternativ för din arbetsbelastning.

Kubernetes kan köra både tillståndslösa och tillståndskänsliga arbetsbelastningar. Tillståndskänsliga arbetsbelastningar kräver ofta en lagringslösning för lagringstillstånd. AKS stöder flera integrerade alternativ för intern lagring, som omfattar hanterade databaser, diskar (eller block) och filer och bloblagring (eller objekt). Vart och ett av dessa alternativ erbjuder olika SKU:er, storlekar och prestandaegenskaper. Att välja rätt alternativ kräver noggrant övervägande.

Den här artikeln beskriver de faktorer och alternativ som du behöver tänka på i Välj rätt lagringstjänst och Designöverväganden. Den innehåller specifika rekommendationer i Designrekommendationer.

Välj rätt lagringstjänst

Att välja rätt SKU:er och storlekar för dina inledande distributioner kräver vissa utvärderingar och eventuellt en proof-of-concept- eller testmiljö. Här följer de övergripande riktlinjerna som hjälper dig att komma igång med lagring för AKS:

  • Strukturerade data. För strukturerade data som ditt program kan lagra i en hanterad databas som är tillgänglig på plattformen (till exempel Azure SQL) rekommenderar vi att du använder en hanterad databas.

  • Ostrukturerade data. För ostrukturerade data– till exempel foton, videor och textdokument – använder du bloblagring. Ditt program kan göra detta med hjälp av blobar som monteras som filer via NFS (Network File System) eller som används som ett virtuellt filsystem med hjälp av BlobFuse. Du kan också läsa från och skriva till bloblagring direkt i ditt program.

  • Delade programdata. För delade programdata som kräver höga prestanda använder du antingen Azure NetApp Files eller premiumnivån för Azure Files. För delade konfigurationsdata som endast kräver begränsad prestanda använder du standardnivån för Azure Files.

  • Bandbredd för program- och lagringsbegäranden. Se till att noderna har tillräckligt med nätverksbandbredd för att hantera både programbegäranden och lagringsbegäranden. Lagringstrafiken går över nätverksstacken, oavsett om protokollet för överföringar är SMB (Server Message Block) eller NFS.

  • Låg svarstid, hög IOPS. Använd diskar för lagring om programmet behöver konsekvent låg svarstid för meddelandeprogram och höga I/O-åtgärder per sekund (IOPS) och högt dataflöde för att köra egna databaser på Kubernetes. För bästa prestanda bör du överväga att använda Azure Premium SSD, Azure Premium SSD v2 eller Azure Ultra Disk Storage.

Utformningsbeaktanden

Följande överväganden gäller för att utforma lagring för AKS. Överväg var lagring krävs i DIN AKS-miljö och bestäm den bästa lösningen för varje krav.

Operativsystemdiskar (OS)

För operativsystemdiskar (OS) bör du tänka på följande faktorer:

  • Tillfälliga diskar för operativsystemet. Varje virtuell dator (VM) i Azure kräver en disk för operativsystemet. Eftersom Kubernetes-noder är tillfälliga använder AKS som standard tillfälliga OS-diskar på vm-storlekar som stöds. Mer information om tillfälliga OS-diskar finns i tillfälliga operativsystem.

  • Hanterade diskar för operativsystemet. Om din arbetsbelastning kräver dem kan du i stället använda vanliga hanterade diskar för noderna i AKS-klustret. Detta stöder arbetsbelastningar som kräver beständiga data på OS-enheten. Mer information om alternativ för beständig lagring finns i Lagringsalternativ för program i Azure Kubernetes Service (AKS).

  • Storleksanpassa hanterade diskar. Om du väljer en hanterad disk som OS-disk kontrollerar du att den är lämplig för att stödja kraven för operativsystemet, Kubernetes-systemet och din arbetsbelastning. Mer information om alternativ och skillnader finns i Azure-hanterade disktyper.

Programdata

Vissa arbetsbelastningar behöver ett konsekvent datalager för lagring av programdata. Om programmet kräver en databas bör du överväga att utforska de hanterade databaserna i Azure, som innehåller följande alternativ:

Lagringslösningar i AKS

Om en hanterad databas inte uppfyller programmets behov kan du överväga att använda ett annat lagringsalternativ som är tillgängligt för AKS för att lagra konsekventa data. Alternativen omfattar diskbaserade lösningar, tillfälliga diskar, filbaserade lösningar, bloblagring och andra alternativ som inte beskrivs i den här artikeln.

Diskbaserade lösningar

Diskar, eller blocklagring, är idealiska för att lagra data direkt på en rå, blockbaserad enhet. Diskbaserad lagring är perfekt för lagring av data för databaser som kubernetes-kluster är värdar för. I Azure är hanterade diskar lösningen för att hämta blockbaserad lagring.

Tillfälliga disklösningar

Fundera på om ditt program kräver icke-beständig, tillfällig lagring eller var du vill använda högpresterande enheter på de lagringsoptimerade virtuella datorerna. Om du vill ansluta till en tillfällig volym kan du använda alternativet emptyDir i Kubernetes eller drivrutinen för en lokal CSI-volym. Vi rekommenderar emptyDir för tillfälliga data, till exempel repor. För lagring i den lagringsoptimerade VM-serien rekommenderar vi att du använder CSI med en tillfällig lokal volym. Mer information om CSI-drivrutiner finns i CSI-drivrutiner (Container Storage Interface) på Azure Kubernetes Service (AKS).

Filbaserade lösningar

Fundera på om dina poddar behöver dela ett filsystem. Ett delat filsystem är perfekt för program- och konfigurationsdata som läses och delas av flera poddar i ditt Kubernetes-kluster. Fillagring exponerar ett delat filsystem via antingen NFS eller SMB/Common Internet File System (CIFS). Azure har två lösningar för filbaserad lagring: Azure Files och Azure NetApp Files.

Azure Files

Överväg följande alternativ för Azure Files:

  • Statisk eller dynamiskt skapad filresurs. Fundera på om du vill använda en statisk filresurs som skapas utanför AKS eller om du vill att AKS ska skapa filresursen dynamiskt åt dig. Mer information finns i:

  • Standard- eller premiumprestanda. Utvärdera om standardprestanda räcker eller om du behöver premiumprestanda från Azure Files.

  • SMB/CIFS eller NFS. För åtkomst till Azure Files utvärderar du om din arbetsbelastning ska använda API:et för standardprotokollet, SMB/CIFS eller om din arbetsbelastning kräver NFS-stöd.

  • Nätverksmodell för åtkomst. Överväg den nätverksmodell som du vill använda för att komma åt Azure Files: åtkomst via direkt offentlig IP-adress, en tjänstslutpunkt eller en privat länk.

Azure NetApp Files

Överväg följande alternativ för Azure NetApp Files:

Blobb-lagring

Överväg mängden ostrukturerade data som ditt program behöver lagra. Azure Blob Storage är tillgängligt via ett HTTP-API eller via SDK:erna. Att montera bloblagring som ett filsystem i en container eller podd är idealiskt för programarbetsbelastningar som har enorma mängder ostrukturerade data, till exempel loggfiler, bilder, dokument, strömmande media och haveriberedskapsdata.

Andra lagringslösningar

Överväg andra typer av lagring om programmet kräver något som inte beskrivs i den här artikeln. Det finns flera specialiserade lagringslösningar i Azure som kan integreras med Kubernetes. Den här artikeln beskriver inte dessa, men följande lista identifierar möjliga lösningar:

  • Azure HPC-cache. HPC Cache påskyndar åtkomsten till dina data för HPC-uppgifter (databehandling med höga prestanda). Azure HPC Cache cachelagrar filer i Azure så att du får samma skalbarhet som i molnet för dina befintliga arbetsflöden. Mer information finns i Integrera Azure HPC Cache med Azure Kubernetes Service.

  • Azure Data Lake Storage Gen2. Data Lake Storage Gen2 är en särskild typ av bloblagring som är optimerad för stordataarbetsbelastningar som Hadoop och Spark. Mer information finns i Introduktion till Azure Data Lake Storage Gen2.

Designrekommendationer

Det här avsnittet innehåller rekommendationer som baseras på vad som har visat sig vara effektivt för Azure-kunder.

  • Använd Azure Private Link. För säkerhet rekommenderar vi att du använder Azure Private Link för alla lagringslösningar som stöder det. Azure Private Link ger åtkomst till Azure-tjänster, till exempel Azure Storage och SQL Database, och Azure-värdbaserade tjänster via en privat slutpunkt i ditt virtuella nätverk. Mer information finns i Vad är Azure Private Link?

  • Använd tillfälliga diskar för operativsystem. För OS-diskar rekommenderar vi att du använder tillfälliga diskar. Om du vill dra nytta av den här funktionen väljer du en VM-storlek som har en temporär disk med lämplig storlek. Mer information finns i Tillfälliga OS-diskar för virtuella Azure-datorer.

  • Använd hanterade databaser. För programdata rekommenderar vi att du använder hanterade databaser. En lista över databasalternativ finns i Typer av databaser i Azure.

I följande avsnitt beskrivs fler rekommendationer för Azure-diskar, Azure Files och bloblagring.

Azure-diskar

För Azure-diskar rekommenderar vi följande designalternativ:

  • Använd Premium- eller Ultra-diskar. I de flesta fall rekommenderar vi Premium- eller Ultra-diskar för att säkerställa tillräcklig prestanda. Mer information finns i Azure Disk Storage.

  • Ange noden för diskar och dataflöde. Vi rekommenderar att du ser till att storleken på kubernetes-noden är tillräckligt stor för att stödja antalet diskar och mängden aggregerat dataflöde. Information om storlekar och egenskaper finns i Storlekar för virtuella datorer i Azure.

  • Skapa ögonblicksbilder av beständiga volymer. Vi rekommenderar att du tar ögonblicksbilder av beständiga volymer, antingen för att etablera nya volymer som är förifyllda med ögonblicksbilddata eller för att återställa en befintlig volym till ett tidigare tillstånd med hjälp av funktionen för ögonblicksbilder av Azure Disks CSI-drivrutinen. Mer information finns i Ögonblicksbilder av volymer.

  • Undvik disklistning mellan diskar. Vi rekommenderar att du undviker striping över flera diskar i Kubernetes.

  • Använd PV/PVC. Vi rekommenderar att du använder PV och PVC i Kubernetes för att dynamiskt skapa diskar där det behövs. Mer information om beständig lagring finns i Lagringsalternativ för program i Azure Kubernetes Service (AKS).

Azure Files

För Azure Files rekommenderar vi följande designalternativ:

  • Välj Premium. Om prestandan är kritisk rekommenderar vi att du använder Premium-nivån.

  • Skapa dedikerade lagringskonton. Vi rekommenderar att du tillhandahåller dedikerade lagringskonton för dina filresurser.

  • Välj statiska eller dynamiskt skapade filresurser. Vi rekommenderar att du noga överväger om du vill att AKS ska skapa filresurserna eller om du vill skapa dem statiskt utanför Kubernetes. Lagring som skapas dynamiskt kan också tas bort dynamiskt. Mer information om hur du låter AKS skapa filresurser dynamiskt finns i Skapa och använda en beständig volym dynamiskt med Azure Files.

Azure NetApp Files

För Azure NetApp Files rekommenderar vi följande designalternativ:

  • Välj en prestandanivå baserat på programkraven. Azure NetApp Files erbjuder 3 prestandanivåer som erbjuder olika prestandaklasser. Mer information finns i Prestandaöverväganden för Azure NetApp Files.

  • Skapa kapacitetspooler i samma Azure-region som AKS-klustret. Mer information finns i Skapa en kapacitetspool för Azure NetApp Files.

  • Använd den automatiska QoS-typen för kapacitetspooler.

  • Planera nätverket. Det finns två alternativ för nätverksdesign:

    1. Om du använder samma virtuella nätverk för AKS och Azure NetApp Files skapar du ett dedikerat undernät för Azure NetApp Files och delegerar undernätet till Microsoft.NetApp/Volumes.
    2. Om du använder olika virtuella nätverk upprättar du VNet-peering mellan dem.

Blobb-lagring

För bloblagring rekommenderar vi följande designalternativ:

  • Använd en SDK för att gränssnitt med lagring. Vi rekommenderar att du använder en SDK på programnivå för att interagera med bloblagring.

  • Använd CSI med NFS för att gränssnitt med lagring. Om du inte kan använda en SDK på programnivå för att interagera med bloblagring rekommenderar vi att du använder alternativet NFS v3 i blob-CSI-drivrutinen. Mer information finns i Använda CSI-drivrutinen (Azure Blob Storage Storage Interface).

  • Använd Microsoft Entra-ID för åtkomst. Vi rekommenderar att du använder Microsoft Entra-ID för att auktorisera åtkomst till bloblagring. Undvik att använda en nyckel för delat lagringskonto. Mer information finns i Auktorisera åtkomst till blobar med hjälp av Microsoft Entra-ID.

  • Justera nivånivåer. Vi rekommenderar att du använder livscykelhanteringsprinciper för att flytta data som används sällan till en lågfrekvent åtkomstnivå. Mer information finns i Frekvent, lågfrekvent och arkivera åtkomstnivåer för blobdata.

Nästa steg

Lär dig hur du omfångsbegränsar kostnadsallokering till en distribution, en tjänst, en etikett, en podd eller ett namnområde i AKS med hjälp av Kubecost.