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 biedt. Als u wilt slagen, moet u rekening houden met een aantal best practices die u kunt volgen bij het ontwikkelen en uitvoeren van toepassingen in AKS.

Dit artikel is gericht op het uitvoeren van uw cluster en workloads vanuit het perspectief van toepassingsontwikkelaars. Zie Best practices voor clusteroperator voor isolatie en resourcebeheer in Azure Kubernetes Service (AKS)voor meer informatie over best practices voor beheer. In dit artikel leert u het volgende:

  • Aanvragen en limieten voor podresources.
  • Manieren om toepassingen te ontwikkelen en implementeren met Bridge to Kubernetes en Visual Studio Code.

Resourceaanvragen en -limieten voor pods definiëren

Richtlijnen voor best practices

Stel podaanvragen en -limieten in 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 de rekenbronnen binnen een AKS-cluster te beheren. Podaanvragen en -limieten informeren de Kubernetes-scheduler welke rekenresources aan een pod moeten worden toegewezen.

CPU-/geheugenaanvragen voor pods

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

In uw podspecificaties is het belangrijk best practice aanvragen en limieten te definiëren op basis van de bovenstaande informatie. Als u deze waarden niet opsluit, kan de Kubernetes-scheduler geen rekening houden met de resources die uw toepassingen nodig hebben om te helpen bij het nemen van planningsbeslissingen.

Controleer de prestaties van uw toepassing om podaanvragen aan te passen.

  • Als u podaanvragen te laag ingescheed, kan de prestaties van uw toepassing verslechteren als gevolg van overplanning van een knooppunt.
  • Als aanvragen worden overschattingen gemaakt, heeft uw toepassing mogelijk meer moeite om een planning te maken.

Limieten voor CPU/geheugen van 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 afgeschaft totdat de resourcedruk wordt opgeheven.
  • Hoewel een pod de CPU-limiet periodiek kan overschrijden, wordt de pod niet meer gebruikt voor het overschrijden van de CPU-limiet.

Podlimieten definiëren wanneer een pod de controle over het resourceverbruik heeft verloren. Wanneer de limiet wordt overschreden, wordt de pod gemarkeerd voor het stoppen. Dit gedrag houdt de knooppunttoestand bij 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 belangrijkste Kubernetes-onderdelen. Uw toepassing probeert mogelijk te veel resources op het knooppunt te gebruiken om andere pods te kunnen uitvoeren.

De prestaties van uw toepassing op verschillende tijdstippen gedurende de dag of week bewaken. Bepaal piekmomenten en stem de podlimieten af op de resources die nodig zijn om te voldoen aan de maximale behoeften.

Belangrijk

Definieer deze aanvragen en limieten in uw podspecificaties op basis van de bovenstaande informatie. Als u deze waarden niet opsluit, voorkomt u dat de Kubernetes-scheduler resources in rekening kan brengen die uw toepassingen nodig hebben om te helpen bij het nemen van planningsbeslissingen.

Als de scheduler een pod op een knooppunt met onvoldoende resources plaatst, zullen de prestaties van de toepassing verslechteren. Clusterbeheerders moeten resourcequota instellen voor een naamruimte die vereist dat u resourceaanvragen en -limieten instelt. Zie resourcequota op 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 incores. 100m is bijvoorbeeld 0,1 van een onderliggende vCPU-kern.

In het volgende eenvoudige voorbeeld voor één NGINX-pod vraagt de pod 100m CPU-tijd en 128Mi aan geheugen aan. 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 beheren voor containers voor meer informatie over resourcemetingen en -toewijzingen.

Toepassingen ontwikkelen en fouten opsporen in een AKS-cluster

Richtlijnen voor best practices

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

Met Bridge to Kubernetes kunt u toepassingen rechtstreeks op een AKS-cluster ontwikkelen, fouten opsporen en testen. 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 extensie Bridge to Kubernetes.

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

Notitie

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

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

Richtlijnen voor best practices

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

De Visual Studio Code-extensie voor Kubernetes helpt u bij het ontwikkelen en implementeren van toepassingen in AKS. De extensie biedt:

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

  • Blader, implementeer en bewerk mogelijkheden voor Kubernetes-resources vanuit VS Code.

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

    VS Code-extensie voor Kubernetes-waarschuwing over ontbrekende geheugenlimieten

Volgende stappen

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

Zie de volgende artikelen voor het implementeren van een aantal van deze best practices: