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.
Statisk eller dynamiskt skapad disklagring. Överväg om du vill använda en statisk disk som skapas utanför AKS, eller om du vill att AKS ska skapa disklagringen dynamiskt som en podd eller poddar kräver det. Lagring som skapas dynamiskt kan också tas bort dynamiskt. Mer information finns i:
Redundans och prestanda. Överväg lagringsredundans och prestanda som din arbetsbelastning kräver. Mer information finns i:
Delad disk. Överväg om du behöver en delad disk. Mer information om alternativ finns i Dela en Hanterad Azure-disk.
Nodstorlek för diskar och dataflöde. Överväg storleken på kubernetes-noden. Den måste vara tillräckligt stor för att stödja både antalet diskar och kraven på aggregerat dataflöde. Information om storlekar och egenskaper finns i Storlekar för virtuella datorer i Azure.
Diskstorlek och nödvändig prestanda. Överväg om den hanterade disken har rätt storlek för arbetsbelastningens prestandakrav. Prestandan ökar när diskstorleken ökar för Standard HDD, Standard SSD och Premium SSD v1. Mer information om hanterade diskar finns i Azure-hanterade disktyper.
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:
Statisk eller dynamiskt skapad Azure NetApp Files-resurs. Fundera på om du vill att din arbetsbelastning ska använda en statisk Azure NetApp Files-resurs som skapas utanför AKS, eller om du vill att AKS ska skapa filresursen dynamiskt via Astra Control. Mer information finns i:
Utvärdera för prestanda. Utvärdera vilken prestandanivå som krävs för din arbetsbelastning. Mer information finns i Prestandaöverväganden för Azure NetApp Files.
Planera nätverket. Utforska nätverksrekommendationerna för Azure NetApp Files. Mer information finns i Riktlinjer för nätverksplanering 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.
Dataredundans. Överväg vilken dataredundans som passar ditt program. Läs mer i Redundansalternativ för Azure Storage. Dataredundans väljs på lagringskontots nivå.
Prestandanivå. Överväg vilken prestandanivå för bloblagring som krävs för ditt program. Mer information finns i Frekvent, lågfrekvent och arkivera åtkomstnivåer för blobdata.
Autentiseringsmetod för åtkomst. Överväg vilken autentiseringsmetod som ditt program ska använda för åtkomst till bloblagring: lagringsnyckel, SAS eller Microsoft Entra-ID. Mer information finns i Auktorisera åtkomst till data i Azure Storage.
API för abstrakt bloblagring. Överväg vilket API som ska användas. Vanligtvis använder program som har åtkomst till bloblagring API:et i programmet via en av SDK:erna, vilket abstraherar interaktionen med bloblagring från Kubernetes-klustret. Mer information om bibliotek för olika programmeringsspråk finns i Introduktion till Azure Blob Storage.
Statisk eller dynamiskt skapad bloblagring. Fundera på om du vill använda en statisk bloblagringscontainer som skapas utanför AKS eller om du vill att AKS ska skapa bloblagringscontainern dynamiskt för din räkning. Mer information finns i:
Drivrutin för åtkomst till lagring. Fundera på hur ditt program ska få åtkomst till bloblagring. Om du vill komma åt den som ett filsystem kan du använda blob-CSI-drivrutinen i Kubernetes. Den här drivrutinen ger åtkomst till bloblagring via NFSv3-protokollet eller via en säkringsdrivrutin.
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:
- 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.
- 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.