Vertikální automatické škálování podů ve službě Azure Kubernetes Service (AKS)

Tento článek obsahuje přehled vertikálního automatického škálování podů (VPA) ve službě Azure Kubernetes Service (AKS), která je založená na opensourcové verzi Kubernetes . Při konfiguraci automaticky nastaví požadavky na prostředky a limity pro kontejnery na každou úlohu na základě předchozího využití. VPA uvolní procesor a paměť pro ostatní pody a pomáhá efektivnímu využití clusteru AKS.

Vertikální automatické škálování podů poskytuje doporučení pro využití prostředků v průběhu času. Pokud chcete spravovat náhlé zvýšení využití prostředků, použijte horizontální automatické škálování podů, které podle potřeby škáluje počet replik podů.

Zaměstnanecké výhody

Vertikální automatické škálování podů poskytuje následující výhody:

  • Analyzuje a upravuje prostředky procesoru a paměti tak, aby byly správné velikosti aplikací. VPA zodpovídá nejen za vertikální navýšení kapacity, ale také za vertikální snížení kapacity na základě využití prostředků v průběhu času.

  • Pod se vyřadí, pokud potřebuje změnit požadavky na prostředky, pokud je jeho režim škálování nastavený na automatické nebo opětovné vytvoření.

  • Nastavení omezení procesoru a paměti pro jednotlivé kontejnery zadáním zásad prostředků

  • Zajišťuje, že uzly mají správné prostředky pro plánování podů.

  • Konfigurovatelné protokolování jakýchkoli úprav prostředků procesoru nebo paměti provedených

  • Vylepšení využití prostředků clusteru a uvolnění procesoru a paměti pro ostatní pody.

Omezení

  • Vertikální automatické škálování podů podporuje maximálně 1 000 podů přidružených k objektům VerticalPodAutoscaler na cluster.

  • VPA může doporučit více prostředků, než je k dispozici v clusteru. V důsledku toho zabráníte přiřazení podu k uzlu a jeho spuštění, protože uzel nemá dostatek prostředků. Toto omezení můžete překonat nastavením limitRange na maximální dostupné prostředky na obor názvů, což zajistí, že pody nebudou žádat o více prostředků, než je zadáno. Kromě toho můžete nastavit maximální povolená doporučení pro prostředky na pod v objektu VerticalPodAutoscaler . Mějte na paměti, že VPA nemůže plně překonat problém s nedostatečným prostředkem uzlu. Rozsah omezení je pevný, ale využití prostředků uzlu se dynamicky mění.

  • Nedoporučujeme používat vertikální automatické škálování podů s horizontálním automatickým škálováním podů, které se škáluje na základě stejných metrik využití procesoru a paměti.

  • Nástroj VPA Recommender ukládá pouze až osm dní historických dat.

  • VPA nepodporuje úlohy založené na JVM kvůli omezenému přehledu o skutečném využití paměti úlohy.

  • Nedoporučuje se ani nepodporuje spouštění vlastní implementace VPA spolu s touto spravovanou implementací VPA. Podpora dalšího nebo přizpůsobeného doporučovače

  • Kontejnery AKS pro Windows se nepodporují.

Než začnete

  • Cluster AKS používá Kubernetes verze 1.24 a vyšší.

  • Nainstalované a nakonfigurované rozhraní příkazového řádku Azure CLI verze 2.52.0 nebo novější. Verzi zjistíte spuštěním příkazu az --version. Pokud potřebujete instalaci nebo upgrade, přečtěte si téma Instalace Azure CLI.

  • kubectl by měl být připojený ke clusteru, který chcete nainstalovat VPA.

Přehled VPA

Objekt rozhraní API

Vertikální automatické škálování podů je prostředek rozhraní API ve skupině rozhraní API pro automatické škálování Kubernetes. Podporovaná verze je 0.11 a vyšší a najdete ji v úložišti automatického škálování Kubernetes.

Objekt VPA se skládá ze tří komponent:

  • Doporučovací nástroj – monitoruje aktuální a předchozí spotřebu prostředků a na základě toho poskytuje doporučené hodnoty pro požadavky nebo limity procesoru a paměti kontejnerů. Doporučovací nástroj monitoruje historii metrik, události OOM (Nedostatek paměti) a specifikace nasazení VPA a navrhuje spravedlivé požadavky. Poskytnutím správné konfigurace požadavků na prostředky a omezení se limity zvýší a sníží.

  • Aktualizátor – kontroluje, které z spravovaných podů mají nastavené správné prostředky, a pokud ne, zabije je, aby je jejich kontrolery mohly znovu vytvořit s aktualizovanými požadavky.

  • Kontroler přístupu VPA – nastavuje správné požadavky na prostředky na nových podech (vytvořených nebo znovu vytvořených kontrolerem kvůli aktivitě updateru).

Kontroler přístupu VPA

Kontroler přístupu VPA je binární soubor, který se zaregistruje jako webhook Mutating Admission Webhook. Při každém vytvořeném podu získá požadavek ze serveru api a vyhodnotí, jestli existuje odpovídající konfigurace VPA, nebo najde odpovídající konfiguraci a použije aktuální doporučení k nastavení požadavků na prostředky v podu.

Samostatná úloha se spouští mimo kontroler přístupu VPA, který se nazývá overlay-vpa-cert-webhook-check. Slouží overlay-vpa-cert-webhook-check k vytvoření a obnovení certifikátů a registraci kontroleru přístupu VPA jako MutatingWebhookConfiguration.

Pro zajištění vysoké dostupnosti podporuje AKS dvě repliky kontroleru přístupu.

Režimy operací objektů VPA

Pro každý kontroler, který chcete mít automaticky vypočítané požadavky na prostředky, se vloží prostředek vertikálního automatického škálování podů. Nejčastěji se jedná o nasazení. Existují čtyři režimy, ve kterých VPA fungují:

  • Auto – VPA přiřazuje žádosti o prostředky během vytváření podů a aktualizuje existující pody pomocí upřednostňovaného mechanismu aktualizace. Auto V současné době je ekvivalentní a Recreatetaké je výchozím režimem. Jakmile je k dispozici bezplatná (místní) aktualizace požadavků podů, může se použít jako upřednostňovaný mechanismus aktualizace v Auto režimu. Při použití Recreate režimu VPA vyřadí pod, pokud potřebuje změnit požadavky na prostředky. Může to způsobit restartování podů najednou, což způsobí nekonzistence aplikací. V této situaci můžete omezit restartování a zachovat konzistenci pomocí souboru PodDisruptionBudget.
  • Recreate – VPA přiřazuje žádosti o prostředky během vytváření podů a také aktualizuje existující pody tak, že je vyřadí, když se požadované prostředky výrazně liší od nového doporučení (pokud je definovaný rozpočet přerušení podu). Tento režim by se měl používat jen zřídka, pouze pokud potřebujete zajistit, aby se pody restartovaly při každé změně požadavku na prostředek. Auto V opačném případě je režim upřednostňovaný, což může využít výhod aktualizací bez restartování, jakmile budou dostupné.
  • Initial – VPA přiřazuje žádosti o prostředky pouze během vytváření podů a potom se nikdy nezmění.
  • Off – VPA automaticky nemění požadavky na prostředky podů. Doporučení se počítají a je možné je zkontrolovat v objektu VPA.

Model nasazení během vývoje aplikací

Běžný model nasazení doporučujeme, pokud neznáte nástroj VPA, je provést během vývoje aplikací následující kroky, abyste identifikovali jeho jedinečné charakteristiky využití prostředků, otestujte VPA, abyste ověřili, že funguje správně, a otestujte spolu s ostatními komponentami Kubernetes, abyste optimalizovali využití prostředků clusteru.

  1. V produkčním clusteru nastavte UpdateMode = Vypnuto a spusťte VPA v režimu doporučení, abyste mohli testovat a získat znalosti VPA. UpdateMode = "Vypnuto" může zabránit zavedení chybné konfigurace, která může způsobit výpadek.

  2. Nejprve vytvořte pozorovatelnost shromažďováním telemetrie skutečného využití prostředků v daném časovém období. To vám pomůže pochopit chování a známky příznaků nebo problémů z prostředků kontejnerů a podů ovlivněných úlohami, které na nich běží.

  3. Seznamte se s daty monitorování, abyste porozuměli charakteristikám výkonu. Na základě tohoto přehledu nastavte požadované požadavky nebo limity odpovídajícím způsobem a pak v dalším nasazení nebo upgradu.

  4. Nastavte updateMode hodnotu na Autohodnotu , Recreatenebo Initial v závislosti na vašich požadavcích.

Nasazení, upgrade nebo zákaz VPA v clusteru

V této části nasadíte, upgradujete nebo zakážete vertikální automatické škálování podů ve vašem clusteru.

  1. Pokud chcete povolit VPA v novém clusteru, použijte --enable-vpa parametr s příkazem az aks create .

    az aks create -n myAKSCluster -g myResourceGroup --enable-vpa
    

    Po několika minutách se příkaz dokončí a vrátí informace o clusteru ve formátu JSON.

  2. Volitelně můžete povolit VPA v existujícím clusteru pomocí --enable-vpa příkazu [https://learn.microsoft.com/en-us/cli/azure/aks?view=azure-cli-latest#az-aks-update].

    az aks update -n myAKSCluster -g myResourceGroup --enable-vpa 
    

    Po několika minutách se příkaz dokončí a vrátí informace o clusteru ve formátu JSON.

  3. Volitelně můžete zakázat VPA v existujícím clusteru pomocí --disable-vpa příkazu [https://learn.microsoft.com/en-us/cli/azure/aks?view=azure-cli-latest#az-aks-update].

    az aks update -n myAKSCluster -g myResourceGroup --disable-vpa
    

    Po několika minutách se příkaz dokončí a vrátí informace o clusteru ve formátu JSON.

  4. K ověření úspěšného vytvoření podů vertikálního automatického škálování podů použijte příkaz kubectl get .

kubectl get pods -n kube-system

Výstup příkazu obsahuje následující výsledky specifické pro pody VPA. Pody by měly zobrazovat stav spuštění .

NAME                                        READY   STATUS    RESTARTS   AGE
vpa-admission-controller-7867874bc5-vjfxk   1/1     Running   0          41m
vpa-recommender-5fd94767fb-ggjr2            1/1     Running   0          41m
vpa-updater-56f9bfc96f-jgq2g                1/1     Running   0          41m

Testování instalace vertikálního automatického škálování podů

Následující kroky vytvoří nasazení se dvěma pody, z nichž každý spustí jeden kontejner, který požaduje 100 milicores a pokusí se využít mírně nad 500 milicores. Vytvoří se také konfigurace VPA, která ukazuje na nasazení. VPA sleduje chování podů a po přibližně pěti minutách se aktualizují o vyšší požadavek na procesor.

  1. Vytvořte soubor s názvem hamster.yaml a zkopírujte v následujícím manifestu příkladu vertikálního automatického škálování podů z úložiště GitHub kubernetes/autoscaler .

  2. Pomocí příkazu kubectl apply nasaďte příklad vertikálního hamster.yaml automatického škálování podů a zadejte název manifestu YAML:

    kubectl apply -f hamster.yaml
    

    Po několika minutách se příkaz dokončí a vrátí informace o clusteru ve formátu JSON.

  3. Spuštěním následujícího příkazu kubectl get získejte pody z ukázkové aplikace hamster:

    kubectl get pods -l app=hamster
    

    Příklad výstupu vypadá přibližně takto:

    hamster-78f9dcdd4c-hf7gk   1/1     Running   0          24s
    hamster-78f9dcdd4c-j9mc7   1/1     Running   0          24s
    
  4. K zobrazení rezervace procesoru a paměti použijte příkaz kubectl describe na jednom z podů. Nahraďte "exampleID" jedním z ID podů vrácených ve výstupu z předchozího kroku.

    kubectl describe pod hamster-exampleID
    

    Ukázkový výstup je fragment informací o clusteru:

     hamster:
        Container ID:  containerd://
        Image:         k8s.gcr.io/ubuntu-slim:0.1
        Image ID:      sha256:
        Port:          <none>
        Host Port:     <none>
        Command:
          /bin/sh
        Args:
          -c
          while true; do timeout 0.5s yes >/dev/null; sleep 0.5s; done
        State:          Running
          Started:      Wed, 28 Sep 2022 15:06:14 -0400
        Ready:          True
        Restart Count:  0
        Requests:
          cpu:        100m
          memory:     50Mi
        Environment:  <none>
    

    Pod má v tomto příkladu rezervovaných 100 milicpu a 50 Mibibajtů paměti. Pro tuto ukázkovou aplikaci potřebuje pod ke spuštění méně než 100 milicpu, takže není k dispozici žádná kapacita procesoru. Pody také vyhradí mnohem méně paměti, než je potřeba. Nasazení vertikálního automatického škálování podů vpa-recommender analyzuje pody hostující aplikaci hamster a zjistí, jestli jsou vhodné požadavky na procesor a paměť. Pokud jsou potřeba úpravy, nástroj vpa-updater znovu zobrazí pody s aktualizovanými hodnotami.

  5. Počkejte, než vpa-updater spustí nový pod hamster, což by mělo trvat několik minut. Pody můžete monitorovat pomocí příkazu kubectl get .

    kubectl get --watch pods -l app=hamster
    
  6. Po spuštění nového podu hamster popište pod, na kterém běží příkaz kubectl, a zobrazte aktualizované rezervace procesoru a paměti.

    kubectl describe pod hamster-<exampleID>
    

    Ukázkový výstup je fragment informací popisující pod:

    State:          Running
      Started:      Wed, 28 Sep 2022 15:09:51 -0400
    Ready:          True
    Restart Count:  0
    Requests:
      cpu:        587m
      memory:     262144k
    Environment:  <none>
    

    V předchozím výstupu vidíte, že se rezervace procesoru zvýšila na 587 milicpu, což je více než pětkrát původní hodnota. Paměť se zvýšila na 262 144 kilobajtů, což je přibližně 250 Mibibajtů nebo pětkrát původní hodnota. Tento pod byl nedostatečně prostředků a vertikální automatické škálování podů opravilo odhad s mnohem vhodnější hodnotou.

  7. Pokud chcete zobrazit aktualizovaná doporučení z VPA, spusťte příkaz kubectl describe , který popisuje informace o prostředcích hamster-vpa.

    kubectl describe vpa/hamster-vpa
    

    Ukázkový výstup je fragment informací o využití prostředků:

     State:          Running
      Started:      Wed, 28 Sep 2022 15:09:51 -0400
    Ready:          True
    Restart Count:  0
    Requests:
      cpu:        587m
      memory:     262144k
    Environment:  <none>
    

Nastavení požadavků automatického škálování podů

Vertikální automatické škálování podů VerticalPodAutoscaler používá objekt k automatickému nastavení požadavků na prostředky u podů, pokud je vlastnost updateMode nastavená na hodnotu Auto. V závislosti na vašich požadavcích a testování můžete nastavit jinou hodnotu. V tomto příkladu je updateMode nastaven na Recreate.

  1. Spuštěním následujícího příkazu povolte pro cluster protokol VPA pro váš cluster. Nahraďte název myAKSCluster clusteru názvem clusteru AKS a nahraďte myResourceGroup názvem skupiny prostředků, ve které je cluster hostovaný.

    az aks update -n myAKSCluster -g myResourceGroup --enable-vpa
    
  2. Vytvořte soubor s názvem azure-autodeploy.yamla zkopírujte ho v následujícím manifestu.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: vpa-auto-deployment
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: vpa-auto-deployment
      template:
        metadata:
          labels:
            app: vpa-auto-deployment
        spec:
          containers:
          - name: mycontainer
            image: mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine
            resources:
              requests:
                cpu: 100m
                memory: 50Mi
            command: ["/bin/sh"]
            args: ["-c", "while true; do timeout 0.5s yes >/dev/null; sleep 0.5s; done"]
    

    Tento manifest popisuje nasazení, které má dva pody. Každý pod má jeden kontejner, který požaduje 100 miliCPU a 50 MiB paměti.

  3. Vytvořte pod pomocí příkazu kubectl create , jak je znázorněno v následujícím příkladu:

    kubectl create -f azure-autodeploy.yaml
    

    Po několika minutách se příkaz dokončí a vrátí informace o clusteru ve formátu JSON.

  4. Spuštěním následujícího příkazu kubectl get získejte pody:

    kubectl get pods
    

    Výstup vypadá podobně jako v následujícím příkladu s názvem a stavem podů:

    NAME                                   READY   STATUS    RESTARTS   AGE
    vpa-auto-deployment-54465fb978-kchc5   1/1     Running   0          52s
    vpa-auto-deployment-54465fb978-nhtmj   1/1     Running   0          52s
    
  5. Vytvořte soubor s názvem azure-vpa-auto.yamla zkopírujte ho v následujícím manifestu VerticalPodAutoscaler, který popisuje:

    apiVersion: autoscaling.k8s.io/v1
    kind: VerticalPodAutoscaler
    metadata:
      name: vpa-auto
    spec:
      targetRef:
        apiVersion: "apps/v1"
        kind:       Deployment
        name:       vpa-auto-deployment
      updatePolicy:
        updateMode: "Recreate"
    

    Hodnota targetRef.name určuje, že libovolný pod, který je řízen nasazením pojmenovaným vpa-auto-deployment , patří do VerticalPodAutoscaler. Hodnota updateMode znamená, že kontroler vertikálního automatického Recreate škálování podů může odstranit pod, upravit požadavky na procesor a paměť a pak vytvořit nový pod.

  6. Použijte manifest v clusteru pomocí příkazu kubectl apply :

    kubectl create -f azure-vpa-auto.yaml
    
  7. Počkejte několik minut a znovu zobrazte spuštěné pody spuštěním následujícího příkazu kubectl get :

    kubectl get pods
    

    Výstup se podobá následujícímu příkladu, který ukazuje, že se názvy podů změnily a stav podů:

    NAME                                   READY   STATUS    RESTARTS   AGE
    vpa-auto-deployment-54465fb978-qbhc4   1/1     Running   0          2m49s
    vpa-auto-deployment-54465fb978-vbj68   1/1     Running   0          109s
    
  8. Pomocí příkazu Kubectl get získejte podrobné informace o jednom ze spuštěných podů. Nahraďte podName názvem jednoho z podů, které jste získali v předchozím kroku.

    kubectl get pod podName --output yaml
    

    Výstup se podobá následujícímu příkladu, který ukazuje, že řadič vertikálního automatického škálování podů zvýšil požadavek na paměť na 262144k a požadavek procesoru na 25 miliCPU.

    apiVersion: v1
    kind: Pod
    metadata:
      annotations:
        vpaObservedContainers: mycontainer
        vpaUpdates: 'Pod resources updated by vpa-auto: container 0: cpu request, memory
          request'
      creationTimestamp: "2022-09-29T16:44:37Z"
      generateName: vpa-auto-deployment-54465fb978-
      labels:
        app: vpa-auto-deployment
    
    spec:
      containers:
      - args:
        - -c
        - while true; do timeout 0.5s yes >/dev/null; sleep 0.5s; done
        command:
        - /bin/sh
        image: mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine
        imagePullPolicy: IfNotPresent
        name: mycontainer
        resources:
          requests:
            cpu: 25m
            memory: 262144k
    
  9. Pokud chcete získat podrobné informace o vertikálním automatickém škálování podů a jeho doporučeních pro procesor a paměť, použijte příkaz kubectl get :

    kubectl get vpa vpa-auto --output yaml
    

    Výstup vypadá podobně jako v následujícím příkladu:

     recommendation:
      containerRecommendations:
      - containerName: mycontainer
        lowerBound:
          cpu: 25m
          memory: 262144k
        target:
          cpu: 25m
          memory: 262144k
        uncappedTarget:
          cpu: 25m
          memory: 262144k
        upperBound:
          cpu: 230m
          memory: 262144k
    

    Výsledky ukazují target atribut, který určuje, že aby kontejner běžel optimálně, nemusí měnit procesor ani cíl paměti. Výsledky se můžou lišit v tom, kde je doporučení cílového procesoru a paměti vyšší.

    Vertikální automatické škálování podů používá lowerBound atributy a upperBound určuje, jestli se má pod odstranit a nahradit ho novým podem. Pokud má pod požadavky menší než dolní mez nebo větší než horní mez, vertikální automatické škálování podů odstraní pod a nahradí ho podem, který splňuje cílový atribut.

Další doporučení pro vertikální automatické škálování podů

V analyzátoru osvědčených nástrojů je jednou ze základních komponent doporučovací nástroj. Poskytuje doporučení pro využití prostředků na základě spotřeby prostředků v reálném čase. AKS nasadí doporučovací nástroj, když cluster povolí VPA. Můžete nasadit přizpůsobený doporučovač nebo další doporučovač se stejnou imagí jako výchozí. Výhodou přizpůsobeného doporučovacího modulu je, že můžete přizpůsobit logiku doporučení. Pokud existuje mnoho objektů VPA, můžete pomocí dalšího doporučovacího nástroje rozdělit vpady na několik doporučovačů.

Následující příklad představuje další doporučení, které se týká stávajícího clusteru AKS. Pak nakonfigurujete objekt VPA tak, aby používal další doporučovací nástroj.

  1. Vytvořte soubor s názvem extra_recommender.yaml a zkopírujte ho v následujícím manifestu:

    apiVersion: apps/v1 
    kind: Deployment 
    metadata: 
      name: extra-recommender 
      namespace: kube-system 
    spec: 
      replicas: 1 
      selector: 
        matchLabels: 
          app: extra-recommender 
      template: 
        metadata: 
          labels: 
            app: extra-recommender 
        spec: 
          serviceAccountName: vpa-recommender 
          securityContext: 
            runAsNonRoot: true 
            runAsUser: 65534 # nobody 
          containers: 
          - name: recommender 
            image: registry.k8s.io/autoscaling/vpa-recommender:0.13.0 
            imagePullPolicy: Always 
            args: 
              - --recommender-name=extra-recommender 
            resources: 
              limits: 
                cpu: 200m 
                memory: 1000Mi 
              requests: 
                cpu: 50m 
                memory: 500Mi 
            ports: 
            - name: prometheus 
              containerPort: 8942 
    
  2. Nasaďte příklad vertikálního automatického extra-recomender.yaml škálování podů pomocí příkazu kubectl apply a zadejte název manifestu YAML.

    kubectl apply -f extra-recommender.yaml 
    

    Po několika minutách se příkaz dokončí a vrátí informace o clusteru ve formátu JSON.

  3. Vytvořte soubor s názvem hamnster_extra_recommender.yaml a zkopírujte ho v následujícím manifestu:

    apiVersion: "autoscaling.k8s.io/v1" 
    kind: VerticalPodAutoscaler 
    metadata: 
      name: hamster-vpa 
    spec: 
      recommenders:  
        - name: 'extra-recommender' 
      targetRef: 
        apiVersion: "apps/v1" 
        kind: Deployment 
        name: hamster 
      updatePolicy: 
        updateMode: "Auto" 
      resourcePolicy: 
        containerPolicies: 
          - containerName: '*' 
            minAllowed: 
              cpu: 100m 
              memory: 50Mi 
            maxAllowed: 
              cpu: 1 
              memory: 500Mi 
            controlledResources: ["cpu", "memory"] 
    --- 
    apiVersion: apps/v1 
    kind: Deployment 
    metadata: 
      name: hamster 
    spec: 
      selector: 
        matchLabels: 
          app: hamster 
      replicas: 2 
      template: 
        metadata: 
          labels: 
            app: hamster 
        spec: 
          securityContext: 
            runAsNonRoot: true 
            runAsUser: 65534 # nobody 
          containers: 
            - name: hamster 
              image: k8s.gcr.io/ubuntu-slim:0.1 
              resources: 
                requests: 
                  cpu: 100m 
                  memory: 50Mi 
              command: ["/bin/sh"] 
              args: 
                - "-c" 
                - "while true; do timeout 0.5s yes >/dev/null; sleep 0.5s; done" 
    

    Pokud memory není zadán, controlledResourcesdoporučovací nástroj nereaguje na události OOM. V tomto případě nastavujete pouze procesor v controlledValues. controlledValuesumožňuje zvolit, jestli se mají žádosti o prostředky kontejneru aktualizovat podle RequestsOnly možnosti, nebo jak požadavky na prostředky, tak omezení.RequestsAndLimits Výchozí hodnota je RequestsAndLimits. Pokud tuto možnost použijete RequestsAndLimits , požadavky se počítají na základě skutečného využití a limity se počítají na základě požadavku a limitu aktuálního podu.

    Pokud například začínáte s podem, který požaduje 2 procesory a omezení na 4 procesory, VPA vždy nastaví limit na dvojnásobek požadavků. Stejný princip platí pro paměť. Když použijete RequestsAndLimits režim, může sloužit jako podrobný plán pro počáteční požadavky a limity prostředků aplikace.

Objekt VPA můžete zjednodušit pomocí automatického režimu a doporučení pro výpočetní prostředí pro procesor i paměť.

  1. hamster_extra-recomender.yaml Nasaďte příklad pomocí příkazu kubectl apply a zadejte název manifestu YAML.

    kubectl apply -f hamster_customized_recommender.yaml
    
  2. Počkejte, než vpa-updater spustí nový pod hamster, což by mělo trvat několik minut. Pody můžete monitorovat pomocí příkazu kubectl get .

    kubectl get --watch pods -l app=hamster
    
  3. Po spuštění nového podu hamster popište pod, na kterém běží příkaz kubectl, a zobrazte aktualizované rezervace procesoru a paměti.

    kubectl describe pod hamster-<exampleID>
    

    Ukázkový výstup je fragment informací popisující pod:

    State:          Running
      Started:      Wed, 28 Sep 2022 15:09:51 -0400
    Ready:          True
    Restart Count:  0
    Requests:
      cpu:        587m
      memory:     262144k
    Environment:  <none>
    
  4. Pokud chcete zobrazit aktualizovaná doporučení z VPA, spusťte příkaz kubectl describe , který popisuje informace o prostředcích hamster-vpa.

    kubectl describe vpa/hamster-vpa
    

    Ukázkový výstup je fragment informací o využití prostředků:

    State:          Running
     Started:      Wed, 28 Sep 2022 15:09:51 -0400
    Ready:          True
    Restart Count:  0
    Requests:
      cpu:        587m
      memory:     262144k
    Environment:  <none>
    Spec:
      recommenders:
        Name: customized-recommender
    

Řešení problému

Pokud chcete diagnostikovat problémy s instalací VPA, proveďte následující kroky.

  1. Pomocí následujícího příkazu zkontrolujte, jestli jsou spuštěné všechny systémové komponenty:

    kubectl --namespace=kube-system get pods|grep vpa
    

Výstup by měl obsahovat tři pody – doporučovač, aktualizátor a kontroler přístupu se stavem Running.

  1. Ověřte, jestli systémové komponenty protokolovat nějaké chyby. Pro každý z podů vrácených předchozím příkazem spusťte následující příkaz:

    kubectl --namespace=kube-system logs [pod name] | grep -e '^E[0-9]\{4\}'
    
  2. Spuštěním následujícího příkazu ověřte, že byla vytvořena definice vlastního prostředku:

    kubectl get customresourcedefinition | grep verticalpodautoscalers
    

Další kroky

Tento článek vám ukázal, jak automaticky škálovat využití prostředků, jako je procesor a paměť, uzlů clusteru tak, aby odpovídaly požadavkům aplikace.

  • Horizontální automatické škálování podů můžete také použít k automatické úpravě počtu podů, které spouští vaši aplikaci. Postup použití horizontálního automatického škálování podů najdete v tématu Škálování aplikací v AKS.

  • Další informace o definicích souvisejících objektů VPA najdete v tématu Vertikální automatické škálování podů [reference k rozhraní API].