Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Wprowadzenie
W miarę zmiany wymagań może być konieczne aktualizowanie NGroups i grup kontenerowych (CG).
Dostępne są dwa tryby aktualizacji do aktualizowania NGroups — Ręczne (opcja domyślna) i Rolling.
W ramach aktualizacji stopniowej (RU) dostępne są 2 opcje — aktualizacja w miejscu i zastąpienie aktualizacji. Opcja "Zamień RU" jest ustawieniem domyślnym.
Dokument ten szczegółowo opisuje RU. Aktualizacja ręczna jest omówiona w linku do dokumentacji NGroups tutaj.
Opis funkcji
Rozważmy podstawowy przykład aktualizowania odwołania profilu CG z cgprofile1 do cgprofile2.
Aktualizacja krocząca w miejscu
Przy włączonej funkcji RU w miejscu, gdy zaktualizujemy odwołanie do cgprofile2 i wydamy polecenie UPDATE NGroups, istniejące grupy CG są aktualizowane za pomocą cgprofile2. Aktualizacje istniejących CG odbywają się w małych partiach, a nie wszystkie naraz. Gwarantuje to minimalny wpływ na obciążenie, ponieważ tylko niewielki procent CG może być niedostępny podczas aktualizacji.
Rozmiar partii i inne powiązane ustawienia trybu aktualizacji stopniowej można skonfigurować za pomocą interfejsu API NGroups.
Ze względu na to, że aktualizacje w miejscu RU dotyczą istniejących grup kontenerów, istnieją pewne ograniczenia dotyczące właściwości grup kontenerów wymuszanych przez usługę Azure Container Instances (ACI).
Zobacz ograniczenia usługi ACI dotyczące aktualizowania grup CG. Zobacz także tutaj, aby uzyskać właściwości CG, które wymagają usunięcia (zamiast aktualizacji).
Zastąpienie aktualizacji stopniowej
W przypadku użycia funkcji replace RU, gdy zaktualizujemy odwołanie do cgprofile2 i wydamy polecenie UPDATE NGroups, nowe CG są tworzone na bazie cgprofile2. Istniejące CG z plikiem cgprofile1 są usuwane. To tworzenie i usuwanie jest wykonywane w małych partiach (a nie naraz). Gwarantuje to minimalny wpływ na obciążenie pracą, ponieważ podczas aktualizacji jedynie niewielki procent grup CG zostaje dotknięty.
Podobnie jak w przypadku RU na miejscu, możemy skonfigurować rozmiar partii i inne powiązane ustawienia trybu aktualizacji stopniowej za pomocą interfejsu API NGroups.
Ponieważ 'replace RU' tworzy nowe grupy CG, istnieje mniej ograniczeń narzucanych przez ACI. W rezultacie opcja "replace RU" jest bardziej zaawansowana i jest ustawieniem domyślnym, gdy klient wybierze RU.
Użycie
Wyzwalanie aktualizacji stopniowej
Aktualizacja cykliczna jest wyzwalana po wywołaniu NGroups PUT, a profil CG w wywołaniu PUT różni się od profilu CG obecnie używanego w NGroups.
NGroups następnie automatycznie grupuje wystąpienia w partie i aktualizuje jedną partię naraz. Parametr maxBatchPercent określa rozmiar partii.
Aktualizowanie usługi Batch
Aktualizacja w miejscu wywołuje wywołanie CG PUT w celu zaktualizowania każdej CG partii.
Aktualizacja zastępująca inicjuje wywołanie CG PUT, aby utworzyć nowe CGs i usunąć istniejące CGs partii. Istnieje korespondencja 1:1 między tworzonymi grupami CG a usuniętymi grupami CG. Jednak nazwy CG będą inne.
Jeśli wystarczająca liczba CG w partii dostarcza zdrowe sygnały po okresie pauseTimeBetweenBatches, NGroups automatycznie uruchamia następną partię aktualizacji. W przeciwnym razie zatrzymuje wdrożenie. Parametr maxUnhealthyPercent określa łączną liczbę CG w złej kondycji, podczas gdy parametr maxUnhealthyUpdatedPercent określa łączną liczbę CG w złej kondycji po aktualizacji.
Oto przykład, aby wysłać żądanie aktualizacji stopniowej do 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"
}
}
]
}
}
Jeśli wersja obrazu zostanie oznaczona najnowszy tag w profilu CG dla obrazów kontenerów, NGroups automatycznie pobiera najnowszą wersję obrazu podczas RU. Aby zapobiec nieoczekiwanemu zachowaniu w aplikacji, zaleca się, aby nie używać najnowszego tagu dla obrazów. Zamiast tego użyj określonych wersji.
Uwaga
Aby skorzystać z funkcji zamiany RU, ustaw tag "rollingupdate.replace.enabled: true" dla zasobu NGroups. Ten tag jest tymczasowy i nie będzie on wymagany w przyszłości.
“tags”: {
“rollingupdate.replace.enabled”: true
}
Pobieranie stanu uruchomionej aktualizacji stopniowej
Aby uzyskać najnowszy stan aktualizacji stopniowej, możesz użyć tego interfejsu API REST:
GET /subscriptions/{subscriptionId}/resourceGroups/{{rgName}}/providers/Microsoft.ContainerInstance/NGroups/{{ngroupsName}}/latestRollingUpdate
Zwraca to odpowiedź zawierającą odpowiednie informacje o RU.
Anulowanie aktualizacji stopniowej
Aby anulować aktualizację stopniową, użyj następującego interfejsu API. Po anulowaniu nie można wznowić lub ponownie uruchomić RU. Należy wyzwolić nową jednostkę RU.
POST /subscriptions/{subscriptionId}/resourceGroups/{{rgName}}/providers/Microsoft.ContainerInstance/NGroups/{{ngroupsName}}/cancelRollingUpdate
Nie musisz podawać treści żądania podczas wywoływania tego interfejsu API.
Ważne jest również, aby wiedzieć, że anulowanie RU nie spowoduje jego automatycznego przywrócenia do poprzedniego stanu, ale pozostanie w stanie, w którym znajdował się w momencie anulowania. Na przykład w przypadku, gdy podczas RU chcesz zaktualizować referencję profilu CG z cgprofile1 do cgprofile2, ale operacja zostanie anulowana, niektóre grupy CG mogą mieć nowy profil cgprofile2, a inne pozostaną z cgprofile1.
Granica partii w aktualizacji stopniowej
Grupy CG określonej partii w RU nie przekraczają granicy modelu błędów. Model błędów reprezentuje kombinację strefy/domeny błędów (FD). Na przykład strefa 1 / FD 0 jest granicą modelu błędów, strefa 1 / FD 1 jest kolejną granicą modelu błędów, a strefa 2 / FD 0 jest kolejną granicą modelu błędów.
Jeśli klient ma wiele strefowych grup NGroup skonfigurowanych z trzema strefami, partia jest ograniczona do grup CG należących do jednej strefy co najwyżej. Partia nigdy nie składa się z CG rozmieszczonych w wielu strefach.
Jeśli klient ma konfigurację grup NGroup z wieloma strefami i wieloma grupami FD, partia nadal składa się z grup CG należących do tylko jednego FD w jednej strefie co najwyżej.
NGroups utrzymuje granicę błędu modelu w ramach partii, nawet jeśli liczba grup CG wybranych do partii jest znacznie mniejsza niż ustawienie maxBatchPercent. Odzwierciedla to, że grupy NGroup preferują bezpieczne aktualizacje w przypadku szybszych (a tym samym bardziej ryzykownych) aktualizacji.
Jedyny raz, kiedy granica modelu błędów jest przekraczana, to wtedy, gdy RU wybiera niezdrowe grupy do pierwszej partii. W tej partii RU próbuje zaktualizować wszystkie niezdrowe CG, aby poprawić ogólną dostępność NGroups. W rezultacie, podczas aktualizowania niesprawnych CG, RU może przekroczyć wartość ustawienia maxBatchPercent.