Kubernetes-erőforrás-propagálás a központi fürtről tagfürtökre
Ez a cikk a Kubernetes-erőforrások központi fürtökről tagfürtökre történő propagálásának fogalmát ismerteti az Azure Kubernetes Fleet Manager (Fleet) használatával.
A platform rendszergazdáinak gyakran több fürtön kell üzembe helyeznie a Kubernetes-erőforrásokat, például:
- Hozzáférés-vezérlés kezelése szerepkörök és szerepkörkötések használatával több fürtben.
- Olyan infrastruktúra-alkalmazásokat kell futtatnia, mint a Prometheus vagy a Flux, amelyeknek az összes fürtön kell lenniük.
Az alkalmazásfejlesztőknek gyakran több fürtön kell üzembe helyeznie a Kubernetes-erőforrásokat, például:
- Egy alkalmazást kiszolgáló videó üzembe helyezése több különböző régióban lévő fürtön az alacsony késésű figyelési élmény érdekében.
- Bevásárlókocsi-alkalmazás üzembe helyezése két párosított régióban, hogy az ügyfelek továbbra is vásároljanak egyetlen régió leállása során.
- Kötegelt számítási alkalmazás üzembe helyezése olyan fürtökbe, ahol olcsó kihasználatlan csomópontkészletek érhetők el.
Nehéz manuálisan létrehozni, frissíteni és nyomon követni ezeket a Kubernetes-erőforrásokat több fürtben. A Fleet kubernetes-erőforrás-propagálást biztosít a Kubernetes-erőforrások nagy léptékű felügyeletének engedélyezéséhez. A Fleet használatával kubernetes-erőforrásokat hozhat létre a központi fürtben, és a Kubernetes egyéni erőforrásaival propagálhatja őket a kiválasztott tagfürtökre: MemberCluster
és ClusterResourcePlacement
. A Fleet ezeket az egyéni erőforrásokat egy nyílt forráskódú, natív felhőbeli többfürtes megoldás alapján támogatja. További információkért tekintse meg az upstream Fleet dokumentációját.
Fontos
Az Azure Kubernetes Fleet Manager előzetes verziójú funkciói önkiszolgáló, opt-in alapon érhetők el. Az előzetes verziókat "ahogy van" és "rendelkezésre állóként" biztosítjuk, és a szolgáltatási szerződésekből és a korlátozott jótállásból kizárjuk őket. Az Azure Kubernetes Fleet Manager előzetes verzióit részben az ügyfélszolgálat fedezi a legjobb munkamennyiség alapján. Ezért ezek a funkciók nem éles használatra vannak szánva.
Erőforrás-propagálási munkafolyamat
Mi az a MemberCluster
?
Ha egy fürt csatlakozik egy flottához, létrejön egy megfelelő MemberCluster
egyéni erőforrás a központi fürtön. Ezzel az egyéni erőforrás használatával kiválaszthatja a célfürtöket az erőforrás-propagálásban.
A következő címkék használhatók a célfürt kiválasztásához az erőforrás-propagálásban, és automatikusan hozzáadódnak az összes tagfürthöz:
fleet.azure.com/location
fleet.azure.com/resource-group
fleet.azure.com/subscription-id
További információ: MemberCluster API-referencia.
Mi az a ClusterResourcePlacement
?
Az ClusterResourcePlacement
objektumokkal tudathatja a Flottaütemezővel, hogyan helyezhet el egy adott fürthatókörű objektumkészletet a központi fürtből tagfürtökbe. A névtér hatókörrel rendelkező objektumok, például az üzembe helyezések, a StatefulSets, a DaemonSets, a Config Térképek, a Titkos kulcsok és a PersistentVolumeClaims a névtér kijelölésekor jelennek meg.
A következőkkel ClusterResourcePlacement
:
- Válassza ki, hogy mely fürt hatókörű Kubernetes-erőforrásokat propagálja a tagfürtökre.
- Adja meg az elhelyezési szabályzatokat, amelyek manuálisan vagy automatikusan kijelölnek egy részhalmazt vagy az összes tagfürtöt célfürtként.
- A kijelölt Kubernetes-erőforrások frissítéseinek biztonságos bevezetéséhez adjon meg bevezetési stratégiákat több célfürtre.
- Az egyes célfürtök felé irányuló propagálási folyamat megtekintése.
Az ClusterResourcePlacement
objektum támogatja a ConfigMap használatát az objektum burkolózásához, hogy a nem kívánt mellékhatások nélkül propagálja a tagfürtökre. A kiválasztási módszerek a következők:
- Csoportosítás, verzió és típus: Jelölje ki és helyezze el az adott típusú összes erőforrást.
- Csoport, verzió, típus és név: Válasszon ki és helyezzen el egy adott típusú erőforrást.
- Csoportosítás, verzió, típus és címkék: Jelölje ki és helyezze el az adott típusú összes erőforrást, amely megfelel a megadott címkéknek.
További információ: API-referenciaClusterResourcePlacement
.
A létrehozáskor a ClusterResourcePlacement
következő affinitási típusok adhatók meg:
- requiredDuringSchedulingIgnoredDuringExecution: Mivel ez az affinitás az ütemezés során szükséges típus, a tulajdonságok alapján szűri a fürtöket.
- preferredDuringSchedulingIgnoredDuringExecution: Mivel ez az affinitás csak az előnyben részesített típushoz tartozik, de az ütemezés során nem szükséges, kedvezményes rangsorolást biztosít a fürtök számára az Ön által megadott tulajdonságok, például a költségek vagy az erőforrások rendelkezésre állása alapján.
Több elhelyezési típus is rendelkezésre áll azon fürtök számának szabályozásához, amelyekre a Kubernetes-erőforrást propagálja:
PickAll
az erőforrásokat az összes elérhető tagfürtbe helyezi. Ez a szabályzat olyan infrastruktúra-számítási feladatok elhelyezéséhez hasznos, mint a fürtfigyelés vagy a jelentéskészítési alkalmazások.PickFixed
az erőforrásokat név szerint a tagfürtök adott listájába helyezi.PickN
a legrugalmasabb elhelyezési lehetőség, amely lehetővé teszi a fürtök kiválasztását affinitási vagy topológiai eloszlási korlátozások alapján, és akkor hasznos, ha a számítási feladatokat több megfelelő fürt között terjeszti a rendelkezésre állás biztosítása érdekében.
PickAll
elhelyezési szabályzat
Elhelyezési szabályzattal PickAll
üzembe helyezhet egy számítási feladatot a flotta összes tagfürtjén (opcionálisan megfelel egy feltételkészletnek).
Az alábbi példa bemutatja, hogyan helyezhet üzembe egy test-deployment
névteret és annak összes objektumát a következő címkével environment: production
ellátott fürtökön:
apiVersion: placement.kubernetes-fleet.io/v1beta1
kind: ClusterResourcePlacement
metadata:
name: crp-1
spec:
policy:
placementType: PickAll
affinity:
clusterAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
clusterSelectorTerms:
- labelSelector:
matchLabels:
environment: production
resourceSelectors:
- group: ""
kind: Namespace
name: prod-deployment
version: v1
Ez az egyszerű szabályzat felveszi a névteret és a test-deployment
benne található összes erőforrást, és üzembe helyezi azt a flotta összes tagfürtjén a megadott environment
címkével. Ha minden fürtre szükség van, teljesen eltávolíthatja a affinity
kifejezést.
PickFixed
elhelyezési szabályzat
Ha egy számítási feladatot szeretne üzembe helyezni egy ismert tagfürtben, egy elhelyezési szabályzattal PickFixed
név szerint választhatja ki a fürtöket.
Az alábbi példa bemutatja, hogyan helyezheti üzembe a névteret tagfürtökben test-deployment
cluster1
, és cluster2
hogyan:
apiVersion: placement.kubernetes-fleet.io/v1beta1
kind: ClusterResourcePlacement
metadata:
name: crp-2
spec:
policy:
placementType: PickFixed
clusterNames:
- cluster1
- cluster2
resourceSelectors:
- group: ""
kind: Namespace
name: test-deployment
version: v1
PickN
elhelyezési szabályzat
Az PickN
elhelyezési szabályzat a legrugalmasabb lehetőség, és lehetővé teszi az erőforrások konfigurálható számú fürtbe való elhelyezését az affinitások és a topológia eloszlási korlátai alapján.
PickN
affinitásokkal
A podütemezéshez hasonló affinitásokat használ az PickN
elhelyezési szabályzatokkal. Beállíthatja a szükséges és az előnyben részesített affinitásokat is. A szükséges affinitások megakadályozzák az olyan fürtök elhelyezését, amelyek nem felelnek meg a megadott affinitásoknak, és az előnyben részesített affinitások lehetővé teszik az érvényes fürtök készletének rendelését az elhelyezési döntés meghozatalakor.
Az alábbi példa bemutatja, hogyan helyezhet üzembe számítási feladatot három fürtben. Csak a critical-allowed: "true"
címkével rendelkező fürtök érvényesek elhelyezési célok, és előnyben részesítik a címkével critical-level: 1
rendelkező fürtöket:
apiVersion: placement.kubernetes-fleet.io/v1beta1
kind: ClusterResourcePlacement
metadata:
name: crp
spec:
resourceSelectors:
- ...
policy:
placementType: PickN
numberOfClusters: 3
affinity:
clusterAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
weight: 20
preference:
- labelSelector:
matchLabels:
critical-level: 1
requiredDuringSchedulingIgnoredDuringExecution:
clusterSelectorTerms:
- labelSelector:
matchLabels:
critical-allowed: "true"
PickN
topológiaeloszlással kapcsolatos korlátozások
Topológiaeloszlási korlátozások használatával kényszerítheti a fürtelhelyezések topológiahatárok közötti megosztását a rendelkezésre állási követelmények teljesítéséhez, például az elhelyezés régiók közötti felosztásához vagy frissítési körökhöz. A topológiapárokra vonatkozó korlátozásokat is konfigurálhatja, hogy megakadályozza az ütemezést, ha a kényszer nem teljesül (whenUnsatisfiable: DoNotSchedule
) vagy a lehető legjobban ütemezhető (whenUnsatisfiable: ScheduleAnyway
).
Az alábbi példa bemutatja, hogyan oszthat el egy adott erőforráskészletet több régióban, és hogyan kísérelheti meg a különböző frissítési napokkal rendelkező tagfürtök ütemezését:
apiVersion: placement.kubernetes-fleet.io/v1beta1
kind: ClusterResourcePlacement
metadata:
name: crp
spec:
resourceSelectors:
- ...
policy:
placementType: PickN
topologySpreadConstraints:
- maxSkew: 2
topologyKey: region
whenUnsatisfiable: DoNotSchedule
- maxSkew: 2
topologyKey: updateDay
whenUnsatisfiable: ScheduleAnyway
További információkért tekintse meg a felsőbb rétegbeli topológia elterjedtségére vonatkozó korlátozások flottadokumentációját.
Frissítési stratégia
A Fleet egy gördülő frissítési stratégiát használ annak szabályozására, hogy a frissítések hogyan kerülnek bevezetésre több fürthelyre.
Az alábbi példa bemutatja, hogyan konfigurálhat egy gördülő frissítési stratégiát az alapértelmezett beállítások használatával:
apiVersion: placement.kubernetes-fleet.io/v1beta1
kind: ClusterResourcePlacement
metadata:
name: crp
spec:
resourceSelectors:
- ...
policy:
...
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 25%
maxSurge: 25%
unavailablePeriodSeconds: 60
Az ütemező egymás után frissíti az egyes fürtöket, és legalább unavailablePeriodSeconds
a fürtök között várakozik. A bevezetési állapot sikeresnek minősül, ha az összes erőforrás megfelelően lett alkalmazva a fürtre. A bevezetési állapot ellenőrzése nem kaszkádolt a gyermekerőforrásokra, például nem ellenőrzi, hogy az üzembe helyezés által létrehozott podok készen állnak-e.
További információkért tekintse meg a Fleet bevezetési stratégiájának dokumentációját.
Elhelyezés állapota
A Flottaütemező frissíti az objektumra ClusterResourcePlacement
vonatkozó elhelyezési döntések részleteit és állapotát. Ezeket az információkat a kubectl describe crp <name>
parancs használatával tekintheti meg. A kimenet a következő információkat tartalmazza:
- Az elhelyezésre jelenleg érvényes feltételek, amelyek magukban foglalják, hogy az elhelyezés sikeresen befejeződött-e.
- Az egyes tagfürtök elhelyezési állapotszakasza, amely az adott fürtre történő üzembe helyezés állapotát mutatja.
Az alábbi példa azt ClusterResourcePlacement
mutatja be, hogy a névtér és a test
test-1
ConfigMap két tagfürtre lett üzembe helyezve a használatával PickN
. Az elhelyezés sikeresen befejeződött, és az erőforrásokat a fürtökbe és aks-member-2
a aks-member-1
fürtökbe helyezték.
Name: crp-1
Namespace:
Labels: <none>
Annotations: <none>
API Version: placement.kubernetes-fleet.io/v1beta1
Kind: ClusterResourcePlacement
Metadata:
...
Spec:
Policy:
Number Of Clusters: 2
Placement Type: PickN
Resource Selectors:
Group:
Kind: Namespace
Name: test
Version: v1
Revision History Limit: 10
Status:
Conditions:
Last Transition Time: 2023-11-10T08:14:52Z
Message: found all the clusters needed as specified by the scheduling policy
Observed Generation: 5
Reason: SchedulingPolicyFulfilled
Status: True
Type: ClusterResourcePlacementScheduled
Last Transition Time: 2023-11-10T08:23:43Z
Message: All 2 cluster(s) are synchronized to the latest resources on the hub cluster
Observed Generation: 5
Reason: SynchronizeSucceeded
Status: True
Type: ClusterResourcePlacementSynchronized
Last Transition Time: 2023-11-10T08:23:43Z
Message: Successfully applied resources to 2 member clusters
Observed Generation: 5
Reason: ApplySucceeded
Status: True
Type: ClusterResourcePlacementApplied
Placement Statuses:
Cluster Name: aks-member-1
Conditions:
Last Transition Time: 2023-11-10T08:14:52Z
Message: Successfully scheduled resources for placement in aks-member-1 (affinity score: 0, topology spread score: 0): picked by scheduling policy
Observed Generation: 5
Reason: ScheduleSucceeded
Status: True
Type: ResourceScheduled
Last Transition Time: 2023-11-10T08:23:43Z
Message: Successfully Synchronized work(s) for placement
Observed Generation: 5
Reason: WorkSynchronizeSucceeded
Status: True
Type: WorkSynchronized
Last Transition Time: 2023-11-10T08:23:43Z
Message: Successfully applied resources
Observed Generation: 5
Reason: ApplySucceeded
Status: True
Type: ResourceApplied
Cluster Name: aks-member-2
Conditions:
Last Transition Time: 2023-11-10T08:14:52Z
Message: Successfully scheduled resources for placement in aks-member-2 (affinity score: 0, topology spread score: 0): picked by scheduling policy
Observed Generation: 5
Reason: ScheduleSucceeded
Status: True
Type: ResourceScheduled
Last Transition Time: 2023-11-10T08:23:43Z
Message: Successfully Synchronized work(s) for placement
Observed Generation: 5
Reason: WorkSynchronizeSucceeded
Status: True
Type: WorkSynchronized
Last Transition Time: 2023-11-10T08:23:43Z
Message: Successfully applied resources
Observed Generation: 5
Reason: ApplySucceeded
Status: True
Type: ResourceApplied
Selected Resources:
Kind: Namespace
Name: test
Version: v1
Kind: ConfigMap
Name: test-1
Namespace: test
Version: v1
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal PlacementScheduleSuccess 12m (x5 over 3d22h) cluster-resource-placement-controller Successfully scheduled the placement
Normal PlacementSyncSuccess 3m28s (x7 over 3d22h) cluster-resource-placement-controller Successfully synchronized the placement
Normal PlacementRolloutCompleted 3m28s (x7 over 3d22h) cluster-resource-placement-controller Resources have been applied to the selected clusters
Elhelyezési változások
A Flottaütemező rangsorolja a meglévő számítási feladatok elhelyezésének stabilitását. Ez a rangsor korlátozhatja a számítási feladatok eltávolítását és újraütemezését okozó módosítások számát. A következő forgatókönyvek okozhatnak elhelyezési módosításokat:
- Az objektum elhelyezési szabályzatának módosítása kiválthatja a
ClusterResourcePlacement
számítási feladatok eltávolítását és átütemezését.- A vertikális felskálázási műveletek (más módosítások nélkül)
numberOfClusters
csak új fürtökre helyezik a számítási feladatokat, és nem érintik a meglévő elhelyezéseket.
- A vertikális felskálázási műveletek (más módosítások nélkül)
- Fürtmódosítások, beleértve a következőket:
- Ha egy új fürt jogosulttá válik, elhelyezést válthat ki, ha megfelel az elhelyezési szabályzatnak, például egy szabályzatnak
PickAll
. - Az elhelyezéssel rendelkező fürtök eltávolítják a flottából az összes érintett számítási feladatot a többi elhelyezés befolyásolása nélkül.
- Ha egy új fürt jogosulttá válik, elhelyezést válthat ki, ha megfelel az elhelyezési szabályzatnak, például egy szabályzatnak
Az erőforrás-módosítások (az erőforrások frissítése vagy az ResourceSelector
objektum frissítése) fokozatosan jelennek meg a ClusterResourcePlacement
meglévő elhelyezésekben, de nem váltják ki a számítási feladat átütemezését.
Toleranciák
ClusterResourcePlacement
az objektumok támogatják az objektumra vonatkozó tűrések specifikációját ClusterResourcePlacement
. Minden tolerációs objektum a következő mezőkből áll:
key
: A tolerancia kulcsa.value
: A tolerancia értéke.effect
: A tolerancia hatása, példáulNoSchedule
.operator
: A tűrés operátora, példáulExists
vagyEqual
.
Minden tolerancia egy vagy több specifikus fertőzés tolerálására szolgál a ClusterResourcePlacement
. Miután az egyiken MemberCluster
minden fertőzést eltűrtek, az ütemező ezután propagálja az erőforrásokat a fürtre. A létrehozásuk után nem frissítheti és nem távolíthatja el a toleranciákat egy ClusterResourcePlacement
objektumból.
További információkért tekintse meg az upstream Fleet dokumentációját.
A Fleet erőforrásfürt Kubernetes API-jának elérése
Ha olyan Azure Kubernetes Fleet Manager-erőforrást hozott létre, amely engedélyezve van a központi fürttel, központilag szabályozhatja az olyan forgatókönyveket, mint a Kubernetes objektumpropagálás. A Fleet-erőforrásfürt Kubernetes API-jának eléréséhez kövesse a Fleet-erőforrásfürt Kubernetes API-jának elérése az Azure Kubernetes Fleet Managerrel című témakörben leírt lépéseket.
Következő lépések
Kubernetes-erőforrás-propagálás beállítása központi fürtről tagfürtökre.
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: