Sdílet prostřednictvím


Začínáme s registrem clusteru

Zlepšení odolnosti funkcí nativních pro cloudovou síť pomocí registru clusteru Azure Operator Service Manager (AOSM)

Historie dokumentů

  • Vytvořeno a poprvé publikováno: 26. července 2024
  • Aktualizováno pro ha: 16. října 2024
  • Aktualizováno pro GC: 5. listopadu 2024

Závislosti funkcí

Tato funkce vyžaduje následující minimální prostředí:

  • Minimální verze rozhraní API ARM pro AOSM: 2023-09-01
  • První verze bez vysoké dostupnosti (HA) pro rozšíření Kubernetes síťové funkce (NF): 1.0.2711-7
  • První verze s vysokou dostupností pro rozšíření Kubernetes NF: 2.0.2810-144
  • První verze s rozšířením NF Kubernetes: 2.0.2860-160

Přehled registru clusteru

Registr clusteru Azure Operator Service Manager (AOSM) umožňuje místní kopii imagí kontejnerů v clusteru Nexus K8s. Při instalaci kontejnerizované síťové funkce (CNF) s povoleným registrem clusteru se image kontejnerů načte ze vzdáleného úložiště artefaktů AOSM a uloží se do tohoto místního registru clusteru. Pomocí mutujícího webhooku registr clusteru automaticky zachytí požadavky na image a nahradí cestu k místnímu registru, aby se zabránilo změnám balení vydavatele. S registrací clusteru přežije přístup CNF k imagím kontejnerů ztrátu připojení ke vzdálenému úložišti artefaktů.

Klíčové případy použití a výhody

Cloudové nativní síťové funkce (CNF) potřebují přístup k imagím kontejnerů, a to nejen během počátečního nasazení pomocí úložiště artefaktů AOSM, ale také k zachování provozu síťové funkce. Mezi tyto scénáře patří:

  • Pod se restartuje: Zastavení a spuštění podu může vést k tomu, že uzel clusteru načítá image kontejneru z registru.
  • Operace plánovače Kubernetes: Při přiřazování podů k uzlům podle pravidel profilu plánovače platí, že pokud nový uzel nemá image kontejneru místně uložené v mezipaměti, uzel načte image kontejneru z registru.

Výhody používání registru clusteru AOSM:

  • Poskytuje nezbytné místní image, aby se zabránilo přerušení CNF v případě ztráty připojení k úložišti artefaktů AOSM.
  • Sníží počet vyžádání image v úložišti artefaktů AOSM, protože každý uzel clusteru teď načítá image jenom z místního registru.
  • Řeší problémy s poškozenými adresami URL registru pomocí mutujícího webhooku, který nahradí správnou cestu URL místního registru.

Jak funguje registr clusteru

Registr clusteru AOSM je povolený pomocí rozšíření NFO (Network Function Operator) Arc K8s. Následující rozhraní příkazového řádku ukazuje, jak je v clusteru Nexus K8s povolený registr clusteru.

az k8s-extension create --cluster-name
                        --cluster-type {connectedClusters}
                        --extension-type {Microsoft.Azure.HybridNetwork}
                        --name
                        --resource-group
                        --scope {cluster}
                        --release-namespace {azurehybridnetwork}
                        --release-train {preview, stable}
                        --config Microsoft.CustomLocation.ServiceAccount=azurehybridnetwork-networkfunction-operator
                        [--auto-upgrade {false, true}]
                        [--config global.networkfunctionextension.enableClusterRegistry={false, true}]
                        [--config global.networkfunctionextension.enableLocalRegistry={false, true}]
                        [--config global.networkfunctionextension.enableEarlyLoading={false,true}]
                        [--config global.networkfunctionextension.clusterRegistry.highAvailability.enabled={true, false}]
                        [--config global.networkfunctionextension.clusterRegistry.autoScaling.enabled={true, false}]
                        [--config global.networkfunctionextension.webhook.highAvailability.enabled={true, false}]
                        [--config global.networkfunctionextension.webhook.autoScaling.enabled={true, false}]
                        [--config global.networkfunctionextension.clusterRegistry.storageClassName=]
                        [--config global.networkfunctionextension.clusterRegistry.storageSize=]
                        [--config global.networkfunctionextension.webhook.pod.mutation.matchConditionExpression=]
                        [--config global.networkfunctionextension.clusterRegistry.clusterRegistryGCCadence=]
                        [--config global.networkfunctionextension.clusterRegistry.clusterRegistryGCThreshold=]
                        [--version]

Pokud je funkce registru clusteru povolená v rozšíření Arc K8s Operátor síťové funkce, všechny image kontejnerů nasazené z úložiště artefaktů AOSM jsou přístupné místně v clusteru Nexus K8s. Uživatel může zvolit trvalou velikost úložiště pro registr clusteru.

Poznámka:

Pokud uživatel nezadá žádný vstup, použije se výchozí trvalý svazek o velikosti 100 GB.

Součásti registru clusteru

Funkce registru clusteru nasadí pomocné pody do cílového hraničního clusteru, aby pomohla rozšíření NFO.

Smyšlovač komponent

  • Tento hlavní pod se stará o spojování komponent Custom Resource Objects (CROs) vytvořených společností K8sBridge s využitím poskytovatele prostředků Microsoft.Kubernetes ( RP), Hybrid Relay a agenta Arc spuštěného v clusteru.

Ztlumení podů webhookem

  • Tyto pody implementují webhooky přístupu ztlumené Kubernetes, které obsluhují instanci ztlumeného rozhraní API. Ztlumené rozhraní API dělá dvě věci:
    • Upraví cestu registru image k IP adrese místního registru a zaměňuje úložiště artefaktů AOSM azure container registry (ACR).
    • Vytvoří v hraničním clusteru ARTEFAKT CR.

Sloučit artefakty

  • Tento pod odsouhlasí objekty CR artefaktů vytvořené mutačním webhookem.

Registr

  • Tento pod ukládá a načítá image kontejnerů pro CNF.

Uvolňování paměti registru clusteru

Rozšíření clusteru AOSM spouští úlohu uvolňování paměti na pozadí za účelem pravidelného čištění imagí kontejnerů. Tato úloha se spustí podle plánu, zkontroluje, jestli využití registru clusteru dosáhlo zadané prahové hodnoty, a pokud ano, spusťte proces uvolňování paměti. Koncový uživatel nakonfiguruje plán a prahovou hodnotu úlohy, ale ve výchozím nastavení se úloha spustí jednou za den na 0% prahové hodnotě využití.

Vyčištění manifestů image uvolňování paměti

AOSM udržuje odkazy mezi prostředkem vlastníka podu a využíváním imagí v registru clusteru. Po zahájení procesu čištění imagí budou identifikované image, které nejsou propojené s žádnými pody, a zobrazí se obnovitelné odstranění, které je odebere z registru clusteru. Tento typ obnovitelného odstranění neodstraní prostor úložiště registru clusteru okamžitě. Skutečné odebrání souborů obrázků závisí na uvolňování paměti registru CNCF distribuce, který je uveden níže.

Poznámka:

Odkaz mezi vlastníkem podu a jeho imagemi kontejnerů zajišťuje, že AOSM omylem neodstraní image. Pokud například pod repliky sady přestane fungovat, AOSM nepřesune image kontejneru. AOSM po odstranění repliky pouze předeferences image kontejneru. Stejný princip platí pro pody spravované úlohami Kubernetes a procesem démonů.

Distribuce uvolňování paměti CNCF

AOSM nastaví registr clusteru pomocí opensourcového distribučního registru CNCF. Proto AOSM spoléhá na možnosti uvolňování paměti, které poskytuje uvolňování paměti | CNCF Distribuce. Celkově se řídí standardním procesem označení a úklidu 2 fází, který odstraňuje soubory obrázků za účelem uvolnění místa v úložišti registru.

Poznámka:

Tento proces vyžaduje registr clusteru v režimu jen pro čtení. Pokud se obrázky nahrají, když registr není v režimu jen pro čtení, hrozí, že vrstvy obrázků se omylem odstraní, což vede k poškozenému obrázku. Registr vyžaduje uzamčení v režimu jen pro čtení po dobu až 1 minuty. V důsledku toho AOSM odloží další nasazení NF, když registr clusteru v režimu jen pro čtení.

Parametry konfigurace uvolňování paměti

Následující parametry nakonfigurují plán a prahovou hodnotu pro úlohu uvolňování paměti.

  • global.networkfunctionextension.clusterRegistry.clusterRegistryGCCadence
  • global.networkfunctionextension.clusterRegistry.clusterRegistryGCThreshold
  • Další podrobnosti o konfiguraci najdete v nejnovějších pokynech k instalaci rozšíření síťové funkce.

Důležité informace o vysoké dostupnosti a odolnosti

Rozšíření AOSM NF spoléhá na ztlumení webhooku a hraničního registru pro podporu klíčových funkcí.

  • Onboarding chartů Helm bez nutnosti přizpůsobení cesty k obrázku
  • Registr místního clusteru pro zrychlení operací podů a povolení podpory odpojeného režimu Tyto základní komponenty musí být vysoce dostupné a odolné.

Souhrn změn pro vysokou dostupnost

S vysokou dostupností teď pody registru clusteru a webhooků podporují repliku s minimálně třemi replikami a maximálně pěti replikami. Konfigurace klíče sady replik je následující:

  • Používá se strategie postupného zavedení upgradu.
  • PodDisruptionBudgets (PDB) se používají pro dostupnost během dobrovolného přerušení.
  • Spřažení podů se používá k rovnoměrné rozložení podů mezi uzly.
  • Sonda připravenosti se používá k zajištění připravenosti podů před obsluhou provozu.
  • Pody úloh AOSM se přiřazují jenom k fondu systémových uzlů.
  • Pody se horizontálně škálují v rámci zatížení procesoru a paměti.

Repliky

  • Cluster s více kopiemi nebo replikami aplikace poskytuje první úroveň redundance. Registr clusteru i webhook se definují jako "kind:deployment" s minimálně třemi replikami.

DeploymentStrategy

  • Strategie rollingUpdate se používá k dosažení nulového výpadku upgradů a podpoře postupného zavedení aplikací. Výchozí konfigurace maxUnavailable umožňuje, aby se najednou spouštěl pouze jeden pod, dokud se nevytvořilo dostatek podů pro splnění zásad redundance.

Rozpočet přerušení podů

  • Rozpočet na přerušení zásad (PDB) chrání pody před dobrovolném přerušením a nasazuje se společně s objekty Deployment, ReplicaSet nebo StatefulSet. Pro pody operátorů AOSM se použije PDB s parametrem minAvailable 2.

Anti-spřažení podů

  • Anti-spřažení podů řídí distribuci podů aplikací napříč několika uzly v clusteru. S vysokou dostupností a antispřažením podu AOSM s využitím následujících parametrů:
    • Režim plánování se používá k definování toho, jak se pravidlo vynucuje.
      • requiredDuringSchedulingIgnoredDuringExecution(Hard): Pody musí být naplánovány způsobem, který splňuje definované pravidlo. Pokud nejsou k dispozici žádné topologie, které splňují požadavky pravidla, není pod naplánován.
      • preferredDuringSchedulingIgnoredDuringExecution(Soft): Tento typ pravidla vyjadřuje předvolbu pro plánování podů, ale nevynucuje striktní požadavek. Pokud jsou k dispozici topologie splňující kritéria předvoleb, Kubernetes naplánuje pod. Pokud nejsou k dispozici žádné takové topologie, je možné pod naplánovat na jiných uzlech, které nevyhovují předvolbě.
    • Selektor popisků slouží k cílení na konkrétní pody, pro které se spřažení použije.
    • Klíč topologie slouží k definování potřeb uzlu.
  • Umístění uzlů Nexus je rovnoměrně rozloženo napříč zónami podle návrhu, takže rozložení podů mezi uzly také dává zónovou redundanci.
  • Pody operátorů AOSM používají měkké antispřažení s hmotností 100 a klíčem topologie na základě názvů hostitelů uzlů.

Úložiště

  • Vzhledem k tomu, že registr hraničních zařízení AOSM má více replik, které jsou rozložené mezi uzly, musí trvalý svazek podporovat režim přístupu readWriteMany (RWX). Svazek PVC "nexus-shared" je k dispozici na clusterech Nexus a podporuje režim přístupu RWX.

Monitorování prostřednictvím sond připravenosti

  • AOSM používá sondy připravenosti http ke zjištění, kdy je kontejner připravený začít přijímat provoz. Pod se považuje za připravený, až budou všechny kontejnery připravené. Pokud pod není připravený, odebere se z nástrojů pro vyrovnávání zatížení služby.

Fond systémových uzlů

  • Všechny pody operátorů AOSM se přiřazují fondu systémových uzlů. Tento fond zabraňuje chybné konfiguraci nebo podům aplikací v nevýkonných aplikacích, které mají vliv na systémové pody.

Horizontální škálování

  • V Kubernetes služba HorizontalPodAutoscaler (HPA) automaticky aktualizuje prostředek úlohy s cílem automaticky škálovat úlohy tak, aby odpovídala poptávce. Pody operátorů AOSM mají nakonfigurované následující parametry zásad HPA;
    • Minimální replika tří.
    • Maximální replika pěti.
    • Cílové využití AverageU pro procesor a paměť 80 %.

Omezení prostředků

  • Limity prostředků se používají k zabránění přetížení prostředků na uzlech, na kterých jsou spuštěné pody AOSM. AOSM používá k omezení využití procesoru a paměti dva parametry prostředků.
    • Požadavek na prostředek – minimální částka, která by měla být vyhrazena pro pod. Tato hodnota by měla být nastavená na využití prostředků za normálního zatížení vaší aplikace.
    • Limit prostředků – maximální množství, které by měl pod používat, pokud využití dosáhne limitu, který se ukončí. Všechny kontejnery operátorů AOSM jsou nakonfigurované s odpovídajícím požadavkem, limitem pro procesor a paměť.

Známá omezení vysoké dostupnosti

  • Clustery Nexus AKS (NAKS) s jedním aktivním uzlem ve fondu agentů systému nejsou vhodné pro vysoce dostupné. Produkční topologie Nexus musí používat alespoň tři aktivní uzly ve fondu agentů systému.
  • Třída úložiště nexus-shared je služba úložiště systému souborů NFS (Network File System). Tato služba úložiště NFS je dostupná pro síť cloudových služeb (CSN). Jakýkoli cluster Nexus Kubernetes připojený k CSN může zřídit trvalý svazek z tohoto sdíleného fondu úložiště. Fond úložiště je v současné době omezený na maximální velikost 1 TiB jako síťový cloud (NC) 3.10, kde nc 3.12 má možnost 16 TiB.
  • Spřažení Pod Anti se zabývá pouze počátečním umístěním podů, následným škálováním podů a opravou, se řídí standardní logikou plánování K8s.

Nejčastější dotazy

Můžu použít registr clusteru AOSM s dříve nasazenou aplikací CNF?

Pokud už je aplikace CNF nasazená bez registru clusteru, image kontejnerů nejsou k dispozici automaticky. Před nasazením síťové funkce v AOSM musí být povolený registr clusteru.

Můžu po nasazení změnit velikost úložiště?

Velikost úložiště se po počátečním nasazení nedá upravit. Doporučujeme nakonfigurovat velikost svazku o 3x až 4x od počáteční velikosti.

Můžu zobrazit seznam souborů uložených v úložišti clusteru?

Následující příkaz lze použít k výpisu souborů v čitelné podobě člověka:

 kubectl get artifacts -A -o jsonpath='{range .items[*]}{.spec.sourceArtifact}'

Tento příkaz by měl vytvořit výstup podobný následujícímu:

 ppleltestpublisheras2f88b55037.azurecr.io/nginx:1.0.0