Använda ResourcePlacement för att distribuera namnområdesomfångsbegränsade resurser (förhandsversion)

Den här artikeln beskriver API:et ResourcePlacement , som möjliggör detaljerad kontroll över kubernetes-resurser med namnområdesomfång i medlemskluster med Azure Kubernetes Fleet Manager.

Viktigt!

Förhandsversionsfunktionerna i Azure Kubernetes Fleet Manager är tillgängliga via självbetjäning och opt-in. Förhandsversioner tillhandahålls "i befintligt skick" och "i mån av tillgång," och de är undantagna från servicenivåavtal och begränsad garanti. Förhandsversioner av Azure Kubernetes Fleet Manager omfattas delvis av kundsupport på bästa sätt. Därför är dessa funktioner inte avsedda för produktionsanvändning.

Översikt

ResourcePlacement är ett API inom ett namnområde som möjliggör dynamisk urval och spridning av resurser över flera kluster inom namnområden. Den ger detaljerad kontroll över hur specifika resurser i ett namnområde distribueras mellan medlemskluster i en flotta.

Viktigt!

ResourcePlacement använder API-versionen placement.kubernetes-fleet.io/v1beta1 och är för närvarande i förhandsversion. Vissa funktioner som visas i den här artikeln, till exempel selectionScope i ClusterResourcePlacement, är också en del av v1beta1-API:et och är inte tillgängliga i v1-API:et.

Viktiga egenskaper:

  • Namnområdesomfång: Både objektet ResourcePlacement och de resurser som det hanterar finns inom samma namnområde.
  • Selektiv: Kan rikta specifika resurser efter typ, namn eller etiketter i stället för hela namnområden.
  • Deklarativ: Använder samma placeringsmönster som ClusterResourcePlacement för konsekvent beteende.

A ResourcePlacement består av tre kärnkomponenter:

  • Resursväljare: Definiera vilka namnområdesomfångsresurser som ska inkluderas.
  • Placeringsprincip: Fastställa målkluster med hjälp av PickAll, PickFixedeller PickN strategier.
  • Distributionsstrategi: Styr hur ändringar sprids över valda kluster.

När du ska använda ResourcePlacement

ResourcePlacement är perfekt för scenarier som kräver detaljerad kontroll över namnområdesomfångsresurser:

  • Selektiv resursdistribution: Distribuera specifika ConfigMaps, hemligheter eller tjänster utan att påverka hela namnområdet.
  • Miljöer med flera klientorganisationer: Tillåt att olika team hanterar sina resurser oberoende av varandra i delade namnområden.
  • Konfigurationshantering: Distribuera miljöspecifika konfigurationer i olika klustermiljöer.
  • Efterlevnad och styrning: Tillämpa olika principer på olika resurstyper inom samma namnområde.
  • Progressiva distributioner: Distribuera resursuppdateringar på ett säkert sätt mellan kluster med strategier för noll stilleståndstid.

I miljöer med flera kluster består arbetsbelastningar ofta av både klusteromfattande och namnområdesomfångsbegränsade resurser som måste distribueras över olika kluster. Även om ClusterResourcePlacement (CRP) hanterar resurser med klusteromfattning effektivt, hela namnområden och deras innehåll, finns det scenarier där du behöver mer detaljerad kontroll över namnområdesomfångsresurser inom befintliga namnområden.

ResourcePlacement (RP) utformades för att åtgärda denna lucka genom att tillhandahålla följande:

  • Resurshantering med namnområdesomfång: Rikta in sig på specifika resurser i ett namnområde utan att påverka hela namnområdet.
  • Driftflexitet: Gör det möjligt för team att hantera olika resurser inom samma namnområde oberoende av varandra.
  • Kompletterande funktioner: Arbeta tillsammans med CRP för att tillhandahålla en komplett resurshanteringslösning för flera kluster.

Anmärkning

ResourcePlacement kan användas tillsammans med ClusterResourcePlacement i namnområdesläge. Du kan till exempel använda CRP för att distribuera namnområdet, samtidigt som du använder RP för detaljerad hantering av specifika resurser som miljöspecifika ConfigMaps eller hemligheter inom det namnområdet.

Användningsmönster för verkliga namnområden

Crp förutsätter att namnområden representerar programgränser, men verkliga användningsmönster är ofta mer komplexa. Organisationer använder ofta namnområden som gruppgränser snarare än programgränser, vilket leder till flera utmaningar som ResourcePlacement direkt åtgärdar:

Namnområden för flera program: I många organisationer innehåller ett enda namnområde flera oberoende program som ägs av samma team. Dessa program kan ha:

  • Olika livscykelkrav (ett program kan behöva frekventa uppdateringar medan ett annat förblir stabilt).
  • Olika klusterplaceringsbehov (utveckling jämfört med produktionsprogram).
  • Oberoende skalning och resurskrav.
  • Separata efterlevnads- eller styrningskrav.

Beslut om individuell schemaläggning: Många arbetsbelastningar, särskilt AI/ML-jobb, kräver individuella schemaläggningsbeslut:

  • AI-jobb: Maskininlärningsarbetsbelastningar består ofta av kortvariga, resursintensiva jobb som måste schemaläggas baserat på klusterresurstillgänglighet, GPU-tillgänglighet eller datalokalitet.
  • Batcharbetsbelastningar: Olika batchjobb inom samma namnområde kan rikta in sig på olika klustertyper baserat på beräkningskrav.

Fullständig kontroll över programteamet: ResourcePlacement Ger programteam direkt kontroll över sin resursplacering utan att behöva vidta åtgärder för plattformsteamet:

  • Självbetjäningsåtgärder: Teams kan hantera sina egna strategier för resursdistribution.
  • Oberoende distributionscykler: Olika program inom ett namnområde kan ha oberoende distributionsscheman.
  • Granulära åsidosättningsmöjligheter: Team kan skräddarsy resurskonfigurationer per kluster utan att påverka andra applikationer i namnrymden.

Den här detaljerade metoden säkerställer att den kan anpassas till olika organisationsstrukturer och arbetsbelastningsmönster samtidigt som ResourcePlacement enkelheten och kraften i fleet-schemaläggningsramverket bibehålls.

Viktiga skillnader mellan ResourcePlacement och ClusterResourcePlacement

I följande tabell visas de viktigaste skillnaderna mellan ResourcePlacement och ClusterResourcePlacement:

Aspekt ResourcePlacement (RP) ClusterResourcePlacement (CRP)
Scope Endast resurser med namnområdesscope Klusteromfångsresurser (särskilt namnområden och deras innehåll)
Resource API-objekt som är namnområdesspecifikt API-objekt med klusteromfattning
Markeringsgräns Begränsat till resurser inom samma namnområde som RP Kan välja valfri klusteromfattningsresurs
Vanliga användningsfall AI/ML-jobb, enskilda arbetsbelastningar, specifika ConfigMaps/Hemligheter som behöver oberoende placeringsbeslut Programpaket, hela namnområden, klusteromfattande principer
Teamägarskap Kan hanteras av namnområdesägare/utvecklare Hanteras vanligtvis av plattformsoperatorer

Både ResourcePlacement och ClusterResourcePlacement delar samma kärnfunktioner för alla andra aspekter som inte visas i tabellen med skillnader.

Arbeta med ClusterResourcePlacement

ResourcePlacement är utformad för att fungera i samordning med ClusterResourcePlacement (CRP) för att tillhandahålla en komplett resurshanteringslösning för flera kluster. Att förstå den här relationen är avgörande för effektiv hantering av flottan.

Krav för namnområde

Viktigt!

ResourcePlacement kan bara placera namnområdesomfångsresurser till kluster som redan har målnamnområdet. Vi rekommenderar att du använder ClusterResourcePlacement för namnområdesetablering.

Typiskt arbetsflöde:

  1. Plattformsadministratör: Används ClusterResourcePlacement för att distribuera namnområden i hela flottan.
  2. Programteam: Använd ResourcePlacement för att hantera specifika resurser inom de etablerade namnrymderna.

Följande exempel visar hur du samordnar CRP och RP:

Anmärkning

I följande exempel används API-versionen placement.kubernetes-fleet.io/v1beta1 . Fältet selectionScope: NamespaceOnly är en förhandsgranskningsfunktion som är tillgänglig i v1beta1 och är inte tillgänglig i v1-API:et.

Plattformsadministratör: Skapa först namnområdet med hjälp av ClusterResourcePlacement:

apiVersion: placement.kubernetes-fleet.io/v1beta1
kind: ClusterResourcePlacement
metadata:
  name: app-namespace-crp
spec:
  resourceSelectors:
    - group: ""
      kind: Namespace
      name: my-app
      version: v1
      selectionScope: NamespaceOnly # only namespace itself is placed, no resources within the namespace
  policy:
    placementType: PickAll # If placement type is not PickAll, the application teams needs to know what are the clusters they can place their applications.

Programteam: Hantera sedan specifika resurser i namnområdet med hjälp av ResourcePlacement:

apiVersion: placement.kubernetes-fleet.io/v1beta1
kind: ResourcePlacement
metadata:
  name: app-configs-rp
  namespace: my-app
spec:
  resourceSelectors:
    - group: ""
      kind: ConfigMap
      version: v1
      labelSelector:
        matchLabels:
          app: my-application
  policy:
    placementType: PickFixed
    clusterNames:
    - cluster1
    - cluster2

Metodtips

När du använder ResourcePlacement med ClusterResourcePlacementföljer du dessa metodtips:

  • Upprätta namnområden först: Kontrollera alltid att namnrymder distribueras via CRP innan du skapar ResourcePlacement objekt.
  • Övervaka beroenden: Använd fleetövervakning för att säkerställa att CRP:er på namnområdesnivå är felfria innan du distribuerar beroende RP:er.
  • Koordinatprinciper: Justera CRP- och RP-placeringsprinciper för att undvika konflikter (till exempel om CRP placerar namnrymd på kluster A, B, C, RP kan rikta sig mot alla delmängder av dessa kluster).
  • Gruppgränser: Använd CRP för plattformshanterade resurser (namnområden, RBAC) och RP för programhanterade resurser (appkonfigurationer, hemligheter).

Den här samordnade metoden säkerställer att ger den flexibilitet som ResourcePlacement teamen behöver samtidigt som den grundläggande infrastrukturen som hanteras av plattformsoperatörer upprätthålls.

Resursval, placering och distribution

ResourcePlacement använder samma placeringsmönster som ClusterResourcePlacement:

  • Placeringstyper: PickAll, PickFixedoch PickN strategier fungerar identiskt för båda API:erna.
  • Distributionsstrategi: Kontrollera hur uppdateringar sprids mellan kluster med samma mekanismer för löpande uppdatering.
  • Status och observerbarhet: Övervaka distributionsförloppet med hjälp av kubectl describe resourceplacement <name> -n <namespace>.
  • Avancerade funktioner: Använd toleranser, resurs åsidosättningar, begränsningar för topologispridning och tillhörighetsregler.

Den viktigaste skillnaden är omfånget för resursval . Medan ClusterResourcePlacement vanligtvis väljer hela namnområden och deras innehåll, ger ResourcePlacement detaljerad kontroll över enskilda resurser som omfattas av namnområden.

Fullständig information om dessa funktioner finns i dokumentationen om ClusterResourcePlacement.

Nästa steg