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


Csomópont-tárolók használata az Azure Arc-fürt által engedélyezett AKS-ben

A következőkre vonatkozik: Azure Local, 23H2-es verzió

Ez a cikk azt ismerteti, hogyan használhat csomópont-tárolókat egy AKS-fürtben.

Áttekintés

Az AKS ütemezési mechanizmusa felelős a podok csomópontokra való elhelyezéséért, és a felsőbb rétegbeli Kubernetes ütemezőn, a kube-scheduleren alapul. A podok adott csomópontokon való futtatását korlátozhatja úgy, hogy utasítja a csomópontot, hogy utasítsa el a podok egy csoportját csomópont-fertőzöttek használatával, amelyek az AKS-ütemezővel működnek együtt.

A csomópontok sérülései úgy működnek, hogy megjelölnek egy csomópontot, hogy az ütemező ne helyezzen el bizonyos podokat a megjelölt csomópontokon. Tűréseket helyezhet el egy podon, hogy az ütemező ütemezze a podot egy csomóponton egyező fertőzöttséggel. A taints és a tolerations együtt segít szabályozni, hogy az ütemező hogyan helyezi el a podokat a csomópontokra. További információkért lásd a aintások és a toleranciák példahasználati eseteit.

A taints kulcs-érték párok effektussal. Az effektusmezőnek három értéke van a csomóponthálózatok használatakor: NoExecute, NoScheduleés PreferNoSchedule.

  • NoExecute: A csomóponton már futó podok azonnal törlődnek, ha nem rendelkeznek megfelelő tűréssel. Ha egy pod megfelelő tűréssel rendelkezik, a rendszer kizárhatja, ha tolerationSeconds meg van adva.
  • NoSchedule: Ezen a csomóponton csak a megfelelő tűrésű podok vannak elhelyezve. A meglévő podok nem lesznek kiürítve.
  • PreferNoSchedule: Az ütemező nem helyez el olyan podokat, amelyek nem rendelkeznek megfelelő tűréssel.

Mielőtt elkezdené

  • Ez a cikk feltételezi, hogy van egy meglévő AKS-fürtje. Ha AKS-fürtre van szüksége, létrehozhat egyet az Azure CLI, az Azure PowerShell vagy az Azure Portal használatával.
  • Csomópontkészlet létrehozásakor hozzáadhat hozzá fertőzötteket. Ha fertőzöttet ad hozzá, az adott csomópontkészlet összes csomópontja is megkapja ezt a fertőzést.

Fontos

A teljes csomópontkészlet csomópontjaihoz szúrjon be hibákat vagy címkéket a használatával az aksarc nodepool. Nem javasoljuk kubectl , hogy használjon szennyezettségeket vagy címkéket a csomópontkészlet egyes csomópontjaira.

Csomópontkészlet-tárolók beállítása

Hozzon létre egy csomópontkészletet egy fertőzöttel a az aksarc nodepool add parancs használatával. Adja meg a nevet taintnp , és használja a --node-taints paramétert a fertőzöttség megadásához sku=gpu:NoSchedule :

az aksarc nodepool add \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name taintnp \
    --node-count 1 \
    --node-taints sku=gpu:NoSchedule \
    --no-wait

Ellenőrizze a csomópontkészlet állapotát a az aksarc nodepool list következő paranccsal:

az aksarc nodepool list -g myResourceGroup --cluster-name myAKSCluster

Az alábbi példakimenet azt mutatja, hogy a taintnp csomópontkészlet a megadott nodeTaintscsomópontokkal hoz létre csomópontokat:

[
  {
    ...
    "count": 1,
    ...
    "name": "taintnp",
    ...
    "provisioningState": "Succeeded",
    ...
    "nodeTaints":  [
      "sku=gpu:NoSchedule"
    ],
    ...
  },
 ...
]

A kubernetesben látható a fertőzöttségi információ a csomópontok ütemezési szabályainak kezeléséhez. A Kubernetes ütemezője a aints és a tolerations használatával korlátozhatja, hogy mely számítási feladatok futtathatók a csomópontokon.

  • A rendszer egy olyan csomópontra alkalmaz egy fertőzést , amely azt jelzi, hogy csak bizonyos podok ütemezhetők rajtuk.
  • Ezután egy tűrést alkalmazunk egy podra, amely lehetővé teszi számukra, hogy "elviseljék" a csomópontok szennyezettségét.

Csomópontkészlet-tűrések beállítása

Az előző lépésben alkalmazta a fertőzöttet a sku=gpu:NoSchedule csomópontkészlet létrehozásakor. Az alábbi példa YAML-jegyzék egy tolerancia használatával teszi lehetővé a Kubernetes-ütemező számára, hogy NGINX-podot futtasson az adott csomópontkészlet egyik csomópontján:

Hozzon létre egy nginx-toleration.yaml nevű fájlt, és másolja/illessze be a következő YAML-példát:

apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  containers:
  - image: mcr.microsoft.com/oss/nginx/nginx:1.15.9-alpine
    name: mypod
    resources:
      requests:
        cpu: 100m
        memory: 128Mi
      limits:
        cpu: 1
        memory: 2G
  tolerations:
  - key: "sku"
    operator: "Equal"
    value: "gpu"
    effect: "NoSchedule"

Ütemezze a podot a kubectl apply következő paranccsal:

kubectl apply -f nginx-toleration.yaml

A pod ütemezése és az NGINX-rendszerkép lekérése néhány másodpercet vesz igénybe.

Ellenőrizze az állapotot a kubectl describe pod következő paranccsal:

kubectl describe pod mypod

Az alábbi sűrített példakimenet azt mutatja, hogy a rendszer alkalmazza a sku=gpu:NoSchedule tűrést. Az Események szakaszban az ütemező hozzárendelte a podot a moc-lbeof1gn6x3 csomóponthoz:

[...]
Tolerations:     node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                 node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
                 sku=gpu:NoSchedule
Events:
  Type    Reason     Age    From                Message
  ----    ------     ----   ----                -------
  Normal  Scheduled  54s  default-scheduler   Successfully assigned default/mypod to moc-lbeof1gn6x3
  Normal  Pulling    53s  kubelet             Pulling image "mcr.microsoft.com/oss/nginx/nginx:1.15.9-alpine"
  Normal  Pulled     48s  kubelet             Successfully pulled image "mcr.microsoft.com/oss/nginx/nginx:1.15.9-alpine" in 3.025148695s (3.025157609s including waiting)
  Normal  Created    48s  kubelet             Created container
  Normal  Started    48s  kubelet             Started container

A csomópontokon taintnpcsak azok a podok ütemezhetők, amelyeknél ez a toleranciát alkalmazzák. Minden más pod ütemezve van a nodepool1 csomópontkészletben. Ha több csomópontkészletet hoz létre, a aints és a tolerations használatával korlátozhatja, hogy mely podok ütemezhetők ezeken a csomópont-erőforrásokon.

Fürtcsomópontkészlet frissítése csomópont-fertőzöttség hozzáadásához

Frissítsen egy fürtöt csomópont-fertőzöttség hozzáadásához a az aksarc update parancs és a --node-taints paraméter használatával, amely sku=gpu:NoSchedule megadja a fertőzöttet. A rendszer az összes meglévő fertőzöttet lecseréli az új értékekre. A régi fertőzöttek törlődnek:

az aksarc update -g myResourceGroup --cluster-name myAKSCluster --name taintnp --node-taints "sku=gpu:NoSchedule"   

Következő lépések