A PowerShell használata az Azure Arc által engedélyezett AKS-beli fürt automatikus méretezéséhez
A következőkre vonatkozik: AKS az Azure Local 22H2-n, AKS Windows Serveren
A PowerShell használatával engedélyezheti az automatikus skálázást, és kezelheti a csomópontkészletek automatikus méretezését a célfürtökben az Arc által engedélyezett AKS-ben. A PowerShell használatával is konfigurálhatja és kezelheti a fürt automatikus skálázását.
Új AksHciAutoScalerConfig objektum létrehozása
Ha új AksHciAutoScalerConfig objektumot szeretne létrehozni a New-AksHciCluster
Set-AksHciCluster
parancsba való továbbításhoz, használja a következő parancsot:
New-AksHciAutoScalerProfile -Name asp1 -AutoScalerProfileConfig @{ "min-node-count"=2; "max-node-count"=7; 'scale-down-unneeded-time'='1m'}
A fürt létrehozásakor megadhatja az automatikus méretezésirconfig objektumot. Az objektum tartalmazza az automatikus skálázás paramétereit. A paraméterekkel kapcsolatos információkért tekintse meg az automatikus skálázási profilok használatát ismertető témakört.
Meglévő AksHciAutoScalerConfig-profilobjektum módosítása
Egy meglévő AksHciAutoScalerConfig-profilobjektum frissítésekor az objektumot használó fürtök az új paraméterek használatára frissülnek:
Set-AksHciAutoScalerProfile -name myProfile -autoScalerProfileConfig @{ "max-node-count"=5; "min-node-count"=2 }
Frissítheti az automatikus skálázási konfigurációs objektumot, amely tartalmazza az automatikus skálázás paramétereit. A paraméterekkel kapcsolatos információkért tekintse meg az automatikus skálázási profilok használatát ismertető témakört.
Új fürtök automatikus skálázásának engedélyezése
Ha automatikusan engedélyezni szeretné az automatikus skálázást az összes újonnan létrehozott csomópontkészleten, használja a következő paramétereket a New-AksHciCluster
paranccsal:
New-AksHciCluster -name mycluster -enableAutoScaler -autoScalerProfileName myAutoScalerProfile
Automatikus skálázás engedélyezése meglévő fürtön
Ha egy meglévő fürt minden újonnan létrehozott csomópontkészletén automatikusan engedélyezni szeretné az automatikus skálázást, használja a enableAutoScaler
paramétert a Set-AksHciCluster
következő paranccsal:
Set-AksHciCluster -Name <string> [-enableAutoScaler <boolean>] [-autoScalerProfileName <String>]
Automatikus skálázás engedélyezése meglévő csomópontkészleten
Ha engedélyezni szeretné az automatikus skálázást egy meglévő csomópontkészleten, használja a autoScaler
paramétert a Set-AksHciNodePool
következő paranccsal:
Set-AksHciNodePool -clusterName <Your-Cluster-Name> -name <Your-NodePool-Name> -autoScaler $true
Automatikus méretezés letiltása
Ha le szeretné tiltani az automatikus skálázást egy meglévő fürt összes meglévő és újonnan létrehozott csomópontkészletén, állítsa enableAutoScaler
hamis értékre a Set-AksHciCluster
következő paranccsal:
Set-AksHciCluster -Name <string> -enableAutoScaler $false
A vízszintes automatikus skálázás hatékony használata
Most, hogy a fürt és a csomópontkészlet automatikus skálázásra van konfigurálva, konfigurálhat egy számítási feladatot úgy is, hogy a horizontális automatikus méretezési képességeket is kihasználja.
A számítási feladatok méretezéséhez két módszer érhető el:
- Kubernetes Horizontal Pod Autoscaler: A terhelési jellemzők alapján a Vízszintes pod automatikus skálázási (más néven horizontális automatikus skálázó) skálázza az alkalmazástelepítés podjait a Kubernetes-fürt elérhető csomópontjaira. Ha nincs több ütemezhető csomópont, a vízszintes automatikus skálázó létrehoz egy új csomópontot, amelyre ütemezni szeretné a podokat. Ha az alkalmazás terhelése csökken, a csomópontok újra skálázódnak.
- Kubernetes-csomópontok affinitási szabályai: A Kubernetes-üzemelő példányok affinitási szabályai meg tudják adni, hogy egy podkészlet nem skálázható ugyanazon a csomóponton, és a számítási feladat skálázásához másik csomópontra van szükség. A horizontális automatikus skálázó a terhelési jellemzőkkel vagy az alkalmazáspéldányok cél podjainak számával kombinálva új csomópontokat hoz létre a csomópontkészletben a kérések kielégítése érdekében. Ha az alkalmazásigény csökken, a horizontális automatikus skálázás ismét leskálázza a csomópontkészletet.
Ez a szakasz néhány példát tartalmaz.
A podok automatikus horizontális felskálázási eszköze
Előfeltételek:
- Az Arc által engedélyezett AKS telepítve van.
- A célfürt telepítve van, és csatlakozik az Azure-hoz.
- Egy Linux-csomópontkészlet van üzembe helyezve, legalább egy aktív Linux-feldolgozó csomóponttal.
- A horizontális csomópontok automatikus skálázása engedélyezve van a célfürtön és a Linux-csomópontkészleten a korábban leírtaknak megfelelően.
A Kubernetes Vízszintes pod automatikus skálázási útmutatójának példáját használva bemutatjuk, hogyan működik a vízszintes pod automatikus skálázása.
Ahhoz, hogy a vízszintes podok automatikus skálázása működjön, telepítenie kell a Metrikák kiszolgáló összetevőt a célfürtben.
A metrikák kiszolgálójának egy úgynevezett mycluster
célfürtre való üzembe helyezéséhez futtassa a következő parancsokat:
Get-AksHciCredential -name mycluster
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
A Kubernetes Metrics Server üzembe helyezése után üzembe helyezhet egy alkalmazást a csomópontkészletben, amelyet skálázhat. Ehhez a példához a Kubernetes közösségi webhelyén található tesztalkalmazást használjuk:
kubectl apply -f https://k8s.io/examples/application/php-apache.yaml
deployment.apps/php-apache created
service/php-apache created
Ez a parancs létrehoz egy Apache webkiszolgáló-alapú PHP-alkalmazás üzembe helyezését, amely egy "OK" üzenetet ad vissza egy hívó ügyfélnek.
Ezután konfigurálja a vízszintes pod automatikus méretezését úgy, hogy ütemezzen egy új podot, amikor az aktuális pod processzorhasználata eléri az 50 százalékot, és skálázható 1-50 pod között:
kubectl autoscale deployment php-apache --cpu-percent=50 --min=1 --max=10
horizontalpodautoscaler.autoscaling/php-apache autoscaled
Az újonnan létrehozott vízszintes pod automatikus skálázási funkciójának aktuális állapotát az alábbi parancs futtatásával ellenőrizheti:
kubectl get hpa
NAME REFERENCE TARGET MINPODS MAXPODS REPLICAS AGE
php-apache Deployment/php-apache/scale 0% / 50% 1 10 1 18s
Végül növelje a webkiszolgáló terhelését a vertikális felskálázás megtekintéséhez. Nyisson meg egy új PowerShell-ablakot, és futtassa a következő parancsot:
kubectl run -i --tty load-generator --rm --image=busybox:1.28 --restart=Never -- /bin/sh -c "while sleep 0.01; do wget -q -O- http://php-apache; done"
Ha visszatér az előző PowerShell-ablakhoz, és a következő parancsot futtatja, rövid időn belül látnia kell a podok számának változását:
kubectl get hpa php-apache --watch
NAME REFERENCE TARGET MINPODS MAXPODS REPLICAS AGE
php-apache Deployment/php-apache/scale 305% / 50% 1 10 1 3m
Ebben a példában a podok száma 1-ről 7-re változik, ahogy az itt látható:
NAME REFERENCE TARGET MINPODS MAXPODS REPLICAS AGE
php-apache Deployment/php-apache/scale 305% / 50% 1 10 7 3m
Ha ez nem elég a csomópont automatikus skálázásának aktiválásához, mert az összes pod elfér egy csomóponton, nyisson meg több PowerShell-ablakot, és futtasson több terhelésgenerátor-parancsot. A parancs futtatásakor minden alkalommal módosítsa a létrehozott pod nevét. Használja például ahelyettload-generator-2
, hogy az alábbi parancsban látható módon használandóload-generator
.
kubectl run -i --tty load-generator-2 --rm --image=busybox:1.28 --restart=Never -- /bin/sh -c "while sleep 0.01; do wget -q -O- http://php-apache; done"
Ezután ellenőrizze a következő paranccsal példányosított csomópontok számát:
kubectl get nodes
NAME STATUS ROLES AGE VERSION
moc-laondkmydzp Ready control-plane,master 3d4h v1.22.4
moc-lorl6k76q01 Ready <none> 3d4h v1.22.4
moc-lorl4323d02 Ready <none> 9m v1.22.4
moc-lorl43bc3c3 Ready <none> 2m v1.22.4
A leskálázás megtekintéséhez nyomja le a CTRL-C billentyűkombinációt a terhelésgenerátor podok befejezéséhez, és zárja be a hozzájuk társított PowerShell-ablakokat. Körülbelül 30 perc elteltével látnia kell, hogy a podok száma csökken. Körülbelül 30 perccel később a csomópontok le lesznek bontva.
További információ a Kubernetes vízszintes pod automatikus méretezéséről: Vízszintes pod automatikus skálázása.
Csomópont-affinitási szabályok
Csomópont-affinitási szabályokkal engedélyezheti, hogy a Kubernetes-ütemező csak a fürt vagy a csomópontkészlet adott csomópontkészletén futtassa a podokat a csomópont bizonyos jellemzői alapján. A vízszintes csomópont automatikus skálázási funkciójának megjelenítéséhez ugyanazokat a szabályokat használhatja annak biztosítására, hogy az egyes csomópontokon csak egy podpéldány fusson.
Előfeltételek:
- Az AKS Arc telepítve van.
- A célfürt telepítve van, és csatlakozik az Azure-hoz.
- Egy Linux-csomópontkészlet van üzembe helyezve, legalább egy aktív Linux-feldolgozó csomóponttal.
- A horizontális csomópontok automatikus skálázása engedélyezve van a célfürtön és a Linux-csomópontkészleten a korábban leírtaknak megfelelően.
Hozzon létre egy YAML-fájlt a következő tartalommal, és mentse csomópont-anti-affinity.yaml fájlként egy helyi mappába.
apiVersion: apps/v1
kind: Deployment
metadata:
name: redis-cache
spec:
selector:
matchLabels:
app: store
replicas: 4
template:
metadata:
labels:
app: store
spec:
nodeSelector:
kubernetes.io/os: linux
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: app
operator: In
values:
- store
topologyKey: "kubernetes.io/hostname"
containers:
- name: redis-server
image: redis:3.2-alpine
Nyisson meg egy PowerShell-ablakot, és töltse be a célfürt hitelesítő adatait. Ebben a példában a fürt neve mycluster
:
Get-AksHciCredential -name mycluster
Most alkalmazza a YAML-fájlt a célfürtre:
kubectl apply -f node-anti-affinity.yaml
Néhány perc múlva az alábbi paranccsal ellenőrizheti, hogy az új csomópontok online állapotba kerültek-e:
kubectl get nodes
NAME STATUS ROLES AGE VERSION
moc-laondkmydzp Ready control-plane,master 3d4h v1.22.4
moc-lorl6k76q01 Ready <none> 3d4h v1.22.4
moc-lorl4323d02 Ready <none> 9m v1.22.4
moc-lorl43bc3c3 Ready <none> 9m v1.22.4
moc-lorl44ef56c Ready <none> 9m v1.22.4
A csomópont eltávolításához törölje a redis-kiszolgáló üzembe helyezését az alábbi paranccsal:
kubectl delete -f node-anti-affinity.yaml
A Kubernetes-pod affinitási szabályairól további információt a Podok csomópontokhoz való hozzárendelése című témakörben talál.
Vízszintes automatikus skálázás hibaelhárítása
Ha a vízszintes podok automatikus skálázása engedélyezve van egy célfürthöz, a felügyeleti fürtben létrejön egy új Kubernetes-telepítés <cluster_name>-cluster-autoscaler
. Ez az üzembe helyezés figyeli a célfürtöt, hogy elegendő feldolgozó csomópont legyen a podok ütemezéséhez.
Az automatikus skálázóval kapcsolatos problémák hibakeresésének néhány különböző módja:
A felügyeleti fürtön futó automatikus skálázási podok hasznos információkat gyűjtenek a méretezési döntések meghozataláról, a szükséges csomópontok számáról és az esetleges általános hibákról. Az automatikus skálázó menti ezeket az adatokat a naplókba. Futtassa a következő parancsot a naplók eléréséhez:
kubectl --kubeconfig $(Get-AksHciConfig).Kva.kubeconfig logs -l app=<cluster_name>-cluster-autoscaler
A felhőszolgáltató naplózza a Kubernetes-eseményeket a felügyeleti fürtben, ami hasznos lehet annak megértéséhez, hogy az automatikus skálázás engedélyezve vagy letiltva lett-e egy fürt és egy csomópontkészlet esetében. Ezek a következő parancs futtatásával tekinthetők meg:
kubectl --kubeconfig $(Get-AksHciConfig).Kva.kubeconfig get events
A fürt automatikus skálázási üzembe helyezése létrehoz egy
configmap
, az általa kezelt célfürtöt. Ezconfigmap
információkat tartalmaz az automatikus skálázó fürtszintű állapotáról és csomópontkészletenként. Futtassa a következő parancsot a célfürtön az állapot megtekintéséhez:Feljegyzés
Győződjön meg arról, hogy futtatta
Get-AksHciCredentials -Name <clustername>
akubeconfig
szóban forgó célfürt eléréséhez szükséges információk lekérését.kubectl --kubeconfig ~\.kube\config get configmap cluster-autoscaler-status -o yaml
A fürt automatikus skálázója naplózza a fürt automatikus skálázási állapotának
configmap
eseményeit, amikor skálázza a fürt csomópontkészletét. A naplók megtekintéséhez futtassa ezt a parancsot a célfürtön:kubectl --kubeconfig ~\.kube\config describe configmap cluster-autoscaler-status
A fürt automatikus skálázója eseményeket bocsát ki a célfürt podjairól, amikor skálázási döntést hoz, ha a pod nem ütemezhető. Futtassa ezt a parancsot az események podon való megtekintéséhez:
kubectl --kubeconfig ~\.kube\config describe pod <pod_name>
PowerShell-dokumentáció
Tekintse meg a fürt automatikus skálázását támogató PowerShell-parancsmagok alábbi hivatkozási lapjait:
- Get-AksHciAutoScalerProfile
- Get-AksHciCluster for AKS
- Get-AksHciNodePool for AKS
- New-AksHciAutoScalerProfile
- New-AksHciCluster
- New-AksHciNodePool
- Remove-AksHciAutoScalerProfile
- Set-AksHciAutoScalerProfile
- Set-AksHciCluster
- Set-AksHciNodePool