Agenti škálovací sady virtuálních počítačů Azure

Služby Azure DevOps

Agenti škálovací sady virtuálních počítačů Azure, dále označovaní jako agenti škálovací sady, jsou formou agentů v místním prostředí, které je možné automaticky škálovat tak, aby splňovaly vaše požadavky. Díky této elasticitě nemusí být vyhrazení agenti spuštěni celou dobu. Na rozdíl od agentů hostovaných Microsoftem můžete flexibilně volit velikost a image počítačů, na kterých agenti běží.

Pokud se vám líbí agenti hostovaní Microsoftem, ale jsou omezeni tím, co nabízejí, měli byste zvážit agenty škálovací sady. Několik příkladů:

  • Potřebujete více paměti, více procesorů, více úložiště nebo více vstupně-výstupních operací než to, co nabízíme v nativních agentech hostovaných Microsoftem.
  • Potřebujete virtuální počítač NCv2 s konkrétní sadou instrukcí pro účely strojového učení.
  • Potřebujete provést nasazení do privátní služby Azure App Service v privátní virtuální síti bez příchozího připojení.
  • Potřebujete otevřít podnikovou bránu firewall pro konkrétní IP adresy, aby agenti hostovaní Microsoftem mohli komunikovat s vašimi servery.
  • Potřebujete omezit síťové připojení počítačů agentů a umožnit jim přístup pouze ke schváleným lokalitám.
  • Nemůžete od Microsoftu získat dostatek agentů, kteří by splňovali vaše potřeby.
  • Vaše úlohy překračují časový limit agentů hostovaných Microsoftem.
  • Paralelní úlohy hostované Microsoftem nemůžete rozdělit na jednotlivé projekty nebo týmy ve vaší organizaci.
  • Chcete v agentovi spustit několik po sobě jdoucích úloh a využít tak přírůstkové mezipaměti balíčků na úrovni zdroje a počítače.
  • Před zahájením přijímání úloh chcete spustit konfiguraci nebo zahřátí mezipaměti agenta.

Pokud se vám líbí agenti v místním prostředí, ale chcete, abyste jejich správu mohli zjednodušit, měli byste zvážit agenty škálovací sady. Několik příkladů:

  • Nechcete nepřetržitě spouštět vyhrazené agenty. Chcete zrušit zřízení počítačů agentů, které se nepoužívají ke spouštění úloh.
  • Ve svém kanálu spouštíte nedůvěryhodný kód a po každé úloze chcete obnovit počítače agentů z image.
  • Chcete pravidelně aktualizovat základní image pro vaše agenty.

Poznámka:

  • Agenty pro Mac nejde spustit pomocí škálovacích sad. Tímto způsobem můžete spouštět jenom agenty pro Windows nebo Linux.

  • Použití fondů agentů VMSS pro Azure DevOps Services je podporováno pouze pro veřejný cloud Azure (globální služby). Fondy agentů VMSS v současné době nepodporují žádné další nabídky národních cloudů.

  • Službu VMSS byste neměli přidružit k více fondům.

Vytvoření škálovací sady

Při přípravě na vytváření agentů škálovací sady musíte nejprve vytvořit škálovací sadu virtuálních počítačů na webu Azure Portal. Škálovací sadu virtuálních počítačů musíte vytvořit určitým způsobem, aby ji služba Azure Pipelines dokázala spravovat. Zejména je nutné zakázatautomatické škálování , aby služba Azure Pipelines můžou určit, jak provádět škálování na základě počtu příchozích úloh kanálu. K vytvoření škálovací sady doporučujeme použít následující kroky.

V následujícím příkladu se pomocí Azure Cloud Shellu vytvoří nová skupina prostředků a škálovací sada virtuálních počítačů s UbuntuLTS.

Poznámka:

V tomto příkladu se pro škálovací sadu používá image virtuálního počítače UbuntuLTS. Pokud jako základ pro agenta potřebujete přizpůsobenou image virtuálního počítače, vytvořte přizpůsobenou image před vytvořením škálovací sady podle kroků v tématu Vytvoření škálovací sady s vlastní imagí, softwarem nebo velikostí disku.

  1. Přejděte do Azure Cloud Shellu na adrese https://shell.azure.com/.

  2. Spuštěním následujícího příkazu ověřte výchozí předplatné Azure.

    az account list -o table
    

    Pokud požadované předplatné není uvedené jako výchozí, vyberte požadované předplatné.

    az account set -s <your subscription ID>
    
  3. Vytvořte skupinu prostředků pro škálovací sadu virtuálních počítačů.

    az group create \
    --location westus \
    --name vmssagents
    
  4. Ve skupině prostředků vytvořte škálovací sadu virtuálních počítačů. V tomto příkladu je zadána image virtuálního počítače s Ubuntu2204.

    az vmss create \
    --name vmssagentspool \
    --resource-group vmssagents \
    --image Ubuntu2204 \
    --vm-sku Standard_D2_v4 \
    --storage-sku StandardSSD_LRS \
    --authentication-type SSH \
    --generate-ssh-keys \
    --instance-count 2 \
    --disable-overprovision \
    --upgrade-policy-mode manual \
    --single-placement-group false \
    --platform-fault-domain-count 1 \
    --load-balancer "" \
    --orchestration-mode Uniform
    

    Poznámka:

    Azure Pipelines nepodporuje nadměrné zřizování a automatické škálování škálovací sady. Ujistěte se, že jsou obě funkce pro vaši škálovací sadu zakázané.

    Vzhledem k tomu, že Azure Pipelines spravuje škálovací sadu, vyžadují se nebo doporučují následující nastavení:

    • --disable-overprovision -Požadované
    • --upgrade-policy-mode manual -Požadované
    • --load-balancer "" – Azure Pipelines nevyžaduje nástroj pro vyrovnávání zatížení ke směrování úloh do agentů ve fondu agentů škálovací sady, ale konfigurace nástroje pro vyrovnávání zatížení je jedním ze způsobů, jak získat IP adresu pro agenty škálovací sady, které můžete použít pro pravidla brány firewall. Další možností pro získání IP adresy pro agenty škálovací sady je vytvoření škálovací sady pomocí --public-ip-address možností. Další informace o konfiguraci škálovací sady pomocí nástroje pro vyrovnávání zatížení nebo veřejné IP adresy najdete v dokumentaci ke službě Virtual Machine Scale Sets a az vmss create.
    • --instance-count 2 – toto nastavení není povinné, ale nabízí možnost ověřit, jestli je škálovací sada plně funkční, než vytvoříte fond agentů. Vytvoření těchto dvou virtuálních počítačů může trvat několik minut. Když později vytvoříte fond agentů, Azure Pipelines tyto dva virtuální počítače odstraní a vytvoří nové.

    Důležité

    Pokud tento skript spustíte pomocí Azure CLI ve Windows, musíte ho ""--load-balancer "" uzavřít do jednoduchých uvozovek takto: --load-balancer '""'

    Pokud vaše velikost virtuálního počítače podporuje dočasné disky s operačním systémem, následující parametry pro povolení dočasných disků s operačním systémem jsou volitelné, ale doporučuje se zlepšit dobu opětovného vytvoření virtuálního počítače.

    • --ephemeral-os-disk true
    • --os-disk-caching readonly

    Důležité

    Dočasné disky s operačním systémem nejsou podporované ve všech velikostech virtuálních počítačů. Seznam podporovaných velikostí virtuálních počítačů najdete v tématu Dočasné disky s operačním systémem pro virtuální počítače Azure.

    Vyberte libovolnou image Linuxu nebo Windows – buď z Azure Marketplace, nebo vlastní image – a vytvořte škálovací sadu. Neinstalujte agenta Azure Pipelines předem na image. Azure Pipelines automaticky nainstaluje agenta při zřídí nové virtuální počítače. V předchozím příkladu jsme použili prostý UbuntuLTS obrázek. Pokyny k vytváření a používání vlastní image najdete v nejčastějších dotazech.

    Vyberte skladovou položku virtuálního počítače a skladovou položku úložiště.

    Poznámka:

    Aspekty licencování nás omezují na distribuci imagí hostovaných Microsoftem. Tyto image nemůžeme poskytnout, abyste je mohli používat v agentech škálovací sady. Skripty, které používáme k vygenerování těchto imagí, jsou ale opensourcové. Tyto skripty můžete používat a vytvářet vlastní image.

  5. Po vytvoření škálovací sady přejděte na webu Azure Portal k vaší škálovací sadě a ověřte následující nastavení:

    • Zásady upgradu – ruční

      Verify upgrade policy.

      Toto nastavení můžete ověřit také spuštěním následujícího příkazu Azure CLI.

      az vmss show --resource-group vmssagents --name vmssagentspool --output table
      
      Name            ResourceGroup    Location    Zones    Capacity    Overprovision    UpgradePolicy
      --------------  ---------------  ----------  -------  ----------  ---------------  ---------------
      vmssagentspool  vmssagents       westus               0           False            Manual
      
    • Škálování – ruční škálování

      Verify manual scale policy.

Důležité

Azure Pipelines nepodporuje ochranu instancí. Ujistěte se, že je zakázaná ochrana instancí akcí škálovací sady a škálování.

Režimy orchestrace

Škálovací sady virtuálních počítačů Azure je možné nakonfigurovat se dvěma režimy orchestrace: uniformní a flexibilní. Podpora azure Pipelines pro režim jednotné orchestrace je obecně dostupná pro všechny zákazníky.

Flexibilní režim orchestrace umožňuje službě Azure Pipelines paralelně za frontu více operací škálovací sady. Podpora služby Azure Pipelines pro flexibilní orchestraci je k dispozici na vyžádání a podléhá vyhodnocení. Vzory využití zákazníků musí značit významnou výhodu. Tito zákazníci mají velké škálovací sady, nepoužívají agenty pro více úloh, paralelně spouštějí více krátkodobých úloh a výhradně používají dočasné disky ve svých virtuálních počítačích. Pokud chcete tuto funkci použít, spojte se s naším týmem podpory.

Vytvoření fondu agentů škálovací sady

  1. Přejděte do nastavení projektu Azure DevOps, vyberte fondy agentů v části Pipelines a výběrem možnosti Přidat fond vytvořte nový fond agentů.

    Create agent pool.

    Důležité

    Fond škálovací sady můžete vytvořit v nastaveních projektu nebo v nastavení organizace, ale když odstraníte fond škálovací sady, musíte ho odstranit z nastavení organizace, a ne z nastavení Projectu.

  2. Jako typ fondu vyberte škálovací sadu virtuálních počítačů Azure. Vyberte předplatné Azure, které obsahuje škálovací sadu, zvolte Autorizovat a zvolte požadovanou škálovací sadu virtuálních počítačů z daného předplatného. Pokud máte existující připojení ke službě, můžete si ho vybrat ze seznamu místo předplatného.

    Důležité

    • Pokud chcete nakonfigurovat fond agentů škálovací sady, musíte mít oprávnění Vlastník nebo Uživatelský přístup Správa istrator pro vybrané předplatné. Pokud máte jedno z těchto oprávnění, ale při výběru možnosti Autorizovat se zobrazí chyba, přečtěte si téma řešení potíží.

    • Jediné připojení služby, které se aktuálně podporuje, je připojení služby Azure Resource Manager (ARM) založené na klíči instančního objektu. Připojení služby ARM na základě přihlašovacích údajů certifikátu nebo spravované identity selžou. Při pokusu o výpis existujících škálovacích sad ve vašem předplatném se zobrazí chyba podobná této:

      Invalid Service Endpoint with Id <guid> and Scope <guid>

  3. Z daného předplatného zvolte požadovanou škálovací sadu virtuálních počítačů.

  4. Zadejte název fondu agentů.

  5. Konfigurujte následující možnosti:

    • Automatické odstranění virtuálních počítačů po každém použití – pro každou úlohu se použije nová instance virtuálního počítače. Virtuální počítač po spuštění úlohy přejde do offline režimu a před vyzvednutím jiné úlohy se znovu zmagí.
    • Uložte agenta, který není v pořádku, abyste ho prošetřili – jestli chcete místo odstranění uložit virtuální počítače agenta , které nejsou v pořádku.
    • Maximální počet virtuálních počítačů ve škálovací sadě – Azure Pipelines automaticky škáluje počet agentů, ale tento limit nepřekročí.
    • Počet agentů, kteří mají zůstat v pohotovostním režimu – Azure Pipelines se automaticky škáluje v počtu agentů, ale zajistí, že pro spouštění nových úloh bude vždy k dispozici tento počet agentů. Pokud nastavíte počet agentů, kteří mají zůstat v pohotovostním režimu na 0, například kvůli úsporě nákladů na nízký objem úloh, Azure Pipelines spustí virtuální počítač jenom v případě, že má úlohu.
    • Zpoždění v minutách před odstraněním nadbytečných nečinných agentů – Pokud chcete zohlednit proměnlivost zatížení sestavení během dne, Azure Pipelines počká na zadanou dobu před odstraněním nadbytečného nečinného agenta.
    • Nakonfigurujte virtuální počítače tak, aby spouštěly interaktivní testy (jenom operační systém Windows Server) – Agenti Windows je možné nakonfigurovat tak, aby se spouštěly bez automatického protokolu a s interaktivním uživatelským rozhraním, nebo se dají nakonfigurovat tak, aby běžely se zvýšenými oprávněními. Toto políčko zaškrtněte, chcete-li spustit neelevated s interaktivním uživatelským rozhraním. V obou případech je uživatel agenta členem skupiny Správa istrators.
  6. Po nakonfigurování nastavení zvolte Vytvořit a vytvořte fond agentů.

Použití fondu agentů škálovací sady

Použití fondu agentů škálovací sady je podobné jakémukoli jinému fondu agentů. Můžete ho použít v klasických kanálech buildu, verze nebo YAML. Uživatelská oprávnění, oprávnění kanálu, schválení a další kontroly fungují stejně jako v jakémkoli jiném fondu agentů. Další informace najdete v tématu Fondy agentů.

Důležité

Při provádění změn škálovací sady na webu Azure Portal je potřeba postupovat opatrně.

  • Na webu Azure Portal možná nezměníte mnoho nastavení konfigurace škálovací sady. Azure Pipelines aktualizuje konfiguraci škálovací sady. Jakékoli ruční změny, které provedete ve škálovací sadě, můžou kolidovat s provozem služby Azure Pipelines.
  • Škálovací sadu není možné přejmenovat ani odstranit bez předchozího odstranění fondu škálovací sady ve službě Azure Pipelines.

Jak služba Azure Pipelines spravuje škálovací sadu

Jakmile se vytvoří fond agentů škálovací sady, Azure Pipelines automaticky škáluje počítače agenta.

Azure Pipelines každých 5 minut vzorkuje stav agentů ve fondu a virtuálních počítačích ve škálovací sadě. Rozhodnutí o horizontálním navýšení nebo snížení kapacity závisí na počtu nečinných agentů v té době. Agent se považuje za nečinný, pokud je online a nespouštět úlohu kanálu. Azure Pipelines provádí operaci horizontálního navýšení kapacity, pokud je splněná některé z následujících podmínek:

  • Počet nečinných agentů klesne pod počet pohotovostních agentů, které zadáte.
  • Neexistují žádní agenti pro úlohy kanálu služby čekající ve frontě.

Pokud je splněná jedna z těchto podmínek, Azure Pipelines roste počet virtuálních počítačů. Horizontální navýšení kapacity se provádí v přírůstcích po určitém procentu maximální velikosti fondu. Počkejte 20 minut, než se počítače vytvoří pro každý krok.

Azure Pipelines se škáluje v agentech, pokud počet nečinných agentů překročí počet pohotovostních agentů po dobu více než 30 minut (konfigurovatelné pomocí zpoždění v minutách před odstraněním nadbytečných nečinných agentů).

Pokud to chcete dát do příkladu, zvažte fond agentů škálovací sady, který je nakonfigurovaný se dvěma pohotovostními agenty a čtyřmi maximálními agenty. Řekněme, že po každém použití chcete virtuální počítač zbourat. Předpokládejme také, že ve škálovací sadě se nespustí žádné virtuální počítače.

  • Vzhledem k tomu, že počet nečinných agentů je 0, a protože počet nečinných agentů je nižší než pohotovostní počet 2, Azure Pipelines škáluje kapacitu a přidá do škálovací sady dva virtuální počítače. Jakmile budou tito agenti online, budou k dispozici dva nečinní agenti.

  • Řekněme, že dorazí jedna úloha kanálu a je přidělená jednomu z agentů.

  • V tuto chvíli je počet nečinných agentů 1 a je menší než pohotovostní počet 2. Azure Pipelines se tedy škáluje na více instancí a přidává 2 další virtuální počítače (velikost přírůstku použitá v tomto příkladu). V tuto chvíli má fond tři nečinné agenty a jednoho zaneprázdněného agenta.

  • Řekněme, že úloha na prvním agentu se dokončí. Azure Pipelines přenese agenta do offline režimu, aby se tento počítač znovu nastavil. Po několika minutách se vrátí s čerstvým obrázkem. V tuto chvíli budeme mít čtyři nečinné agenty.

  • Pokud žádné jiné úlohy nedorazí po dobu 30 minut (konfigurovatelné pomocí zpoždění v minutách před odstraněním nadbytečných nečinných agentů), Azure Pipelines zjistí, že existuje více nečinných agentů, než je potřeba. Proto se škáluje ve fondu na dva agenty.

V rámci této operace je cílem služby Azure Pipelines dosáhnout požadovaného počtu nečinných agentů v pohotovostním režimu. Fondy se pomalu škálují na více nebo méně instancí. Během dne bude fond škálovat kapacitu, protože žádosti se zařadí do fronty ráno a škálují se, protože zatížení ve večerních hodinách klesá. Můžete pozorovat více nečinných agentů, než si přejete v různých časech, což se očekává, protože Azure Pipelines se postupně konverguje s vámi zadanými omezeními.

Poznámka:

Škálování služby Azure Pipelines na více instancí nebo škálování ve virtuálních počítačích může trvat hodinu nebo déle. Azure Pipelines škáluje kapacitu v krocích, monitoruje operace chyb a reaguje odstraněním nepoužitelných počítačů a vytvořením nových počítačů v průběhu času. Tato nápravná operace může trvat déle než hodinu.

Aby bylo dosaženo maximální stability, operace škálovací sady se provádějí postupně. Pokud například fond potřebuje škálovat na více instancí a odstranění také není v pořádku, Azure Pipelines nejprve škáluje fond na více instancí. Po horizontálním navýšení kapacity fondu na požadovaný počet nečinných agentů v pohotovostním režimu se počítače, které nejsou v pořádku, odstraní v závislosti na nastavení Uložit agenta, který není v pořádku pro šetření . Další informace najdete v tématu Agenti, kteří nejsou v pořádku.

Vzhledem k velikosti vzorkování 5 minut je možné, že všichni agenti můžou spouštět kanály po krátkou dobu a nedojde k horizontálnímu navýšení kapacity.

Přizpůsobení konfigurace agenta kanálu

Konfiguraci agenta Azure Pipelines můžete přizpůsobit definováním proměnných prostředí ve vlastní imagi operačního systému pro vaši škálovací sadu. Například pracovní adresář agenta škálovací sady má výchozí hodnotu C:\a pro Windows a /agent/_work pro Linux. Pokud chcete změnit pracovní adresář, nastavte proměnnou prostředí s názvem VSTS_AGENT_INPUT_WORK s požadovaným pracovním adresářem. Další informace najdete v dokumentaci k bezobslužné konfiguraci agenta Pipelines. Mezi některé příklady patří:

  • VSTS_AGENT_INPUT_WORK
  • VSTS_AGENT_INPUT_PROXYURL
  • VSTS_AGENT_INPUT_PROXYUSERNAME
  • VSTS_AGENT_INPUT_PROXYPASSWORD

Důležité

Při přizpůsobení agenta Pipelines je potřeba postupovat opatrně. Některá nastavení budou v konfliktu s jinými požadovanými nastaveními, což způsobí selhání registrace agenta a odstranění virtuálního počítače. Tato nastavení by neměla být nastavená ani změněna:

  • VSTS_AGENT_INPUT_URL
  • VSTS_AGENT_INPUT_AUTH
  • VSTS_AGENT_INPUT_TOKEN
  • VSTS_AGENT_INPUT_USERNAME
  • VSTS_AGENT_INPUT_PASSWORD
  • VSTS_AGENT_INPUT_POOL
  • VSTS_AGENT_INPUT_AGENT
  • VSTS_AGENT_INPUT_RUNASSERVICE
  • ... a cokoli souvisejícího se skupinami nasazení.

Přizpůsobení spuštění virtuálního počítače prostřednictvím rozšíření vlastních skriptů

Uživatelé můžou chtít spustit spouštěcí skripty na počítačích agenta škálovací sady, než tyto počítače začnou spouštět úlohy kanálu. Mezi běžné případy použití spouštěcích skriptů patří instalace softwaru, zahřívání mezipamětí nebo načítání úložišť. Spouštěcí skripty můžete spustit instalací rozšíření vlastních skriptů pro Windows nebo rozšíření vlastních skriptů pro Linux.

Toto rozšíření se spustí na každém virtuálním počítači ve škálovací sadě hned po jeho vytvoření nebo opětovném vytvoření. Rozšíření vlastních skriptů se spustí před spuštěním rozšíření agenta Azure Pipelines.

Tady je příklad vytvoření rozšíření vlastních skriptů pro Linux.

az vmss extension set \
--vmss-name <scaleset name> \
--resource-group <resource group> \
--name CustomScript \
--version 2.0 \
--publisher Microsoft.Azure.Extensions \
--settings '{ \"fileUris\":[\"https://<myGitHubRepoUrl>/myScript.sh\"], \"commandToExecute\": \"bash ./myScript.sh /myArgs \" }'

Tady je příklad vytvoření rozšíření vlastních skriptů pro Windows.

az vmss extension set \
--vmss-name <scaleset name> \
--resource-group <resource group> \
--name CustomScriptExtension \
--version 1.9 \
--publisher Microsoft.Compute \
--settings '{ \"FileUris\":[\"https://<myGitHubRepoUrl>/myscript.ps1\"], \"commandToExecute\": \"Powershell.exe -ExecutionPolicy Unrestricted -File myscript.ps1 -myargs 0 \" }'

Důležité

Skripty spuštěné v rozšíření vlastních skriptů se musí vrátit s ukončovacím kódem 0, aby virtuální počítač dokončil proces vytváření virtuálního počítače. Pokud rozšíření vlastních skriptů vyvolá výjimku nebo vrátí nenulový ukončovací kód, rozšíření Azure Pipeline se nespustí a virtuální počítač se neregistruje ve fondu agentů Azure DevOps.

Může se stát, že se vaše rozšíření spustí před zřízením všech prostředků virtuálních počítačů, v takovém případě se zobrazí chyba podobná tomu, že se nepodařilo nainstalovat základní požadavky. Můžete to vyřešit přidáním sleep příkazu na začátek skriptu, sleep 30například .

Životní cyklus agenta škálovací sady

Tady je tok operací pro agenta škálovací sady virtuálních počítačů Azure Pipelines.

  1. Úloha určení velikosti fondu agentů škálovací sady Azure DevOps určuje, že fond má příliš málo nečinných agentů a potřebuje horizontální navýšení kapacity. Azure Pipelines volá škálovací sady Azure ke zvýšení kapacity škálovací sady.

  2. Škálovací sada Azure začne vytvářet nové virtuální počítače. Po spuštění virtuálních počítačů azure Scale Sets postupně spustí všechna nainstalovaná rozšíření virtuálních počítačů.

  3. Pokud je nainstalované rozšíření vlastních skriptů, spustí se před rozšířením agenta Azure Pipelines. Pokud rozšíření vlastních skriptů vrátí nenulový ukončovací kód, proces vytvoření virtuálního počítače se přeruší a odstraní se.

  4. Spustí se rozšíření agenta Azure Pipelines. Toto rozšíření stáhne nejnovější verzi agenta Azure Pipelines spolu s nejnovější verzí konfiguračního skriptu. Konfigurační skripty najdete na adresách URL s následujícími formáty:

    • Linux: https://vstsagenttools.blob.core.windows.net/tools/ElasticPools/Linux/<script_version>/enableagent.shnapříklad verze 15
    • Windows: https://vstsagenttools.blob.core.windows.net/tools/ElasticPools/Windows/<script_version>/enableagent.ps1například verze 17
  5. Konfigurační skript vytvoří místního uživatele s názvem AzDevOps , pokud je operační systém Windows Server nebo Linux. V případě klientského operačního systému Windows 10 běží agent jako LocalSystem. Skript pak rozbalí, nainstaluje a nakonfiguruje agenta Azure Pipelines. V rámci konfigurace se agent zaregistruje ve fondu agentů Azure DevOps a zobrazí se v seznamu fondů agentů v offline stavu.

  6. Ve většině scénářů pak konfigurační skript okamžitě spustí agenta, který se spustí jako místní uživatel AzDevOps. Agent přejde do režimu Online a je připravený ke spuštění úloh kanálu.

    Pokud je fond nakonfigurovaný pro interaktivní uživatelské rozhraní, virtuální počítač se po nakonfigurování agenta restartuje. Po restartování se místní uživatel automaticky přihlásí a spustí se agent kanálu. Agent pak přejde do režimu online a je připravený ke spuštění úloh kanálu.

Vytvoření škálovací sady s vlastní imagí, softwarem nebo velikostí disku

Pokud chcete vytvořit škálovací sadu s výchozím diskem s operačním systémem 128 GB pomocí veřejně dostupné image Azure, přejděte přímo ke kroku 10 a pomocí názvu veřejné image (UbuntuLTS, Win2019DataCenter atd.) vytvořte škálovací sadu. Jinak postupujte podle těchto kroků a přizpůsobte image virtuálního počítače.

  1. Vytvořte virtuální počítač s požadovanou imagí operačního systému a volitelně rozšiřte velikost disku s operačním systémem z 128 GB na <myDiskSizeGb>.

    • Pokud začínáte s dostupnou imagí Azure, například <myBaseImage> = (Win2019DataCenter, UbuntuLTS):

      az vm create --resource-group <myResourceGroup> --name <MyVM> --image <myBaseImage> --os-disk-size-gb <myDiskSize>  --admin-username myUserName --admin-password myPassword
      
    • Pokud začínáte generalizovaným virtuálním pevným diskem:

      1. Nejprve vytvořte virtuální počítač s nespravovaným diskem požadované velikosti a pak ho převeďte na spravovaný disk:

        az vm create --resource-group <myResourceGroup> --name <MyVM> --image <myVhdUrl> --os-type windows --os-disk-size-gb <myDiskSizeGb> --use-unmanaged-disk --admin-username <myUserName> --admin-password <myPassword> --storage-account <myVhdStorageAccount>
        
      2. Vypnutí virtuálního počítače

        az vm stop --resource-group <myResourceGroup> --name <MyVM>
        
      3. Zrušení přidělení virtuálního počítače

        az vm deallocate --resource-group <myResourceGroup> --name <MyVM>
        
      4. Převod na spravovaný disk

        az vm convert --resource-group <myResourceGroup> --name <MyVM>
        
      5. Restartujte virtuální počítač.

        az vm start --resource-group <myResourceGroup> --name <MyVM>
        
  2. Vzdálená plocha (nebo SSH) k veřejné IP adrese virtuálního počítače pro přizpůsobení image Možná budete muset otevřít porty v bráně firewall a odblokovat porty RDP (3389) nebo SSH (22).

    1. Windows – Pokud <MyDiskSizeGb> je větší než 128 GB, rozšiřte velikost disku s operačním systémem tak, aby vyplnila velikost disku, kterou jste určili <MyDiskSizeGb>.

      Otevřete nástroj DiskPart jako správce a spusťte tyto příkazy DiskPart:

      1. list volume (pro zobrazení svazků)
      2. select volume 2 (závisí na tom, který svazek je jednotkou operačního systému)
      3. extend size 72000 (pro rozšíření jednotky o 72 GB z 128 GB na 200 GB)
  3. Nainstalujte na virtuální počítač libovolný další software.

  4. Pokud chcete přizpůsobit oprávnění uživatele agenta kanálu, můžete vytvořit uživatele s názvem AzDevOpsa udělit ho požadovaným oprávněním. Tento uživatel bude vytvořen spouštěcím skriptem agenta scaleset, pokud ještě neexistuje.

  5. Po dokončení přizpůsobení restartujte virtuální počítač.

  6. Zobecnění virtuálního počítače

    • Windows – Z okna konzoly pro správu:
      C:\Windows\System32\sysprep\sysprep.exe /generalize /oobe /shutdown
      
    • Linux:
      sudo waagent -deprovision+user -force
      

    Důležité

    Počkejte na dokončení generalizace a vypnutí virtuálního počítače. Nepokračujte, dokud se virtuální počítač nezastaví. Povolit 60 minut.

  7. Zrušení přidělení virtuálního počítače

    az vm deallocate --resource-group <myResourceGroup> --name <MyVM>
    
  8. Označení virtuálního počítače jako generalizovaného

    az vm generalize --resource-group <myResourceGroup> --name <MyVM>
    
  9. Vytvořte image virtuálního počítače na základě generalizované image. Při provádění těchto kroků aktualizujte existující image škálovací sady, poznamenejte si adresu URL ID obrázku ve výstupu.

    az image create  --resource-group <myResourceGroup> --name <MyImage> --source <MyVM>
    
  10. Vytvoření škálovací sady na základě vlastní image virtuálního počítače

    az vmss create --resource-group <myResourceGroup> --name <myScaleSet> --image <MyImage> --admin-username <myUsername> --admin-password <myPassword> --instance-count 2 --disable-overprovision --upgrade-policy-mode manual --load-balancer '""'
    
  11. Ověřte, že oba virtuální počítače vytvořené ve škálovací sadě jsou online, mají různé názvy a že se dostanou do stavu Úspěch.

Teď jste připraveni vytvořit fond agentů pomocí této škálovací sady.

Aktualizace existující škálovací sady pomocí nové vlastní image

Pokud chcete aktualizovat image v existující škálovací sadě, postupujte podle kroků v předchozím kroku Vytvoření škálovací sady s vlastní imagí, softwarem nebo velikostí disku v az image create kroku a vygenerujte vlastní image operačního systému. Poznamenejte si adresu URL vlastnosti ID, která je výstupem příkazu az image create . Potom škálovací sadu aktualizujte novým obrázkem, jak je znázorněno v následujícím příkladu. Po aktualizaci image škálovací sady se vytvoří všechny budoucí virtuální počítače ve škálovací sadě s novou imagí.

az vmss update --resource-group <myResourceGroup> --name <myScaleSet> --set virtualMachineProfile.storageProfile.imageReference.id=<id url>

Podporované operační systémy

Agenti škálovací sady aktuálně podporují klienta Ubuntu Linux, Windows Server/DataCenter 2016/2019 a Windows 10.

Známé problémy

  • Distribuce Debianu nebo RedHat Linuxu se nepodporují. Jenom Ubuntu je.
  • Klient Windows 10 nepodporuje spuštění agenta kanálu jako místního uživatele, a proto agent nemůže s uživatelským rozhraním pracovat. Agent se místo toho spustí jako místní služba.

Řešení potíží

Přejděte do nastavení projektu Azure DevOps, vyberte fondy agentů v části Pipelines a vyberte fond agentů. Vyberte kartu s popiskem Diagnostika.

Na kartě Diagnostika se zobrazují všechny akce prováděné službou Azure DevOps za účelem vytvoření, odstranění nebo opětovného vytvoření virtuálních počítačů ve škálovací sadě Azure. Diagnostika také zaznamená případné chyby, ke kterým došlo při pokusu o provedení těchto akcí. Zkontrolujte chyby a ujistěte se, že vaše škálovací sada má dostatek prostředků pro horizontální navýšení kapacity. Pokud vaše předplatné Azure dosáhlo limitu prostředků ve virtuálních počítačích, jádrech procesoru, discích nebo IP adresách, zobrazí se tady tyto chyby.

Agenti, kteří nejsou v pořádku

Pokud se agentům nebo virtuálním počítačům nedaří spustit, nepřipojuje se k Azure DevOps nebo neočekávaně offline, Azure DevOps zaznamená selhání na kartu Diagnostika fondu agentů a pokusí se odstranit přidružený virtuální počítač. Tyto problémy můžou způsobovat konfigurace sítě, přizpůsobení image a čekající restartování. Připojení na virtuální počítač můžete ladit a shromažďovat protokoly, které můžou pomoct s šetřením.

Pokud chcete, aby Azure DevOps uložil virtuální počítač agenta, který není v pořádku, aby ho prošetřil, a ne automaticky ho odstranit, když zjistí, že není v pořádku, přejděte do nastavení projektu Azure DevOps, vyberte fondy agentů v části Pipelines a vyberte fond agentů. Zvolte Nastavení, vyberte možnost Uložit agenta, který není v pořádku pro šetření, a zvolte Uložit.

Save unhealthy agent setting.

Když se teď ve škálovací sadě zjistí agent, který není v pořádku, Azure DevOps uloží agenta a přidružený virtuální počítač. Uložený agent se zobrazí na kartě Diagnostika uživatelského rozhraní fondu agentů. Přejděte do nastavení projektu Azure DevOps, vyberte fondy agentů v části Kanály, vyberte fond agentů, zvolte Diagnostika a poznamenejte si název agenta.

Saved agents card.

Najděte přidružený virtuální počítač ve škálovací sadě virtuálních počítačů Azure prostřednictvím webu Azure Portal v seznamu Instancí .

Azure portal Virtual Machine Scale Set instances.

Vyberte instanci, zvolte Připojení a proveďte šetření.

Connect to virtual machine instance.

Pokud chcete po dokončení šetření odstranit uloženého agenta, přejděte do nastavení projektu Azure DevOps, vyberte fondy agentů v části Kanály a vyberte fond agentů. Zvolte kartu s popiskem Diagnostika. Najděte agenta na kartě Agenti, kteří jsou uloženi pro šetření , a zvolte Odstranit. Tím odeberete agenta z fondu a odstraníte přidružený virtuální počítač.

Saved agents card delete button.

Často kladené dotazy

Kde najdu image používané pro agenty hostované Microsoftem?

Aspekty licencování nás omezují na distribuci imagí hostovaných Microsoftem. Tyto image nemůžeme poskytnout, abyste je mohli používat v agentech škálovací sady. Skripty, které používáme k vygenerování těchto imagí, jsou ale opensourcové. Tyto skripty můžete používat a vytvářet vlastní image.

Návody nakonfigurovat agenty škálovací sady pro spouštění testů uživatelského rozhraní?

Vytvořte škálovací sadu s operačním systémem Windows Serveru a při vytváření fondu agentů vyberte možnost Konfigurovat virtuální počítače pro spouštění interaktivních testů.

Jak můžu odstranit agenty?

Přejděte do nastavení projektu Azure DevOps, vyberte fondy agentů v části Pipelines a vyberte fond agentů. Vyberte kartu s popiskem Agenti. Kliknutím na přepínač Povoleno zakažte agenta. Zakázaný agent dokončí kanál, který je aktuálně spuštěný, a nezvstanou další práci. Během několika minut po dokončení aktuální úlohy kanálu se agent odstraní.

Můžu nakonfigurovat fond agentů škálovací sady tak, aby měl v pohotovostním režimu nula agentů?

Ano, pokud nastavíte počet agentů, kteří mají zůstat v pohotovostním režimu na nulu, například pokud chcete ušetřit náklady na nízký objem úloh, Azure Pipelines spustí virtuální počítač jenom v případě, že má úlohu.

Kolik stojí agenti škálovacích sad?

Ceny agentů škálovací sady jsou podobné jiným agentům v místním prostředí. Poskytnete infrastrukturu, na které se má spustit software agenta a úlohy, a platíte za požadovaný počet úloh, které se dají souběžně spouštět nákupem paralelních úloh.

Pro agenty škálovací sady je infrastruktura pro spuštění softwaru a úloh agenta azure Virtual Machine Scale Sets a ceny jsou popsané v cenách služby Virtual Machine Scale Sets.

Informace o nákupu paralelních úloh najdete v tématu Konfigurace a placení paralelních úloh.

Jaké jsou některé běžné problémy a jejich řešení?

V různých časech sledujete více nečinných agentů, než je žádoucí.

Pokud chcete lépe porozumět příčinám, projděte si část Jak služba Azure Pipelines spravuje škálovací sadu. Během operace škálování je cílem služby Azure Pipelines dosáhnout požadovaného počtu nečinných agentů v pohotovostním režimu. Fondy se pomalu škálují na více nebo méně instancí. Během dne se fond ráno škáluje na více instancí s tím, jak se požadavky řadí do fronty, a večer se škáluje na méně instancí s tím, jak klesá zatížení. Jedná se o očekávané chování, protože služba Azure Pipelines postupně konverguje k zadaným omezením.

Vertikální navýšení kapacity VMSS neprobíhá v očekávaném pětiminutovém intervalu

Úloha škálování se spouští každých 5 minut, ale pokud se během daných 5 minut zpracovává pouze jedna operace, můžete si všimnout, že nedojde k vertikálnímu navýšení kapacity. Toto chování je v současné době záměrné.

Škálovací sada virtuálních počítačů Azure DevOps s Linuxem se často nedaří spustit kanál

V případě problémů s agenty škálovacích sad se nejprve podívejte na kartu Diagnostika ve fondu agentů.

Zvažte také uložení virtuálního počítače, který není v pořádku, pro účely ladění. Další informace najdete v části Agenti, kteří nejsou v pořádku.

Uložené agenty tam jsou, pokud je neodstraníte. Pokud agent nepřijde do online režimu za 10 minut, označí se jako v pořádku a pokud je to možné, uloží se. V uloženém stavu se uchovává jenom jeden virtuální počítač. Pokud agent neočekávaně přejde do režimu offline (kvůli restartování virtuálního počítače nebo k nějakému problému s imagí), neuloží se pro šetření.

Ukládají se jenom virtuální počítače, pro které se agenti nespustí. Pokud má virtuální počítač během vytváření stav selhání, neuloží se. V tomto případě je zpráva na kartě Diagnostika "odstranění počítače, který není v pořádku", místo toho, aby se nepodařilo spustit.

Zaškrtnete možnost automatického vyřazení virtuálních počítačů po každém použití pro fond agentů, ale vidíte, že virtuální počítače nejsou re-imaging, jak by měly, a jen vyzvednout nové úlohy, jakmile jsou zařazeny do fronty.

Možnost odstraňovat virtuální počítače po každém sestavení funguje pouze u Windows Serveru a podporovaných imagí Linuxu. U imagí klientů pro Windows se nepodporuje.

VMSS zobrazuje agenta jako offline, pokud se virtuální počítač restartuje.

Zobrazení agentů jako offline, pokud se virtuální počítač restartuje, je očekávané chování. Služba agenta běží pouze v systémovém kontextu. Pokud se však počítač z nějakého důvodu restartuje, považuje se za virtuální počítač, který není v pořádku, a odstraní se. Další informace najdete v části Agenti, kteří nejsou v pořádku.

Když se agenti nebo virtuální počítače nespustí, nemůžou se připojit k Azure DevOps nebo neočekávaně přejít do offline režimu, Azure DevOps zaznamená selhání na kartu Diagnostika fondu agentů a pokusí se odstranit přidružený virtuální počítač. Tyto problémy můžou způsobovat konfigurace sítě, přizpůsobení image a čekající restartování. Pokud se chcete tomuto problému vyhnout, zakažte v imagi aktualizace softwaru. Můžete se také připojit k virtuálnímu počítači a provést ladění a shromáždění protokolů, které vám pomůžou s šetřením problému.

Ve správě nákladů můžete zobrazit několik značek, jako je _AzureDevOpsElasticPoolTimeStamp pro VMSS.

Při vytváření fondu se ke škálovací sadě přidá značka, která značí, že se škálovací sada používá (aby se zabránilo používání stejné škálovací sady dvěma fondy), a další značka pro časové razítko, které se aktualizuje při každém spuštění úlohy konfigurace (každé dvě hodiny).

Nemůžete vytvořit nový fond agentů škálovací sady a zobrazí se chybová zpráva, že fond se stejným názvem již existuje.

Může se zobrazit chybová zpráva podobná This virtual machine scale set is already in use by pool <pool name> tomu, že značka stále existuje ve škálovací sadě i po odstranění. Když se odstraní fond agentů, pokusíte se odstranit značku ze škálovací sady, ale jedná se o pokus o nejlepší úsilí a po třech opakováních se vzdáte. Může také existovat maximálně dvouhodinová mezera, ve které není škálovací sada virtuálních počítačů používaná žádným fondem agentů přiřazená k novému fondu. Řešením je počkat na uplynutí tohoto časového intervalu nebo ručně odstranit danou značku škálovací sady na webu Azure Portal. Na webu Azure Portal zobrazte škálovací sadu, vyberte odkaz Značky na levé straně a odstraňte značku _AzureDevOpsElasticPool.

Úloha údržby VMSS není spuštěná na agentech ani na získávání protokolů

Úloha údržby se spouští jednou za 24 hodin. Může se stát, že se virtuální počítače mezitím zaplní. Zvažte zvětšení velikosti disku virtuálního počítače a přidání skriptu pro odstranění obsahu do kanálu.

Pokud ve skriptu pro VMSS zadáte AzDevOps jako primární správce, můžete zaznamenat problémy s konfiguracemi agenta v instancích škálovací sady.

Pokud ve skriptu pro škálovací sadu virtuálních počítačů zadáte AzDevOps jako primární správce, můžete pozorovat problémy s konfiguracemi agenta v instancích škálovací sady (pokud už existuje heslo uživatele).

K tomuto problému dochází, protože se skripty rozšíření agenta pokusí vytvořit uživatele AzDevOps a změnit jeho heslo.

Poznámka:

Je v pořádku vytvořit uživatele a udělit mu další oprávnění, ale neměl by to být primární správce a nic by nemělo záviset na heslu, protože heslo se změní. Chcete-li se tomuto problému vyhnout, vyberte při vytváření škálovací sady jiný uživatel jako primární správce místo AzDevOps.

Instalace rozšíření agenta selže v instancích škálovací sady kvůli konfiguraci zabezpečení sítě a brány firewall

Rozšíření musí být schopné stáhnout soubory agenta sestavení z adresy https://vstsagentpackage.azureedge.net/agent a agent sestavení se musí být schopen zaregistrovat v Azure DevOps Services. Ujistěte se, že jsou v instanci otevřené IP adresy a adresy URL související s Azure DevOps Services a tato adresa URL. Informace o IP adresách a adresách URL, které je potřeba odblokovat v bráně firewall, najdete v tématu Povolené IP adresy a adresy URL domén.

Proč skript konfigurace agenta škálovací sady volá Add-MpPreference a konfiguruje program Windows Defender na agenta?

Aby se zlepšil výkon a spolehlivost, konfigurační skripty volají Add-MpPreference s obsahem C:\ExclusionPath a D:\, který zakáže program Windows Defender naplánované a v reálném čase vyhledávání souborů v těchto složkách agenta. Chcete-li změnit výchozí chování, nastavte proměnnou prostředí s názvem ELASTIC_POOLS_SKIP_DEFENDER_EXCLUSION na true.

Chci zvětšit velikost fondu. Co mám vzít v úvahu?

Než zvětšíte velikost fondu, ujistěte se, že virtuální síť Azure nakonfigurovaná pro fond škálovacích sad virtuálních počítačů má velký rozsah adresního prostoru pro všechny nové agenty. Pokud ne, může se zobrazit chyba podobná chybě, že se nepodařilo zvýšit kapacitu. Podsíť azure-devops-agent-pool-fabrikam-fiber s předponou adresy 12.123.45.224/28 nemá dostatečnou kapacitu pro 5 IP adres.