Windows-containeropslag met Azure Kubernetes Service

Voltooid

In de vorige les hebben we geleerd hoe Kubernetes uw op containers gebaseerde toepassingen en de bijbehorende opslagonderdelen beheert en organiseert. We hebben ook geleerd over de Kubernetes-clusterarchitectuur die bestaat uit een besturingsvlak voor kernservices en knooppunten voor toepassingsresources.

Azure Kubernetes Service (AKS) vereenvoudigt de implementatie van een beheerd Kubernetes-cluster in Azure door de operationele overhead naar Azure te offloaden. Als gehoste Kubernetes-service verwerkt Azure kritieke taken, zoals statuscontrole en onderhoud.

Wanneer u een AKS-clustermaakt, wordt automatisch een besturingsvlak gemaakt en geconfigureerd. Dit besturingsvlak wordt gratis aangeboden als een beheerde Azure-resource die is geabstraheerd van de gebruiker. U betaalt alleen voor de knooppunten die zijn gekoppeld aan het AKS-cluster en beheert deze.

In het volgende diagram ziet u hoe het besturingsvlak dat de belangrijkste Kubernetes-services en indeling van toepassingsworkloads biedt, wordt beheerd door AKS, terwijl u de knooppunten beheert die de toepassingsworkloads bevatten.

diagram dat laat zien hoe het besturingsvlak dat de belangrijkste Kubernetes-services en indeling van toepassingsworkloads biedt, wordt beheerd door AKS.

AKS-cluster

Wanneer u een AKS-cluster implementeert, geeft u het aantal en de grootte van de knooppunten op en implementeert en configureert AKS het Kubernetes-besturingsvlak en de knooppunten.

In het volgende diagram ziet u de architectuur van een AKS-cluster.

diagram met de architectuur van een AKS-cluster.

AKS-knooppunten worden uitgevoerd op virtuele Azure-machines (VM's). Azure repliceert standaard automatisch de besturingssysteemschijf (besturingssysteemschijf) voor een virtuele machine (virtuele machine) naar Azure Storage om gegevensverlies te voorkomen wanneer de virtuele machine wordt verplaatst naar een andere host. Zoals we eerder hebben geleerd, zijn containers niet ontworpen om lokale status te behouden. Dit gedrag biedt dus beperkte waarde en biedt nadelen, zoals tragere inrichting van knooppunten en een hogere lees-/schrijflatentie. 

AKS gebruikt daarentegen tijdelijke besturingssysteemschijven. Deze schijven worden alleen opgeslagen op de hostcomputer, net als een tijdelijke schijf. Met deze configuratie krijgt u een lagere latentie voor lezen/schrijven, samen met snellere schaalaanpassing van knooppunten en clusterupgrades.

Volumeopslag in AKS

In AKS worden traditionele volumes gemaakt als Kubernetes-resources die worden ondersteund door Azure Storage. U kunt handmatig gegevensvolumes maken die rechtstreeks aan pods moeten worden toegewezen of kubernetes automatisch laten maken. Om deze volumes te koppelen aan Azure Storage, maakt AKS gebruik van de CSI (Container Storage Interface).

CSI is een standaard voor het beschikbaar maken van willekeurige blok- en bestandsopslagsystemen voor workloads in containers in Kubernetes.

Door CSI toe te passen en te gebruiken, kan AKS (Azure Kubernetes Service) plug-ins schrijven, implementeren en herhalen om nieuwe opslagmogelijkheden in Kubernetes te onthullen of bestaande systemen te verbeteren, zonder de kerncode van Kubernetes aan te passen en te wachten op de releasecycli.

Met de ondersteuning voor CSI-opslagstuurprogramma's in AKS kunt u native functies gebruiken zoals:

  • Azure Disks kan worden gebruikt om een Kubernetes DataDisk-resource te maken. Schijven kunnen Gebruikmaken van Azure Premium Storage, ondersteund door SSD's met hoge prestaties of Azure Standard Storage, ondersteund door reguliere HDD's (harde schijven) of Standard SSD's. Gebruik Premium Storage voor de meeste productie- en ontwikkelingsworkloads. Azure-schijven worden gekoppeld als ReadWriteOnce- en zijn alleen beschikbaar voor één knooppunt in AKS. Gebruik Azure Files voor opslagvolumes die tegelijkertijd door meerdere knooppunten kunnen worden geopend.
  • Azure Files kan worden gebruikt om een SMB(Server Message Block) 3.0/3.1-share te koppelen die wordt ondersteund door een Azure-opslagaccount aan pods. Met Azure Files kunt u gegevens delen over meerdere knooppunten en pods. Azure Files kan Gebruikmaken van Azure Standard-opslag die wordt ondersteund door reguliere HDD's of Azure Premium-opslag die wordt ondersteund door krachtige SSD's.
  • Azure Blob Storage kan worden gebruikt om Blob Storage (of objectopslag) als bestandssysteem te koppelen aan een container of pod. Met Blob Storage kan uw cluster toepassingen ondersteunen die werken met grote ongestructureerde gegevenssets, zoals logboekbestandsgegevens, afbeeldingen of documenten, HPC en andere. Als u bovendien gegevens opneemt in Azure Data Lake Storage, kunt u deze rechtstreeks koppelen en gebruiken in AKS zonder dat u een ander tussentijds bestandssysteem hoeft te configureren.

Vanaf Kubernetes versie 1.21 gebruikt AKS standaard alleen CSI-stuurprogramma's en is CSI-migratie ingeschakeld. Vanaf versie 1.26 biedt AKS geen ondersteuning meer voor volumes die zijn aangemaakt met de in-tree driver en opslag die is ingericht voor bestanden en schijven, hoewel bestaande in-tree permanente volumes blijven functioneren.

Permanente volumes

Een permanent volume (PV) is een opslagresource die is gemaakt en beheerd door de Kubernetes-API die kan bestaan na de levensduur van een afzonderlijke pod. In AKS kunt u Azure Disk of Azure Files gebruiken om de PersistentVolumeop te geven. Uw keuze voor schijven of bestanden voor het volume wordt vaak bepaald door de noodzaak van gelijktijdige toegang tot de gegevens of het vereiste prestatieniveau.

Een clusterbeheerder kan statisch een PersistentVolumemaken of het volume wordt dynamisch gemaakt door de Kubernetes-API-server. Wanneer een pod wordt ingepland en de gevraagde opslag momenteel niet beschikbaar is, kan Kubernetes de onderliggende Azure-schijf of bestandsopslag creëren en aan de pod koppelen. Dynamische inrichting maakt gebruik van een StorageClass om te bepalen welk type Azure-opslag moet worden gemaakt.

Opslagklassen in AKS

Als u verschillende opslaglagen wilt definiëren, zoals Premium en Standard, kunt u een StorageClass maken. De StorageClass definieert ook de reclaimPolicy-. Wanneer u het permanente volume verwijdert, bepaalt de reclaimPolicy het gedrag van de onderliggende Azure-opslagresource. De onderliggende opslagbron kan worden verwijderd of bewaard voor toekomstig gebruik met een pod.

Voor clusters met CSI-stuurprogramma's heeft AKS de volgende extra StorageClassesgemaakt:

Toestemming Reden
managed-csi Maakt gebruik van Azure StandardSSD lokaal redundante opslag (LRS) om een beheerde schijf te maken. Het claimbeleid zorgt ervoor dat de onderliggende Azure-schijf wordt verwijderd wanneer het permanente volume dat wordt gebruikt, wordt verwijderd. De opslagklasse configureert ook de permanente volumes die kunnen worden uitgebreid. U hoeft alleen de permanente volumeclaim te bewerken met de nieuwe grootte.
managed-csi-premium Maakt gebruik van lokaal redundante Azure Premium-opslag (LRS) om een beheerde schijf te maken. Het claimbeleid zorgt ervoor dat de onderliggende Azure-schijf wordt verwijderd wanneer het permanente volume dat het gebruikte, wordt verwijderd. Op dezelfde manier kunnen met deze opslagklasse permanente volumes worden uitgebreid.
azurefile-csi Maakt gebruik van Azure Standard Storage om een Azure-bestandsshare te maken. Het claimbeleid zorgt ervoor dat de onderliggende Azure-bestandsshare wordt verwijderd wanneer het permanente volume dat deze heeft gebruikt, wordt verwijderd.
azurefile-csi-premium Maakt gebruik van Azure Premium Storage om een Azure-bestandsshare te maken. Het claimbeleid zorgt ervoor dat de onderliggende Azure-bestandsshare wordt verwijderd wanneer het permanente volume dat deze heeft gebruikt, wordt verwijderd.
azureblob-nfs-premium Maakt gebruik van Azure Premium Storage om een Azure Blob Storage-container te maken en maakt verbinding met behulp van het NFS-protocol (Network File System) v3. Het claimbeleid zorgt ervoor dat de onderliggende Azure Blob Storage-container wordt verwijderd wanneer het permanente volume dat deze heeft gebruikt, wordt verwijderd.
azureblob-fuse-premium Maakt gebruik van Azure Premium Storage om een Azure Blob Storage-container te maken en verbinding te maken met behulp van BlobFuse. Het claimbeleid zorgt ervoor dat de onderliggende Azure Blob Storage-container wordt verwijderd wanneer het permanente volume dat deze heeft gebruikt, wordt verwijderd.

Tenzij u een StorageClass opgeeft voor een permanent volume, wordt de standaardopslagklasse gebruikt. Zorg ervoor dat volumes de juiste opslag gebruiken die u nodig hebt bij het aanvragen van permanente volumes. De standaardklasse is hetzelfde als managed-csi.

Persistente volumeeisen

Een PersistentVolumeClaim vraagt om opslag van een bepaalde StorageClass, toegangsmodus en grootte. De Kubernetes-API-server kan de onderliggende Azure-opslagresource dynamisch inrichten als er geen bestaande resource kan voldoen aan de claim op basis van de gedefinieerde StorageClass.

De poddefinitie bevat de volumekoppeling zodra het volume is verbonden met de pod.

In het volgende diagram ziet u hoe een PVC werkt binnen een AKS-cluster:

diagram waarin wordt getoond hoe een PVC werkt binnen een AKS-cluster.