Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
V tomto článku se dozvíte, jak efektivně seskupit uzly, abyste zlepšili jejich využití pro clustery Azure Kubernetes Service (AKS) pomocí integrovaného plánovacího plug-inu NodeResourcesFit. Výchozí plánovač AKS funguje v NodeResourcesFit:LeastAllocated režimu, který upřednostňuje uzly s nižším využitím při plánování podů. Konfigurovatelné profily plánovače v AKS umožňují změnit toto výchozí chování a vyladit konfiguraci tak, aby upřednostnil uzly s vyšším využitím. Tato dokumentace se zabývá třemi různými vlastními profily plánovače a zároveň zvýrazňuje doporučení osvědčených postupů ke zlepšení využití a snížení počtu aktivních míst uzlu.
Ukládání uzlů do kapacitních skupin je plánovací strategie, která maximalizuje využití prostředků zvýšením hustoty podů na uzlech spíše než rozprostřením podů po fondu uzlů nebo než předčasným automatickým škálováním uzlů. Balení do bloků pomáhá minimalizovat plýtvání zdroji a může snížit provozní náklady spojené s údržbou nevyužívaných nebo nedostatečně využitých uzlů. Zlepšení využití uzlů je důležité, protože data ukazují, že CPU a paměť jsou často nadhodnoceně požadovány. S rostoucím růstem přechodu na GPU se navíc z důvodu relativního nedostatku a nákladů stává stejně důležité efektivní využití akcelerátorů.
Omezení
- AKS v současné době neřídí nasazení plánovačů třetích stran ani plánovacích pluginů mimo hlavní repozitář.
- AKS nepodporuje vestavěné plug-iny pro plánování, které cílí na
aks-systemplánovač. Toto omezení je zavedené, aby se zabránilo neočekávaným změnám doplňků AKS povolených ve vašem clusteru. Kromě toho nelze definovatprofilepojmenovanýaks-system.
Předpoklady
- Verze
2.76.0Azure CLI nebo novější. Spusťteaz --versionpro zjištění verze a spusťteaz upgradepro aktualizaci verze. Pokud potřebujete instalovat nebo upgradovat, podívejte se na Install Azure CLI. - Verze Kubernetes
1.33nebo novější, spuštěná v clusteru AKS. - Verze rozšíření
aks-previewAzure CLI18.0.0b27nebo novější. -
UserDefinedSchedulerConfigurationPreviewZaregistrujte příznak funkce ve vašem předplatném pro Azure.
Povolení konfigurace profilu plánovače v clusteru AKS
Konfiguraci profilu plánu můžete povolit v novém nebo existujícím clusteru AKS.
Vytvořte cluster AKS s povolenou konfigurací profilu plánovače
az aks createpomocí příkazu s příznakem--enable-upstream-kubescheduler-user-configuration.# Set environment variables export RESOURCE_GROUP=<resource-group-name> export CLUSTER_NAME=<aks-cluster-name> # Create an AKS cluster with schedule profile configuration enabled az aks create \ --resource-group $RESOURCE_GROUP \ --name $CLUSTER_NAME \ --enable-upstream-kubescheduler-user-configuration \ --generate-ssh-keysPo dokončení procesu vytváření se pomocí příkazu připojte ke clusteru
az aks get-credentials.az aks get-credentials --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME
Ověření instalace kontroleru plánovače
Po povolení funkce ve vašem clusteru AKS ověřte, že definice vlastního prostředku (CRD) ovladače plánování byla úspěšně nainstalována pomocí příkazu
kubectl get.kubectl get crd schedulerconfigurations.aks.azure.comPoznámka:
Tento příkaz nebude úspěšný, pokud nebyla funkce v předchozí části úspěšně povolená.
Konfigurace bin-packingu uzlů pomocí pluginu RequestedtoCapacity
Ze tří profilů RequestedToCapacityRatio poskytuje nejpodrobnější uživatelský ovládací prvek pro mapování uzlů na explicitní využití. Tento plánovací profil byl například nakonfigurován tak, aby upřednostňoval uzly v pásmu využití 50–85 %, vyhnul se prázdným uzlům a výrazně snižoval prioritu téměř plně využitých uzlů při 90 % využití nebo více, čímž ponechává určitou rezervu. Vzhledem k této úrovni podrobností je RequestedtoCapacity doporučenou strategií bodování pro optimalizaci rozdělení uzlů v AKS v produkčních clusterech.
Díky této konfiguraci je využití procesoru dominantním faktorem při výběru uzlu, balení uzlů a zároveň se vyhnete nadměrné sytosti aplikací náročných na procesor. Nakonec musíte zakázat plugin PodTopologySpread, protože může přepsat vážené skóre z NodeResourcesFit, pokud je ve výchozím nastavení povolen.
-
NodeResourcesFiturčuje, jak plánovač vyhodnotí, jestli má uzel dostatek prostředků ke spuštění podu. -
scoringStrategy: RequestedToCapacityRatioboduje uzly na základě poměru požadovaných prostředků k celkové kapacitě uzlu po hypotetickém umístění podu. -
Resourcesurčuje, žeCPUaMemoryjsou primárními prostředky, které se považují za bodování. S hmotností8jsou uzly s využitím procesoru skórovány 8x vyšší než paměť během plánování podu. Tím se zvyšuje pravděpodobnost výběru uzlů s vysokým využitím. -
shape:mapuje využití uzlů na skóre plánovače. Každý bod představuje procento využití a odpovídající skóre s lineárním skóre mezi body.
apiVersion: aks.azure.com/v1alpha1
kind: SchedulerConfiguration
metadata:
name: upstream
spec:
rawConfig: |
apiVersion: kubescheduler.config.k8s.io/v1
kind: KubeSchedulerConfiguration
profiles:
- schedulerName: cpu-binpack-scheduler-RtC
plugins:
multiPoint:
enabled:
- name: NodeResourcesFit
disabled:
- name: PodTopologySpread
pluginConfig:
- name: NodeResourcesFit
args:
apiVersion: kubescheduler.config.k8s.io/v1
kind: NodeResourcesFitArgs
scoringStrategy:
type: RequestedToCapacityRatio
resources:
- name: cpu
weight: 8
- name: memory
weight: 1
requestedToCapacityRatio:
shape:
- utilization: 0
score: 0
- utilization: 30
score: 9
- utilization: 50
score: 10
- utilization: 85
score: 10
- utilization: 90
score: 5
- utilization: 100
score: 0
Konfigurace balení přihrádek uzlu pomocí modulu plug-in MostAllocated
Konfigurace plánovače s MostAllocated výhradně upřednostňuje uzly na základě využití prostředků. Čím vyšší je využití prostředků, tím vyšší je skóre uzlu, vyhnout se nepoužívaným uzlům nebo škálování, dokud nebude potřeba. Při použití v izolaci hrozí u této konfigurace přesycení uzlů nad žádoucí míru, což způsobuje omezení nebo další úzká místa.
Díky této konfiguraci je využití procesoru dominantním faktorem při výběru uzlu. Pokud chcete zajistit konzistentní chování, musíte zakázat plugin PodTopologySpread, protože může přepsat vážené skóre z NodeResourcesFit, pokud zůstane ve výchozím nastavení povolený.
-
NodeResourcesFiturčuje, jak plánovač vyhodnotí, jestli má uzel dostatek prostředků ke spuštění podu. -
scoringStrategy: MostAllocatedskóre na základě požadavků na pody.MostAllocatedříká plánovači, aby upřednostňoval uzly s vysokým využitím prostředků. Tato strategie podporuje zhuštěné umístění podů a pomáhá dosáhnout lepšího využití uzlů. -
Resourcesurčuje, žeCPUaMemoryjsou primárními prostředky, které se považují za bodování. S hmotností8jsou uzly s využitím procesoru skórovány 8x vyšší než paměť během plánování podu. Tím se zvyšuje pravděpodobnost výběru uzlů s vysokým využitím.
apiVersion: aks.azure.com/v1alpha1
kind: SchedulerConfiguration
metadata:
name: upstream
spec:
rawConfig: |
apiVersion: kubescheduler.config.k8s.io/v1
kind: KubeSchedulerConfiguration
profiles:
- schedulerName: cpu-binpack-scheduler-mA
plugins:
multiPoint:
enabled:
- name: NodeResourcesFit
disabled:
- name: PodTopologySpread
pluginConfig:
# NodeResourcesFit configuration
- name: NodeResourcesFit
args:
apiVersion: kubescheduler.config.k8s.io/v1
kind: NodeResourcesFitArgs
scoringStrategy:
type: MostAllocated
resources:
- name: cpu
weight: 8
- name: memory
weight: 1
Konfigurace přihrádky uzlů s využitím modulů plug-in MostAllocated a NodeResourcesBalancedAllocation
Tato konfigurace se snaží přidat některé mantinely do jednoduché a efektivní strategie MostAllocated vyhodnocováním uzlů na základě vyváženého využití cílových prostředků.
NodeResourcesBalancedAllocation podporuje umístění podů na uzlech s uživatelem definovaným proporcionálním využitím, což zvyšuje celkovou efektivitu a zároveň zabraňuje kritickým bodům způsobeným asymetrickým tlakem prostředků. Například uzly vázané na procesor s bohatou nevyužitou pamětí by byly hodnoceny nižší ve prospěch uzlů s lepším vyvážením využití procesoru a paměti.
-
NodeResourcesBalancedAllocationvyhodnotí uzly na základě toho, jak vyvážené je využití zdrojů napříč více zdroji. Místo maximalizace využití jednoho prostředku dává tento modul plug-in přednost uzlům, ve kterých je spotřeba prostředků úměrná. -
Resourcesurčuje, které prostředky se při vyhodnocování zůstatku považují. Při stejné váze procesoru a paměti jsou uzly hodnoceny výše, když jsou obě prostředky využívány na podobných úrovních.
apiVersion: aks.azure.com/v1alpha1
kind: SchedulerConfiguration
metadata:
name: upstream
spec:
rawConfig: |
apiVersion: kubescheduler.config.k8s.io/v1
kind: KubeSchedulerConfiguration
profiles:
- schedulerName: cpu-binpack-scheduler-mA-BalancedAllocation
plugins:
multiPoint:
enabled:
- name: NodeResourcesFit
- name: NodeResourcesBalancedAllocation
disabled:
- name: PodTopologySpread
pluginConfig:
# NodeResourcesFit configuration
- name: NodeResourcesFit
args:
apiVersion: kubescheduler.config.k8s.io/v1
kind: NodeResourcesFitArgs
scoringStrategy:
type: MostAllocated
resources:
- name: cpu
weight: 8
- name: memory
weight: 1
- name: NodeResourcesBalancedAllocation
args:
apiVersion: kubescheduler.config.k8s.io/v1
kind: NodeResourcesBalancedAllocationArgs
resources:
- name: cpu
weight: 1
- name: memory
weight: 1
Přiřazení profilu plánovače k celému clusteru AKS
Vytvořte soubor s názvem
cpu-bin-packing-scheduler.yaml, s CRD nazvanýmupstreamPomocí příkazu
kubectl applyaplikujte konfiguraci plánování manifest.kubectl apply -f cpu-bin-packing-scheduler.yamlPokud chcete tento mechanismus plánování cílit na konkrétní úlohy, aktualizujte nasazení podů následujícím
schedulerNamezpůsobem:... ... spec: schedulerName: binpacking-scheduler ... ...
Další kroky
Další informace o plánovači AKS, dalších konfiguracích a osvědčených postupech najdete v následujících zdrojích informací: