Megosztás a következőn keresztül:


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 on Azure Stack HCI 22H2, AKS on Windows Server

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-AksHciClusterSet-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 myclustercé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, hogy az alábbi parancsban látható módon használandóload-generator-2.

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. Ez configmap 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> a kubeconfig 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:

Következő lépések