Herbruikbare updatestrategieën definiëren met Azure Kubernetes Fleet Manager

Van toepassing op: ✔️ Fleet Manager ✔️ Fleet Manager met hubcluster

Beheerders kunnen de volgorde van updates voor door Fleet beheerde clusters beheren door een reeks fasen en groepen te definiëren. Ze kunnen configureren wanneer goedkeuringen en pauzes moeten plaatsvinden binnen die fasen en groepen. De volledige configuratie kan worden opgeslagen als een updatestrategie die onafhankelijk van updateuitvoeringen of automatische upgrades kan worden beheerd, zodat strategieën naar behoefte opnieuw kunnen worden gebruikt.

In dit artikel wordt beschreven hoe u updatestrategieën definieert met behulp van groepen en fasen.

Een diagram met een voorbeeld van een updatestrategie met twee updatefasen. Elke updatefase bevat twee updategroepen. Elke updategroep bevat twee lidclusters.

Vereisten

  • Lees het conceptuele overzicht van Fleet-updates, met een uitleg van updateuitvoeringen, fasen, groepen en strategieën waarnaar in deze handleiding wordt verwezen.

  • U moet een Fleet-resource hebben met een of meer lidclusters. Zo niet, volg de quickstart om een Fleet-resource te maken en Azure Kubernetes Service (AKS)-clusters als leden toe te voegen.

  • Stel de volgende omgevingsvariabelen in:

    export GROUP=<resource-group>
    export FLEET=<fleet-name>
    export CLUSTERID=<aks-cluster-resource-id>
    export STRATEGY=<strategy-name>
    
  • Als u de Azure CLI instructies in dit artikel volgt, installeert u de nieuwste versie van de Azure CLI. Zie Azure CLI installeren om de CLI te installeren of upgraden.

  • U hebt ook de fleet Azure CLI-extensie nodig. Voer de volgende opdracht uit om deze te installeren:

    az extension add --name fleet
    

    Voer de az extension update opdracht uit om bij te werken naar de nieuwste versie van de extensie die is uitgebracht:

    az extension update --name fleet
    

Clusters voor uw strategie selecteren

Er zijn twee manieren om te selecteren welke clusters zijn opgenomen in elke fase en groep van uw updatestrategie om de updatevolgorde te beheren:

  • Lidlabels (aanbevolen): wijs labels toe aan elk vlootlid en gebruik memberSelector deze om leden door deze labels te selecteren. Elk lid kan meerdere labels hebben.
  • Updategroepen: Wijs een updategroep toe aan elk vlootlid en definieer vervolgens groepen in uw strategie die overeenkomen met die groepsnamen. Elk lid kan slechts tot één groep behoren.

Een updatestrategie maken met ledenkiezers (preview)

Gebruik lidlabels om clusters in uw updatestrategieën te selecteren. Ze bieden meer flexibiliteit. Zie Groepsclusters met lidlabels voor conceptuele informatie.

Important

Preview-functies van Azure Kubernetes Fleet Manager zijn beschikbaar op basis van selfservice, opt-in. Previews worden geleverd 'zoals het is' en 'voor zover beschikbaar' en zijn uitgesloten van de serviceovereenkomsten en beperkte garantie. Azure Kubernetes Fleet Manager-previews vallen gedeeltelijk onder klantondersteuning op basis van best effort. Zodoende zijn deze functies niet bedoeld voor productiegebruik.

Labels toepassen op lidclusters

Labels toepassen bij het toevoegen van een lidcluster aan de vloot

Gebruik de az fleet member create opdracht om labels toe te passen op uw vlootleden. In het volgende voorbeeld worden twee labels toegepast op het lidcluster: env=staging en tier=frontend:

az fleet member create \
    --resource-group $GROUP \
    --fleet-name $FLEET \
    --name member1 \
    --member-cluster-id $CLUSTERID \
    --labels "env=staging tier=frontend"

Labels toepassen op een bestaand vlootlid

Gebruik de az fleet member update opdracht om labels toe te passen op uw vlootleden.

az fleet member update \
 --resource-group $GROUP \
 --fleet-name $FLEET \
 --name member1 \
 --labels "env=staging tier=frontend"

Een updatestrategie maken

Een updatestrategie bestaat uit een of meer fasen, waarbij een fase een of meer updategroepen kan bevatten.

Notitie

Een Azure portal-ervaring is beschikbaar voordat deze mogelijkheid algemeen beschikbaar is.

  1. Maak een JSON-bestand om de fasen en groepen voor de updateuitvoering te definiëren. Fasen worden opeenvolgend uitgevoerd in de volgorde waarin ze worden weergegeven in het JSON-bestand. Binnen elke fase worden groepen parallel uitgevoerd. In het volgende voorbeeldbestand (example-labels-strategy.json) wordt een strategie gedefinieerd met twee fasen die worden gebruikt om clusters te selecteren op basis van memberSelector hun labels en optionele maxConcurrency instellingen bevat:

    • De staging fase maakt gebruik van een faseniveau memberSelector om alle clusters met het label env=staging te selecteren en één impliciete groep te maken.
    • De production fase maakt gebruik van een faseniveau memberSelector om alle clusters met het label env=productionvooraf te filteren en definieert vervolgens twee groepen, elk met een eigen memberSelector groep om clusters op het tier label te selecteren.

    Wanneer memberSelector het veld van een groep is ingesteld, wordt het veld van de groep name alleen gebruikt als weergave-id voor statusrapportage en logboekregistratie en niet meer gebruikt voor selectie van vlootleden op basis van een updategroep.

    {
        "stages": [
            {
                "name": "staging",
                "memberSelector": { "byLabel": "env=staging" },
                "maxConcurrency": "1",
                "afterStageWaitInSeconds": 600
            },
            {
                "name": "production",
                "memberSelector": { "byLabel": "env=production" },
                "maxConcurrency": "4",
                "groups": [
                    {
                        "name": "frontend",
                        "memberSelector": { "byLabel": "tier=frontend" },
                        "maxConcurrency": "3"
                    },
                    {
                        "name": "backend",
                        "memberSelector": { "byLabel": "tier=backend" },
                        "maxConcurrency": "3"
                    }
                ]
            }
        ]
    }
    

Notitie

Het maxConcurrency veld is optioneel en bepaalt hoeveel clusters gelijktijdig kunnen worden bijgewerkt op fase- of groepsniveau. Gebruik een grotere waarde om clusters sneller in uw vloot te upgraden, of een kleinere waarde voor een gecontroleerdere uitrol die de impact beperkt als er problemen optreden.

Wanneer een fase memberSelector zonder groepen (zoals staging) wordt gebruikt, vormen alle overeenkomende leden samen één impliciete groep en regelt de fase met maxConcurrency de gelijktijdigheid rechtstreeks. Wanneer groepen worden gedefinieerd (zoals), productionfungeert het faseniveau maxConcurrency als een algemeen plafond voor alle groepen.

In dit voorbeeld stelt de staging fase maxConcurrency in op "1", zodat stagingclusters één voor één worden bijgewerkt. In de production fase kunnen maximaal "4" clusters gelijktijdig uitgevoerd worden, waarbij de frontend en backend groepen elk zijn beperkt tot "3".

Waarden kunnen een vast geheel getal zijn (bijvoorbeeld "3") of een percentage (bijvoorbeeld "50%"). Als u dit weglaat, past het systeem standaardwaarden toe. Zie Maximale gelijktijdigheid (preview) voor meer informatie over hoe deze waarden worden omgezet en de bovengrens.

  1. Maak een nieuwe updatestrategie met behulp van de az fleet updatestrategy create opdracht waarbij de --stages vlag is ingesteld op de naam van uw JSON-bestand.

    az fleet updatestrategy create \
     --resource-group $GROUP \
     --fleet-name $FLEET \
     --name $STRATEGY \
     --stages example-labels-strategy.json
    

Een updatestrategie maken met behulp van updategroepen

U kunt clusters selecteren in updatestrategieën door ze toe te wijzen aan één updategroep. Definieer een updatestrategie die deze updategroepen toewijst aan fasen. Binnen een updatefase worden updates parallel toegepast op elke updategroep. Binnen een updategroep worden lidclusters opeenvolgend bijgewerkt.

Notitie

Een vlootlid kan slechts deel uitmaken van één updategroep, maar aan een updategroep kunnen meerdere vlootleden zijn toegewezen. Een updategroep zelf is geen afzonderlijk resourcetype. Updategroepen zijn alleen tekenreeksen die verwijzingen van de vlootleden vertegenwoordigen. Dus als alle vlootleden met verwijzingen naar een gemeenschappelijke updategroep worden verwijderd, houdt die specifieke updategroep op te bestaan.

Clusters toewijzen om groepen bij te werken

Toewijzen aan groep bij het toevoegen van lidcluster aan de vloot

  1. Navigeer in Azure Portal naar uw Azure Kubernetes Fleet Manager-resource.

  2. Selecteer Lidclusterstoevoegen in het servicemenu onder >.

    Schermopname van de pagina Azure Portal voor Azure Kubernetes Fleet Manager voor het toevoegen van lidclusters.

  3. Selecteer het cluster dat u wilt toevoegen en selecteer vervolgens Volgende: Beoordelen en toevoegen.

  4. Voer de naam in van de updategroep waaraan u het cluster wilt toewijzen en selecteer vervolgens Toevoegen.

    Schermopname van de pagina Azure Portal voor Azure Kubernetes Fleet Manager-beoordeling en stap voor lidclusters toevoegen.

Wijs een lidcluster toe aan een updategroep wanneer u het lidcluster aan de vloot toevoegt met behulp van de az fleet member create opdracht met de --update-group parameter die is ingesteld op de naam van de updategroep.

az fleet member create \
    --resource-group $GROUP \
    --fleet-name $FLEET \
    --name member1 \
    --member-cluster-id $CLUSTERID \
    --update-group group-1a

Een bestaand vlootlid toewijzen aan een updategroep

  1. Navigeer in Azure Portal naar uw Azure Kubernetes Fleet Manager-resource.

  2. Selecteer lidclusters in het servicemenu onder Instellingen.

  3. Selecteer de clusters die u wilt toewijzen aan een updategroep en selecteer vervolgens Updategroep toewijzen

    Schermopname van de pagina Azure Portal voor het toewijzen van bestaande lidclusters aan een groep.

  4. Voer de naam in van de updategroep waaraan u het cluster wilt toewijzen en selecteer vervolgens Toewijzen.

    Schermopname van de pagina Azure Portal voor lidclusters met het formulier voor het bijwerken van de groep van een lidcluster.

Wijs een bestaand vlootlid toe aan een updategroep met behulp van de az fleet member update opdracht met de --update-group vlag die is ingesteld op de naam van de updategroep.

az fleet member update \
 --resource-group $GROUP \
 --fleet-name $FLEET \
 --name member1 \
 --update-group group-1

Een updatestrategie maken

Een updatestrategie bestaat uit een of meer fasen, waarbij een fase een of meer updategroepen kan bevatten.

  1. Navigeer in Azure Portal naar uw Azure Kubernetes Fleet Manager-resource.

  2. Selecteer in het servicemenu onder Instellingen de optie Strategieën voor het bijwerken>van meerdere clusters en vervolgens Maken.

  3. Voer een naam in voor de strategie.

  4. De eerste keer dat u de pagina bekijkt, wordt een uitlegdiagram voor de updatestrategie weergegeven, waarmee u kunt visualiseren hoe strategieën werken.

    Een schermopname van Azure Portal met het maken van een updatestrategie.

  5. Selecteer Maak Fase en voer het volgende in:

    • Fasenaam - de naam van de fase - deze moet uniek zijn voor alle fasenamen in de strategie.
    • (Optioneel) Fasegoedkeuringen : selecteer deze optie als u wilt wachten op een goedkeuring voordat deze fase wordt gestart of nadat deze is voltooid. Zie Goedkeuringen toevoegen om groepen en fasen bij te werken voor meer informatie.
    • (Optioneel) Onderbreken na fase : selecteer deze optie als u een pauze wilt definiëren voordat u naar de volgende fase gaat.
    • (Optioneel) Onderbrekingsduur : selecteer een vooraf gedefinieerde duur of voer een aangepaste waarde in seconden in.

    Een schermopname van de Azure-portal die de creatie van de updatestrategie van Azure Kubernetes Fleet Manager laat zien.

  6. Wijs een of meer Updategroepen toe aan de fase en selecteer Maken.

    Notitie

    Het maximum aantal updategroepen in elke updatefase is 50.

    Een schermopname van Azure Portal met het maken van de strategiefase voor het bijwerken van Azure Kubernetes Fleet Manager, waarbij updategroepen worden geselecteerd die u wilt opnemen.

Voor dit scenario maken we fasen en groepen die overeenkomen met de details die worden gebruikt voor het Azure Portal-proces.

  1. Maak een JSON-bestand om de fasen en groepen voor de updateuitvoering te definiëren. Fasen worden opeenvolgend uitgevoerd in de volgorde waarin ze worden weergegeven in het JSON-bestand. Groepen worden parallel uitgevoerd binnen elke fase, dus volgorde is niet belangrijk. Het volgende voorbeeldbestand (example-stages.json) definieert een strategie met twee fasen en bevat optioneel maxConcurrency en maxAllowedFailures instellingen:

    {
        "stages": [
            {
                "name": "stage-1",
                "maxConcurrency": "7",
                "maxAllowedFailures": "2",
                "groups": [
                    {
                        "name": "group-1",
                        "maxConcurrency": "3",
                        "maxAllowedFailures": "1"
                    },
                    {
                        "name": "group-2",
                        "maxConcurrency": "50%",
                        "maxAllowedFailures": "25%"
                    }
                ],
                "afterStageWaitInSeconds": 300
            },
            {
                "name": "stage-2",
                "maxConcurrency": "100%",
                "maxAllowedFailures": "0",
                "groups": [
                    {
                        "name": "group-3",
                        "maxConcurrency": "2",
                        "maxAllowedFailures": "0"
                    }
                ]
            }
        ]
    }
    

    maxConcurrency

    Het maxConcurrency veld is optioneel en bepaalt hoeveel clusters gelijktijdig kunnen worden bijgewerkt op fase- of groepsniveau. Gebruik een grotere waarde om clusters binnen uw vloot sneller te upgraden, of een kleinere waarde voor een meer gecontroleerde uitrol die de impact beperkt als er problemen optreden.

    In dit voorbeeld stelt stage-1maxConcurrency in op "7", waardoor in deze fase maximaal "7" clusters gelijktijdig kunnen worden bijgewerkt. Binnen stage-1 beperkt group-1 de gelijktijdigheid tot "3" clusters, wat betekent dat maximaal "3" in deze groep tegelijkertijd kan worden bijgewerkt. group-2 maakt het mogelijk dat maximaal "50%" clusters tegelijkertijd worden bijgewerkt (bijvoorbeeld, als de groep vier clusters bevat, kunnen er maximaal 2 tegelijkertijd worden bijgewerkt).

    Waarden kunnen een vast geheel getal zijn (bijvoorbeeld "3") of een percentage (bijvoorbeeld "100%"). Als u dit weglaat, past het systeem standaardwaarden toe. Zie Maximale gelijktijdigheid (preview) voor meer informatie over hoe deze waarden worden omgezet en de bovengrens.

    maxAllowedFailures

    Het maxAllowedFailures veld is optioneel en bepaalt hoeveel mislukte upgradefouten in het lidcluster worden getolereerd voordat de groep of fase is gemarkeerd als mislukt. Standaard (wanneer dit niet is ingesteld of "0"), stopt één fout de volledige updateuitvoering.

    Met deze instelling wordt alleen het aantal fouten geëvalueerd. Er wordt geen minimum slagingspercentage afgedwongen. Een groep of fase kan dus op Completed eindigen, zelfs als sommige of alle leden zijn mislukt, zolang de foutdrempel niet was overschreden toen Fleet zijn planningsbeslissingen nam.

    In dit voorbeeld stelt stage-1maxAllowedFailures in op "2", waarbij uitval van maximaal twee leden binnen de fase wordt getolereerd. Binnenstage-1, group-1 tolereert fouten en "1" tolereert group-2"25%" van de leden die mislukken (bijvoorbeeld als de groep 4 clusters bevat, maximaal 1 fout wordt getolereerd). stage-2 stelt maxAllowedFailures in op "0", wat betekent dat elke fout de run onmiddellijk stopt en vaak nuttig is voor productiefases.

    Voor de meeste implementaties geeft u de voorkeur aan waarden op basis van percentages, omdat ze beter worden geschaald in verschillende groepsgrootten. Vermijd de waarde gelijk te stellen aan het totaal aantal leden, tenzij u voor dat segment opzettelijk gedrag wilt waarbij het in de praktijk nooit mislukt.

    Waarden kunnen een vast geheel getal zijn (bijvoorbeeld "3") of een percentage (bijvoorbeeld "25%"). Zie Maximaal toegestane fouten (preview) voor meer informatie over hoe deze waarden worden opgelost.

  2. Maak een nieuwe updatestrategie met behulp van de az fleet updatestrategy create opdracht waarbij de --stages vlag is ingesteld op de naam van uw JSON-bestand.

    az fleet updatestrategy create \
     --resource-group $GROUP \
     --fleet-name $FLEET \
     --name $STRATEGY \
     --stages example-stages.json
    

Volgende stappen

U kunt een updatestrategie gebruiken als onderdeel van een handmatige updateuitvoering of een profiel voor automatische upgrade. Zie: