Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Introduktion
När kraven ändras kan du behöva fortsätta uppdatera dina NGroups och dess containergrupper (CG:er).
Det finns två tillgängliga uppdateringslägen för uppdatering av en NGroups – Manuell (standardalternativ) och Rullande.
I löpande uppdatering (RU) finns det två alternativ – uppdatering på plats och ersätt uppdatering. Ersätt RU är standardalternativet.
I det här dokumentet beskrivs RU i detalj. Manuell uppdatering beskrivs i länken till NGroups-dokumentationen här.
Funktionsbeskrivning
Överväg ett grundläggande exempel på uppdatering av en CG-profilreferens från cgprofile1 till cgprofile2.
Löpande uppdatering på plats
Med ru på plats uppdateras befintliga CG:er med cgprofile2 när vi uppdaterar referensen till cgprofile2 och utfärdar ett UPDATE NGroups-kommando. Uppdateringen av befintliga CG:er sker i små batchar (och inte alla samtidigt). Det säkerställer att arbetsbelastningen påverkas minimalt eftersom endast en liten andel av CG:erna kanske inte är tillgängliga under uppdateringen.
Vi kan konfigurera batchstorleken och andra relaterade inställningar för rullande uppdateringsläge med NGroups-API:et.
Eftersom RU på plats uppdaterar befintliga CG:er finns det vissa begränsningar för CG-egenskaperna som Azure Container Instances (ACI) tillämpar.
Se ACI:s begränsningar kring uppdatering av CG:er. Se också här för egenskaper för CG:er som behöver tas bort istället för en uppdatering.
Ersätt löpande uppdatering
Med ersätt RU, när vi uppdaterar referensen till cgprofile2 och utfärdar ett UPDATE NGroups-kommando, skapas nya CG:er med cgprofile2. Befintliga CG:er med cgprofile1 tas bort. Den här genereringen och borttagningen sker i små batchar (och inte alla samtidigt). Det säkerställer att arbetsbelastningen påverkas minimalt eftersom endast en liten andel av CG:erna påverkas under uppdateringen.
Precis som på plats RU kan vi konfigurera batchstorleken och andra relaterade inställningar för rullande uppdateringsläge med NGroups-API:et.
Eftersom ersättningen av RU skapar nya CG finns det färre begränsningar som tillämpas av ACI. Därför är ersätt RU ett mer kraftfullt alternativ och är standardalternativet när en kund väljer RU.
Förbrukning
Utlösa en löpande uppdatering
Löpande uppdatering utlöses när ett NGroups PUT-anrop görs och CG-profilen i PUT-anropet skiljer sig från CG-profilen som för närvarande refereras till i NGroups.
NGroups grupperar sedan automatiskt instanser i batchar och uppdaterar en batch i taget. Parametern maxBatchPercent avgör batchens storlek.
Uppdatera en omgång
En uppdatering på plats anropar ett CG PUT-anrop för att uppdatera varje CG för batchen.
En ersättningsuppdatering anropar ett CG PUT-anrop för att skapa nya CG:er och ta bort befintliga CG:er för batchen. Det finns en 1:1-korrespondens mellan de CG:er som skapas och de CG:er som tas bort. CG-namnen kommer dock att vara olika.
Om ett tillräckligt antal CG:er i batchen ger felfria signaler efter paustidenTimeBetweenBatches startar NGroups automatiskt nästa batch för uppdateringen. Annars stoppas distributionen. Parametern maxUnhealthyPercent anger det totala antalet feltillstånds-CG:er, medan parametern maxUnhealthyUpdatedPercent anger det totala antalet feltillstånds-CG:er efter uppdateringen.
Här är ett exempel för att utfärda en löpande uppdateringsbegäran till NGroups:
{
"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"
}
}
]
}
}
Om avbildningsversionen är inställd på den senaste taggen för containeravbildningar i CG-profilen hämtar NGroups automatiskt den senaste avbildningsversionen under RU:n. För att förhindra oväntat beteende i ditt program rekommenderar vi att du inte använder den senaste taggen för bilder. Använd i stället specifika versioner.
Kommentar
För att byta ut RU, ställ in taggen "rollingupdate.replace.enabled: true" för NGroups-resursen. Den här taggen är tillfällig och kommer inte att krävas i framtiden.
“tags”: {
“rollingupdate.replace.enabled”: true
}
Hämta status för en löpande gradvis uppdatering
Om du vill få den senaste statusen för den löpande uppdateringen kan du använda det här REST-API:et:
GET /subscriptions/{subscriptionId}/resourceGroups/{{rgName}}/providers/Microsoft.ContainerInstance/NGroups/{{ngroupsName}}/latestRollingUpdate
Detta returnerar ett svar som innehåller relevant information om RU: et.
Avbryta en löpande uppdatering
Om du vill avbryta en löpande uppdatering använder du följande API. När den har avbrutits kan RU inte återupptas eller startas om. En ny RU måste utlösas.
POST /subscriptions/{subscriptionId}/resourceGroups/{{rgName}}/providers/Microsoft.ContainerInstance/NGroups/{{ngroupsName}}/cancelRollingUpdate
Du behöver inte ange en begärandetext när du anropar det här API:et.
Det är också viktigt att veta att om du avbryter en RU återställs den inte automatiskt till det tidigare tillståndet, men den förblir i det tillstånd som den var när den avbröts. Om en RU till exempel vill uppdatera en CG-profilreferens från cgprofile1 till cgprofile2, och någon gång åtgärden avbryts, kan vissa CG:er ha den nya profilen cgprofile2 och andra kvar med cgprofile1.
Gränsen för en batch i en löpande uppdatering
CG:erna för en specifik batch i en RU korsar inte en felmodellgräns. En felmodell representerar en kombination av zon/feldomän (FD). Zon 1/FD 0 är till exempel en felmodellgräns, zon 1/FD 1 är en annan felmodellgräns och zon 2/FD 0 är ännu en felmodellgräns.
Om en kund har konfigurerat flera zonindelade NGroups med tre zoner är en batch begränsad till CG:er som bara tillhör en zon som mest. En batch består aldrig av CG:er spridda över flera zoner.
Om en kund har en NGroups-konfiguration med flera zoner och flera FD består en batch fortfarande av CG:er som bara tillhör en FD i en enda zon som mest.
NGroups upprätthåller den här felmodellgränsen i en batch, även om antalet CG:er som valts för en batch är mycket mindre än inställningen maxBatchPercent. Det visar att NGroups föredrar säkra uppdateringar framför snabbare (och därmed mer riskfyllda) uppdateringar.
Den enda gången en felmodellgräns korsas är när RU väljer ohälsosamma CG:er för den första omgången. I den här batchen försöker RU uppdatera alla ohälsosamma CG:er för att förbättra den sammanlagda tillgängligheten för NGroups. Därför kan RU överskrida maxBatchPercent-inställningen när ohälsosamma CG:er uppdateras.