Metodtips för programutvecklare för att hantera resurser i Azure Kubernetes Service (AKS)

När du utvecklar och kör program i Azure Kubernetes Service (AKS) finns det några viktiga områden att tänka på. Det sätt på vilket du hanterar dina programdistributioner kan påverka slutanvändarnas upplevelse av tjänster som du tillhandahåller negativt.

Den här artikeln fokuserar på att köra dina kluster och arbetsbelastningar ur ett programutvecklarperspektiv. Information om administrativa metodtips finns i Metodtips för klusteroperatorer för isolering och resurshantering i Azure Kubernetes Service (AKS).

Den här artikeln beskriver följande avsnitt:

  • Begäranden och begränsningar för poddresurser.
  • Sätt att utveckla, felsöka och distribuera program med Bridge till Kubernetes och Visual Studio Code.

Definiera begäranden och begränsningar för poddresurser

Vägledning för bästa praxis

Ange poddbegäranden och begränsningar för alla poddar i YAML-manifesten. Om AKS-klustret använder resurskvoter och du inte definierar dessa värden kan distributionen avvisas.

Använd poddbegäranden och begränsningar för att hantera beräkningsresurser i ett AKS-kluster. Poddbegäranden och begränsningar informerar Kubernetes-schemaläggaren om de beräkningsresurser som ska tilldelas till en podd.

CPU-/minnesbegäranden för poddar

Poddbegäranden definierar en uppsättning processor- och minnesmängder som podden behöver regelbundet.

I poddspecifikationerna är det viktigt att du definierar dessa begäranden och begränsningar baserat på informationen ovan. Om du inte inkluderar dessa värden kan Kubernetes-schemaläggaren inte ta hänsyn till de resurser som dina program behöver för att hjälpa till med schemaläggningsbeslut.

Övervaka programmets prestanda för att justera poddbegäranden. Om du underskattar poddbegäranden kan programmet få sämre prestanda på grund av överschemaläggning av en nod. Om begäranden överskattas kan ditt program ha större schemaläggningssvårigheter.

CPU-/minnesgränser för poddar

Poddgränser anger den maximala mängd cpu och minne som en podd kan använda. Minnesgränser definierar vilka poddar som ska tas bort när noderna är instabila på grund av otillräckliga resurser. Utan rätt angivna gränser tas poddar bort tills resursbelastningen har lyfts. Även om en podd kan överskrida CPU-gränsen med jämna mellanrum tas inte podden bort för att överskrida CPU-gränsen.

Poddgränser definierar när en podd förlorar kontrollen över resursförbrukningen. När den överskrider gränsen markeras podden för borttagning. Det här beteendet upprätthåller nodhälsan och minimerar påverkan på poddar som delar noden. Om du inte anger någon poddgräns är den som standard det högsta tillgängliga värdet på en viss nod.

Undvik att ange en poddgräns som är högre än vad noderna kan stödja. Varje AKS-nod reserverar en viss mängd cpu och minne för kubernetes-kärnkomponenterna. Programmet kan försöka använda för många resurser på noden för att andra poddar ska kunna köras.

Övervaka programmets prestanda vid olika tidpunkter under dagen eller veckan. Fastställ tider för högsta efterfrågan och justera poddgränserna efter de resurser som krävs för att uppfylla maximala behov.

Viktigt!

I poddspecifikationerna definierar du dessa begäranden och begränsningar baserat på ovanstående information. Om du inte tar med dessa värden hindrar Kubernetes-schemaläggaren från att redovisa resurser som dina program behöver för att hjälpa till med schemaläggningsbeslut.

Om schemaläggaren placerar en podd på en nod med otillräckliga resurser, försämras programmets prestanda. Klusteradministratörer måste ange resurskvoter för ett namnområde som kräver att du anger resursbegäranden och gränser. Mer information finns i resurskvoter i AKS-kluster.

När du definierar en CPU-begäran eller gräns mäts värdet i CPU-enheter.

  • 1.0 CPU motsvarar en underliggande virtuell CPU-kärna på noden.
    • Samma mått används för GPU:er.
  • Du kan definiera bråk som mäts i millicores. Till exempel är 100 m 0,1 av en underliggande vCPU-kärna.

I följande grundläggande exempel för en enda NGINX-podd begär podden 100 m CPU-tid och 128Mi minne. Resursgränserna för podden är inställda på 250 m CPU och 256Mi minne.

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

Mer information om resursmätningar och tilldelningar finns i Hantera beräkningsresurser för containrar.

Utveckla och felsöka program mot ett AKS-kluster

Vägledning för bästa praxis

Utvecklingsteam bör distribuera och felsöka mot ett AKS-kluster med bridge till Kubernetes.

Med Bridge to Kubernetes kan du utveckla, felsöka och testa program direkt mot ett AKS-kluster. Utvecklare i ett team samarbetar för att skapa och testa under hela programmets livscykel. Du kan fortsätta att använda befintliga verktyg som Visual Studio eller Visual Studio Code med tillägget Bridge to Kubernetes.

Genom att använda integrerad utveckling och testprocess med Bridge to Kubernetes minskar behovet av lokala testmiljöer som minikube. I stället utvecklar och testar du mot ett AKS-kluster, även i skyddade och isolerade kluster.

Kommentar

Bridge to Kubernetes är avsedd för användning med program som körs på Linux-poddar och noder.

Använda Visual Studio Code-tillägget (VS Code) för Kubernetes

Vägledning för bästa praxis

Installera och använd VS Code-tillägget för Kubernetes när du skriver YAML-manifest. Du kan också använda tillägget för en integrerad distributionslösning, vilket kan hjälpa programägare som sällan interagerar med AKS-klustret.

Visual Studio Code-tillägget för Kubernetes hjälper dig att utveckla och distribuera program till AKS. Tillägget innehåller följande funktioner:

  • Intellisense för Kubernetes-resurser, Helm-diagram och mallar.

  • Möjligheten att bläddra, distribuera och redigera funktioner för Kubernetes-resurser inifrån VS Code.

  • Intellisense söker efter resursbegäranden eller begränsningar som anges i poddspecifikationerna:

    VS Code extension for Kubernetes warning about missing memory limits

Nästa steg

Den här artikeln fokuserar på hur du kör klustret och arbetsbelastningarna ur ett klusteroperatorperspektiv. Information om administrativa metodtips finns i Metodtips för klusteroperatorer för isolering och resurshantering i Azure Kubernetes Service (AKS).

Information om hur du implementerar några av dessa metodtips finns i Utveckla med Bridge till Kubernetes.