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ěží.
Tip
Spravované fondy DevOps je nová služba, která vyvíjí fondy agentů škálovací sady virtuálních počítačů Azure DevOps, což ještě více zjednodušuje vytváření vlastních fondů tím, že vylepšuje škálovatelnost a spolehlivost vlastních fondů. Spravované fondy DevOps je plně spravovaná služba, ve které virtuální počítače nebo kontejnery, které aktivují agenty v předplatném Microsoft Azure, a ne ve vašem vlastním předplatném Azure, například při použití fondů agentů Škálovací sady virtuálních počítačů Azure DevOps. Další informace najdete v dokumentaci ke spravovaným fondům DevOps.
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ů Virtual Machine Scale Sets pro Azure DevOps Services je podporováno pouze pro veřejný cloud Azure (globální služby). Fondy agentů Virtual Machine Scale Sets v současné době nepodporují žádné další nabídky národních cloudů.
Škálovací sady virtuálních počítačů 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ázat automatické š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.
Přejděte do Azure Cloud Shellu na adrese
https://shell.azure.com/
.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>
Vytvořte skupinu prostředků pro škálovací sadu virtuálních počítačů.
az group create \ --location westus \ --name vmssagents
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.
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í
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í
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
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ů.
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.
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íka nebo správce uživatelských přístupů k vybranému předplatnému. 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>
Z daného předplatného zvolte požadovanou škálovací sadu virtuálních počítačů.
Zadejte název fondu agentů.
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 Administrators.
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 30
například .
Životní cyklus agenta škálovací sady
Tady je tok operací pro agenta škálovací sady virtuálních počítačů Azure Pipelines.
Ú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.
Š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čů.
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.
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:
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.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.
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:
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>
Vypnutí virtuálního počítače
az vm stop --resource-group <myResourceGroup> --name <MyVM>
Zrušení přidělení virtuálního počítače
az vm deallocate --resource-group <myResourceGroup> --name <MyVM>
Převod na spravovaný disk
az vm convert --resource-group <myResourceGroup> --name <MyVM>
Restartujte virtuální počítač.
az vm start --resource-group <myResourceGroup> --name <MyVM>
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).
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:
list volume
(pro zobrazení svazků)select volume 2
(závisí na tom, který svazek je jednotkou operačního systému)extend size 72000
(pro rozšíření jednotky o 72 GB z 128 GB na 200 GB)
Nainstalujte na virtuální počítač libovolný další software.
Pokud chcete přizpůsobit oprávnění uživatele agenta kanálu, můžete vytvořit uživatele s názvem
AzDevOps
a 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.Po dokončení přizpůsobení restartujte virtuální počítač.
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.
- Windows – Z okna konzoly pro správu:
Zrušení přidělení virtuálního počítače
az vm deallocate --resource-group <myResourceGroup> --name <MyVM>
Označení virtuálního počítače jako generalizovaného
az vm generalize --resource-group <myResourceGroup> --name <MyVM>
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>
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 '""'
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í k virtuálnímu počítači za účelem ladění a shromáždění protokolů může 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.
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.
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í .
Vyberte instanci, zvolte Připojit a proveďte šetření.
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č.
Nejčastější dotazy
- Agenti škálovací sady virtuálních počítačů Azure
- Vytvoření škálovací sady
- Vytvoření fondu agentů škálovací sady
- Použití fondu agentů škálovací sady
- Jak služba Azure Pipelines spravuje škálovací sadu
- Přizpůsobení konfigurace agenta kanálu
- Přizpůsobení spuštění virtuálního počítače prostřednictvím rozšíření vlastních skriptů
- Životní cyklus agenta škálovací sady
- Vytvoření škálovací sady s vlastní imagí, softwarem nebo velikostí disku
- Aktualizace existující škálovací sady pomocí nové vlastní image
- Podporované operační systémy
- Řešení potíží
- Nejčastější dotazy
- 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í.
- Vertikální navýšení kapacity služby Virtual Machine Scale Sets neprobíhá v očekávaném pětiminutovém intervalu
- Škálovací sada virtuálních počítačů Azure DevOps s Linuxem se často nedaří spustit kanál
- 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.
- Škálovací sady virtuálních počítačů zobrazují agenta jako offline, pokud se virtuální počítač restartuje.
- Ve správě nákladů můžete vidět více značek, jako je _AzureDevOpsElasticPoolTimeStamp pro škálovací sady virtuálních počítačů.
- 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.
- Úloha údržby služby Virtual Machine Scale Sets není spuštěná na agentech ani na získávání protokolů
- Pokud ve skriptu pro škálovací sady 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. - Instalace rozšíření agenta selže v instancích škálovací sady kvůli konfiguraci zabezpečení sítě a brány firewall
- Proč skript konfigurace agenta škálovací sady volá Add-MpPreference a konfiguruje program Windows Defender na agenta?
- Chci zvětšit velikost fondu. Co mám vzít v úvahu?
- Jaké jsou některé běžné problémy a jejich řešení?
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 služby Virtual Machine Scale Sets 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.
Škálovací sady virtuálních počítačů zobrazují 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 vidět více značek, jako je _AzureDevOpsElasticPoolTimeStamp pro škálovací sady virtuálních počítačů.
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 služby Virtual Machine Scale Sets 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 škálovací sady 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 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.