Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
Den här artikeln beskriver schemaläggningskonfiguration och avancerade schemaläggningsbegrepp för arbetsbelastningsplacering i Azure Kubernetes Service (AKS), inklusive konfigurerbara schemaläggarprofiler, schemaläggning av plugin-program och schemaläggningsbegränsningar.
Om AKS-schemaläggaren
I AKS är standardmekanismen för arbetsbelastningsplacering mellan noder i ett kluster via schemaläggaren. Standardschemaläggaren är en kontrollplanskomponent som ansvarar för att tilldela AKS-distributionspoddar till noder. När AKS-schemaläggaren väljer en nod är distributionspodden bunden till den och resten av livscykeln fortsätter.
När en podd skapas utan en angiven nod väljer schemaläggaren en optimal nod baserat på flera kriterier, inklusive (men inte begränsat till):
- Tillgängliga resurser (CPU, minne)
- Nodtillhörighet/antitillhörighet
- Pod-affinitet/anti-affinitet
- Föroreningar och toleranser
Konfigurations- och schemaläggningsstrategier för AKS-schemaläggaren
AKS-schemaläggaren levereras som standard med en uppsättning inbyggda regler som fungerar bra för arbetsbelastningar för generell användning. Avancerade användningsfall kan dock kräva anpassade schemaläggningsstrategier. Till exempel:
- Batch-jobb kanske föredrar att samverka i några få noder (för bättre prestanda) framför topologimedveten spridning (för tillförlitlighet).
- Kostnadskänsliga arbetsbelastningar kan dra nytta av binpacking av noder för att konsolidera jobb och minimera kostnader för inaktiva beräkningsnoder.
För att stödja dessa användningsfall kan du med AKS ange ett eller flera plugin-program för schemaläggning i träd via en anpassad Kubernetes-resurs (CRD) för att konfigurera schemaläggningsbeteendet för ditt AKS-kluster.
Konfigurerbara schemaläggarprofiler
En schemaläggningsprofil är en uppsättning av en eller flera inbyggda schemaläggningsplugins och konfigurationer som bestämmer hur en podd ska schemaläggas. Tidigare hanterade AKS schemaläggningskonfigurationen och var inte tillgänglig för användare. Från och med Kubernetes-versionen 1.33kan du nu konfigurera och ange en scheduler-profil (förhandsversion) för Kubernetes-schemaläggaren i klustret.
Varje scheduler-profil har följande komponenter:
- Ett unikt namn.
- En uppsättning plugin-program för schemaläggning.
- Anpassade argument för detaljerat beteende (gäller för vissa plugin-program).
Plugin-program för schemaläggning i träd som stöds
AKS stöder konfiguration av 18 in-tree Kubernetes schemaläggningsplugin-program som gör att poddar kan placeras på specifika noder, säkerställa att poddar matchas med specifika lagringsresurser, optimera för noder med containeravbildningar med mera.
I följande avsnitt går vi igenom dessa plugin-program som är grupperade i följande kategorier:
- Schemaläggningsbegränsningar och orderbaserade plugin-program
- Schemaläggningsplugin för begränsningar vid nodval
- Schemaläggning av plugin-program för resurs- och topologioptimering
Mer information om dessa plugin-program och konfigurationsalternativ finns i dokumentationen för Plugin-programmet Kubernetes Scheduling.
Schemaläggningsbegränsningar och orderbaserade plugin-program
DefaultBinder: Ansvarig för att binda podden till en nod när schemaläggaren har valt en lämplig nod. När noden har valts skapar detDefaultBinderett bindningsobjekt för att säkerställa att podden schemaläggs till den noden.DefaultPreemption: Hanterar preemption, vilket är processen för att avlägsna poddar med lägre prioritet för att göra plats för poddar med högre prioritet. Om en podd inte kan schemaläggas eftersom det inte finns tillräckligt med resurser på noden, föregriper det här plugin-programmet andra poddar för att skapa utrymme. Det här plugin-programmet kan ta emot följande argument:-
PodPriority: Definierar prioriteten för podden som schemaläggs. -
PreemptionPolicy: Policyn för hantering av podpreemption (till exempel:"PreemptLowerPriority"eller"DoNotPreempt"). -
PodPriorityClass: Prioritetsklassen som är associerad med podden. -
PodInfo: Information om poddar som är kandidater för preemption. -
Node: Information om den nod där preemption beaktas.
-
SchedulingGates: Introducerar begreppet schemaläggningsportar, vilket är villkor som måste uppfyllas innan en pod schemaläggs. Den kan till exempel framtvinga slutförandet av vissa uppgifter eller åtgärder innan schemaläggaren försöker schemalägga en podd.PrioritySort: Sorterar listan över poddar enligt prioritetsklassen. Poddar med högre prioritet schemaläggs först. Det hjälper med beslutsfattande i fall av företräde och avgör vilka poddar som ska övervägas för prioritetsschemaläggning.
Schemaläggningsplugin för begränsningar vid nodval
InterPodAffinity: Tar hänsyn till tillhörighetsregler som angetts av användaren och som påverkar schemaläggningen baserat på närheten till andra poddar. Om en podd har tillhörighetsregler försöker den schemalägga podden på samma nod eller i samma topologi som andra poddar som den har en tillhörighet till (till exempel: av prestandaskäl eller nära koppling). Det här plugin-programmet kan ta emot följande argument:-
Affinity: Definierar tvingande eller föredragna regler för närhet för podden, vilka bestämmer andra poddar som podden bör eller inte bör schemaläggas nära. -
TopologyKey: Nyckeln som representerar den feldomän som tillhörighetsregeln gäller för (till exempel för"kubernetes.io/hostname"tillhörighet på nodnivå eller"topology.kubernetes.io/zone"för zonnivå). -
Weight: Definierar hur starkt schemaläggaren bör överväga en specifik tillhörighetsregel. -
Pod: Poden håller på att schemaläggas. -
OtherPods: Lista över andra pods att överväga i förhållande till affinitetsreglerna.
-
NodeAffinity: Aktiverar schemaläggning baserat på nodetiketter. Det gör att användarna kan ange regler för vilka noder som en podd kan schemaläggas för baserat på nodens etiketter och ger detaljerad kontroll över poddplacering på noder. Det här plugin-programmet kan ta emot följande argument:-
NodeAffinity: Definierar de obligatoriska eller önskade nodtillhörighetsreglerna, till exempelrequiredDuringSchedulingIgnoredDuringExecutionellerpreferredDuringSchedulingIgnoredDuringExecution. -
NodeSelectorTerms: Definierar den uppsättning nodetiketter och värden som måste matcha. -
Pod: Poden håller på att schemaläggas. -
Node: En potentiell nod för schemaläggning. -
LabelSelector: En väljare för att välja noder baserat på etiketter.
-
NodeName: Tvingar pods att schemaläggas på en specifik nod. När du anger det exakta nodnamnet placerar schemaläggaren podden på noden om möjligt.NodePorts: Ser till att en podd med en tjänst av typenNodePortkan schemaläggas på en nod som har de portar som krävs för bindning. Den kontrollerar om noden har tillräckligt med resurser för att stödja nodportallokeringarna för tjänsten.NodeUnschedulable: Ser till att poddar inte schemaläggs på noder som markerats som oplanerade. Om en nod är fördärvad mednode.kubernetes.io/unschedulableplacerar schemaläggaren inga nya poddar på noden.TaintToleration: Kontrollerar om en pod har de toleranser som krävs för att schemaläggas på en nod som har taints. Taints på noder förhindrar att poddar schemaläggs om inte podden har en matchande tolerans.NodeVolumeLimits: Kontrollerar om en nod har överskridit sin volymgräns. Varje nod har ett maximalt antal volymer som den kan ansluta, och det här plugin-programmet säkerställer att podden inte är schemalagd på en nod som redan har nått den gränsen som stöds.VolumeBinding: Säkerställer att beständiga volymer (PV:er) är korrekt bundna till poddar. Den kontrollerar om volymen som en podd kräver kan bindas till en nod och ser till att volymen är tillgänglig på den valda noden. Det här plugin-programmet kan ta emot följande argument:-
VolumeClaims: Bestående volymanspråk (PVCs) som görs av podden som schemaläggs. -
Node: Den kandidatnod som övervägs för schemaläggning. -
VolumeAvailable: Kontrollerar om den beständiga volymen är tillgänglig på noden eller inom lämplig zon. -
Pod: Podden som begär volymbindning. -
StorageClass: Lagringsklassen som är associerad med den beständiga volymen. -
VolumeBindingMode: Definierar om volymbindningsläget ärImmediateellerWaitForFirstConsumer(för fördröjd bindning tills en podd har schemalagts).
-
VolumeRestrictions: Säkerställer att volymbegränsningar (till exempel begränsningar för antalet volymer som en nod kan ha kopplat) respekteras när du schemalägger en podd. Det förhindrar schemaläggning av en pod på en nod där volymbegränsningarna skulle överträdas.VolumeZone: Säkerställer att volymer schemaläggs i samma tillgänglighetszon som podden. Om en podd till exempel begär en volym som måste finnas i en specifik zon ser plugin-programmet till att både podden och volymen finns i samma zon.
Schemaläggning av plugins för resurs- och topologioptimering
NodeResourcesBalancedAllocation: Syftar till att balansera resursallokeringen på noder. När du schemalägger en podd tar den hänsyn till hur resurser som CPU och minne allokeras mellan noder för att undvika överbelastning eller underutnyttjande av resurser. Det här plugin-programmet kan ta emot följande argument:-
ResourceRequests: Resursbegäranden (CPU, minne osv.) för podden som schemaläggs. -
Node: En kandidatnod för schemaläggning. -
NodeResources: Nodens tillgängliga resurser (CPU, minne osv.). -
ClusterResourceUsage: Klusteromfattande resursanvändningsmått som hjälper dig att bestämma den bästa noden för att balansera resurser.
-
NodeResourcesFit: Kontrollerar om en nod har tillräckligt med tillgängliga resurser (CPU, minne osv.) för att köra podden. Det säkerställer att en pod endast schemaläggs på en nod som har tillräckligt med tillgängliga resurser. Det här plugin-programmet kan ta emot följande argument:-
ResourceRequests: Resursbegäranden för podden. -
Node: Den kandidatnod som övervägs för schemaläggning. -
NodeCapacity: Den tillgängliga kapaciteten för resurser på noden. -
Pod: Podden som schemaläggs, med sina resursbegäranden.
-
ImageLocality: Hjälper schemaläggaren att avgöra om en podd ska schemaläggas på en nod baserat på om en nödvändig containerbild finns. Den försöker schemalägga poddar på noder där den nödvändiga avbildningen redan finns, vilket minskar den tid som krävs för att hämta avbildningen.PodTopologySpread: Säkerställer att poddar sprids jämnt över topologin (t.ex. zoner eller regioner) för att uppnå hög tillgänglighet och feltolerans. Försöker undvika att placera flera repliker av en podd i samma felzon. Det här plugin-programmet kan ta emot följande argument:-
TopologySpreadConstraints: Definierar begränsningarna för hur poddar ska spridas över feldomäner, inklusive nyckeln (till exempel :topology.kubernetes.io/zone) och antalet poddar som ska placeras i varje domän. -
Pod: Poden håller på att schemaläggas. -
FailureDomain: Feldomännyckeln (till exempel: zon eller region). -
PodAffinity: Information om poddtillhörighet, vilket också kan påverka hur poddarna distribueras. -
Node: Potentiella noder för placering. -
PodSpreadScore: Används för att avgöra hur mycket "spridning" podden ska ha över domäner (högre poäng indikerar bättre spridning).
-
Nästa steg
Konfigurera och distribuera en scheduler-profil (förhandsversion) i ditt AKS-kluster.