Best practices voor toepassingsontwikkelaars voor het beheren van resources in Azure Kubernetes Service (AKS)

Bij het ontwikkelen en uitvoeren van toepassingen in Azure Kubernetes Service (AKS) zijn er enkele belangrijke gebieden waar u rekening mee moet houden. De manier waarop u uw toepassingsimplementaties beheert, kan een negatieve invloed hebben op de eindgebruikerservaring van services die u levert.

Dit artikel is gericht op het uitvoeren van uw clusters en workloads vanuit het perspectief van een toepassingsontwikkelaar. Zie best practices voor clusteroperators voor isolatie en resourcebeheer in Azure Kubernetes Service (AKS) voor informatie over aanbevolen procedures voor beheer.

In dit artikel worden de volgende onderwerpen behandeld:

  • Pod-resourceaanvragen en -limieten.
  • Manieren om toepassingen te ontwikkelen, fouten op te sporen en te implementeren met Bridge naar Kubernetes en Visual Studio Code.

Pod-resourceaanvragen en -limieten definiëren

Richtlijnen voor best practices

Podaanvragen en -limieten instellen voor alle pods in uw YAML-manifesten. Als het AKS-cluster resourcequota gebruikt en u deze waarden niet definieert, wordt uw implementatie mogelijk geweigerd.

Gebruik podaanvragen en -limieten om rekenresources binnen een AKS-cluster te beheren. Podaanvragen en -limieten informeren de Kubernetes-scheduler van de rekenresources die aan een pod moeten worden toegewezen.

CPU-/geheugenaanvragen voor pods

Podaanvragen definiëren een vaste hoeveelheid CPU en geheugen die de pod regelmatig nodig heeft.

In uw podspecificaties is het belangrijk dat u deze aanvragen en limieten definieert op basis van de bovenstaande informatie. Als u deze waarden niet opneemt, kan de Kubernetes-planner niet rekening houden met de resources die uw toepassingen nodig hebben om te helpen bij het plannen van beslissingen.

Bewaak de prestaties van uw toepassing om podaanvragen aan te passen. Als u podaanvragen onderschat, ontvangt uw toepassing mogelijk verminderde prestaties vanwege een overplanning van een knooppunt. Als aanvragen te veel worden geschat, heeft uw toepassing mogelijk een grotere planningsproblemen.

CPU-/geheugenlimieten voor pods

Podlimieten stellen de maximale hoeveelheid CPU en geheugen in die een pod kan gebruiken. Geheugenlimieten bepalen welke pods moeten worden verwijderd wanneer knooppunten instabiel zijn vanwege onvoldoende resources. Zonder de juiste limieten worden pods verwijderd totdat de resourcedruk wordt opgeheven. Hoewel een pod de CPU-limiet periodiek kan overschrijden, wordt de pod niet verwijderd voor het overschrijden van de CPU-limiet.

Podlimieten definiëren wanneer een pod de controle over het resourceverbruik verliest. Wanneer deze de limiet overschrijdt, wordt de pod gemarkeerd voor verwijdering. Dit gedrag behoudt de knooppuntstatus en minimaliseert de impact op pods die het knooppunt delen. Als u geen podlimiet instelt, wordt deze standaard ingesteld op de hoogste beschikbare waarde op een bepaald knooppunt.

Vermijd het instellen van een podlimiet die hoger is dan uw knooppunten kunnen ondersteunen. Elk AKS-knooppunt reserveert een vaste hoeveelheid CPU en geheugen voor de kubernetes-kernonderdelen. Uw toepassing kan proberen te veel resources op het knooppunt te verbruiken, zodat andere pods goed kunnen worden uitgevoerd.

Bewaak de prestaties van uw toepassing op verschillende tijdstippen tijdens de dag of week. Bepaal piektijden van de vraag en lijn de podlimieten uit op de resources die nodig zijn om te voldoen aan de maximale behoeften.

Belangrijk

Definieer in uw podspecificaties deze aanvragen en limieten op basis van de bovenstaande informatie. Als u deze waarden niet opneemt, voorkomt u dat de Kubernetes-planner rekening houdt met resources die uw toepassingen nodig hebben om te helpen bij het plannen van beslissingen.

Als de scheduler een pod op een knooppunt plaatst met onvoldoende resources, worden de prestaties van toepassingen verminderd. Clusterbeheerders moeten resourcequota instellen voor een naamruimte waarvoor u resourceaanvragen en -limieten moet instellen. Zie resourcequota voor AKS-clusters voor meer informatie.

Wanneer u een CPU-aanvraag of -limiet definieert, wordt de waarde gemeten in CPU-eenheden.

  • 1.0 CPU is gelijk aan één onderliggende virtuele CPU-kern op het knooppunt.
    • Dezelfde meting wordt gebruikt voor GPU's.
  • U kunt breuken definiëren die worden gemeten in millicores. 100 m is bijvoorbeeld 0,1 van een onderliggende vCPU-kern.

In het volgende basisvoorbeeld voor één NGINX-pod vraagt de pod 100 m CPU-tijd en 128Mi aan geheugen. De resourcelimieten voor de pod zijn ingesteld op 250 m CPU- en 256Mi-geheugen .

kind: Pod
apiVersion: v1
metadata:
  name: mypod
spec:
  containers:
  - name: mypod
    image: mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine
    resources:
      requests:
        cpu: 100m
        memory: 128Mi
      limits:
        cpu: 250m
        memory: 256Mi

Zie Rekenresources voor containers beheren voor meer informatie over resourcemetingen en -toewijzingen.

Toepassingen ontwikkelen en fouten opsporen in een AKS-cluster

Richtlijnen voor best practices

Ontwikkelteams moeten implementeren en fouten opsporen in een AKS-cluster met behulp van Bridge naar Kubernetes.

Met Bridge to Kubernetes kunt u toepassingen rechtstreeks ontwikkelen, fouten opsporen en testen op basis van een AKS-cluster. Ontwikkelaars binnen een team werken samen om gedurende de levenscyclus van de toepassing te bouwen en te testen. U kunt bestaande hulpprogramma's zoals Visual Studio of Visual Studio Code blijven gebruiken met de Bridge to Kubernetes-extensie.

Het gebruik van geïntegreerd ontwikkel- en testproces met Bridge to Kubernetes vermindert de behoefte aan lokale testomgevingen, zoals minikube. In plaats daarvan ontwikkelt en test u op basis van een AKS-cluster, zelfs in beveiligde en geïsoleerde clusters.

Notitie

Bridge to Kubernetes is bedoeld voor gebruik met toepassingen die worden uitgevoerd op Linux-pods en -knooppunten.

De Visual Studio Code-extensie (VS Code) gebruiken voor Kubernetes

Richtlijnen voor best practices

Installeer en gebruik de VS Code-extensie voor Kubernetes wanneer u YAML-manifesten schrijft. U kunt de extensie ook gebruiken voor een geïntegreerde implementatieoplossing, waardoor toepassingseigenaren die niet vaak met het AKS-cluster communiceren, kunnen helpen.

Met de Visual Studio Code-extensie voor Kubernetes kunt u toepassingen ontwikkelen en implementeren in AKS. De extensie biedt de volgende functies:

  • Intellisense voor Kubernetes-resources, Helm-grafieken en -sjablonen.

  • De mogelijkheid om vanuit VS Code door mogelijkheden voor Kubernetes-resources te bladeren, implementeren en bewerken.

  • IntelliSense controleert op resourceaanvragen of -limieten die worden ingesteld in de podspecificaties:

    VS Code extension for Kubernetes warning about missing memory limits

Volgende stappen

Dit artikel is gericht op het uitvoeren van uw cluster en workloads vanuit het perspectief van een clusteroperator. Zie best practices voor clusteroperators voor isolatie en resourcebeheer in Azure Kubernetes Service (AKS) voor informatie over aanbevolen procedures voor beheer.

Zie Ontwikkelen met Bridge to Kubernetes om enkele van deze best practices te implementeren.