Kumulativní aktualizace NGroups
Úvod
Vzhledem k tomu, že se mění požadavky, budete možná muset skupiny NGroup a skupiny kontejnerů (CG) aktualizovat.
Pro aktualizaci NGroups jsou k dispozici dva režimy aktualizace – Ruční (výchozí možnost) a Rolling.
V rámci kumulativní aktualizace (RU) existují 2 možnosti – místní aktualizace a nahrazení aktualizace. Výchozí možností je nahradit RU.
Tento dokument podrobně popisuje RU. Ručně aktualizační informace najdete v tomto odkazu na dokumentaci NGroups.
Popis funkce
Podívejte se na základní příklad aktualizace odkazu na profil CG z cgprofile1 na cgprofile2.
Místní kumulativní aktualizace
Když v místní ru aktualizujeme odkaz na cgprofile2 a vydáme příkaz UPDATE NGroups, stávající skupiny CG se aktualizují pomocí cgprofile2. Aktualizace existujících skupin CG probíhá v malých dávkách (a ne všechny najednou). Zajišťuje minimální dopad na vaši úlohu, protože během aktualizace může být nedostupné jenom malé procento skupin CG.
Velikost dávky a další související nastavení režimu kumulativní aktualizace můžeme nakonfigurovat pomocí rozhraní NGroups API.
Vzhledem k tomu, že místní ru aktualizuje stávající skupiny CG, existují určitá omezení vlastností CG, které Služba Azure Container Instances (ACI) vynucuje.
Podívejte se na omezení ACI týkající se aktualizace skupin CG. Tady najdete také vlastnosti pro skupiny CG, které vyžadují odstranění (versus aktualizaci).
Nahrazení kumulativní aktualizace
Při nahrazení RU se při aktualizaci odkazu na cgprofile2 a vydání příkazu UPDATE NGroups vytvoří nové skupiny CG s cgprofile2. Existující skupiny CG s cgprofile1 se odstraní. K tomuto vytvoření a odstranění dochází v malých dávkách (a ne všechny najednou). Zajišťuje minimální dopad na vaši úlohu, protože během aktualizace je ovlivněno pouze malé procento skupin CG.
Podobně jako místní RU můžeme pomocí rozhraní API NGroups nakonfigurovat velikost dávky a další související nastavení režimu kumulativní aktualizace.
Vzhledem k tomu, že nahrazení RU vytváří nové skupiny CG, vYnucuje ACI méně omezení. V důsledku toho je nahrazení RU výkonnější možností a je výchozí možností, když zákazník vybere RU.
Využití
Aktivace kumulativní aktualizace
Kumulativní aktualizace se aktivuje při volání NGroups PUT a profil CG ve volání PUT se liší od profilu CG aktuálně odkazovaného v NGroups.
NGroups pak automaticky seskupí instance do dávek a aktualizuje jednu dávku najednou. Parametr maxBatchPercent určuje velikost dávky.
Aktualizace dávky
Místní aktualizace vyvolá volání CG PUT pro aktualizaci každé CG dávky.
Aktualizace nahrazení vyvolá volání CG PUT, které vytvoří nové skupiny CG a odstraní existující skupiny CG dávky. Existuje 1:1 korespondence mezi skupinami CG, které se vytvářejí, a skupinami CG, které se odstraňují. Názvy CG se ale budou lišit.
Pokud dostatečný počet skupin CG v dávce poskytuje signály v pořádku po uplynutí období pauseTimeBetweenBatches, NGroups automaticky spustí další dávku aktualizace. Jinak se zastaví zavedení. Parametr maxUnhealthyPercent určuje celkový počet skupin CG, které nejsou v pořádku, zatímco parametr maxUnhealthyUpdatedPercent určuje celkový počet skupin CG, které nejsou v pořádku po aktualizaci.
Tady je příklad vydání žádosti o kumulativní aktualizaci pro skupiny NGroup:
{
"location": "{{location}}",
"properties": {
"updateProfile": {
"updateMode": "Rolling",
"rollingUpdateProfile": {
// Maximum percentage of total CGs which can be updated
// simultaneously by rolling update in one batch.
“maxBatchPercent”: “10”, // optional, defaults to 20%
// Maximum percentage of the total CGs across the whole NGroup
// that can be unhealthy at a time either by rolling update or health
// checks by liveness probes. If there are more unhealthy CGs than this,
// the current rolling update is marked as failed.
// This check is a prerequisite to start any batch.
“maxUnhealthyPercent”: “10”, // optional, defaults to 20%
// Maximum percentage of the updated CGs which can be in unhealthy state
// after each batch is updated. If there are more unhealthy CGs than this,
// the current rolling update is marked as failed.
“maxUnhealthyUpdatedPercent”: 10, // optional, defaults to 20%
// The wait time between batches after completing one batch of the rolling
// update and before starting the next batch. The time duration should
// be specified in ISO 8601 format for duration.
"pauseTimeBetweenBatches": "PT2M", // optional, defaults to PT1M
// A nullable boolean property. Default is null
// Sets the mode to either in-place RU (when true) or replace (default) RU.
“inPlaceUpdate”: null/false/true
}
},
"containerGroupProfiles": [
{
"resource": {
"id": "/subscriptions/{{subId}}/resourceGroups/{{rgName}}/providers/Microsoft.ContainerInstance/containerGroupProfiles/cgp1"
}
}
]
}
}
Pokud je verze image nastavená na nejnovější značku pro image kontejnerů v rámci profilu CG, NGroups automaticky převezme nejnovější verzi image během RU. Pokud chcete zabránit neočekávanému chování ve vaší aplikaci, doporučujeme pro obrázky nepoužívat nejnovější značku. Místo toho použijte konkrétní verze.
Poznámka:
Pokud chcete použít nahrazení RU, nastavte pro prostředek NGroups značku "rollingupdate.replace.enabled: true". Tato značka je dočasná a v budoucnu se nebude vyžadovat.
“tags”: {
“rollingupdate.replace.enabled”: true
}
Získání stavu spuštěné kumulativní aktualizace
Pokud chcete získat nejnovější stav kumulativní aktualizace, můžete použít toto rozhraní REST API:
GET /subscriptions/{subscriptionId}/resourceGroups/{{rgName}}/providers/Microsoft.ContainerInstance/NGroups/{{ngroupsName}}/latestRollingUpdate
Vrátí odpověď obsahující relevantní informace o RU.
Zrušení kumulativní aktualizace
Pokud chcete zrušit kumulativní aktualizaci, použijte následující rozhraní API. Po zrušení se ru nedá obnovit ani restartovat. Je potřeba aktivovat nové RU.
POST /subscriptions/{subscriptionId}/resourceGroups/{{rgName}}/providers/Microsoft.ContainerInstance/NGroups/{{ngroupsName}}/cancelRollingUpdate
Při volání tohoto rozhraní API nemusíte zadávat text požadavku.
Hranice dávky ve kumulativní aktualizaci
Skupiny CG konkrétní dávky v RU nepřekračují hranice modelu selhání. Model selhání představuje kombinaci zóny nebo domény selhání (FD). Například zóna 1 / FD 0 je hranice modelu selhání, zóna 1 / FD 1 je další hranice modelu selhání a zóna 2 / FD 0 je ještě další hranice modelu selhání.
Pokud má zákazník nastavené skupiny NGroup s více zónami se třemi zónami, dávka se omezí na skupiny CG patřící maximálně do jedné zóny. Dávka se nikdy nevytváří ze skupin CG rozložených napříč několika zónami.
Pokud má zákazník nastavení více zónových skupin NGroups s více zónami a více FD, dávka se stále skládá ze skupin CG patřících maximálně k jednomu FD v jedné zóně.
NGroups udržuje tuto hranici modelu selhání v dávce, i když počet skupin CG vybraných pro dávku je mnohem menší než nastavení maxBatchPercent. Odráží, že NGroups upřednostňuje bezpečné aktualizace před rychlejšími (a tedy rizikovými) aktualizacemi.
Jedinou dobou, kdy je hranice modelu selhání překročena, když RU vybere skupiny CG, které nejsou v pořádku pro první dávku. V této dávce se RU pokusí aktualizovat všechny skupiny CG, které nejsou v pořádku, aby zlepšily celkovou dostupnost skupin NGroup. V důsledku toho může ru při aktualizaci skupin CG, které nejsou v pořádku, překročit nastavení maxBatchPercent.