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


Csomópont-tárolók használata Azure Kubernetes Service-fürtökben

Ez a cikk az Azure Kubernetes Service (AKS) fürtök csomópontaintáinak használatát ismerteti.

Á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 a podokat csomópont-affinitással egy csomópontkészlethez csatolja, vagy utasítja a csomópontot, hogy taszítsa el a podok egy csoportját csomópont-szennyeződések használatával, amelyek az AKS-ütemezővel kommunikálnak.

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.

Csomópont-fertőzöttség beállításai

Az AKS-csomópontokra kétféle csomópont-fertőzöttség alkalmazható: csomópont-fertőzöttek és csomópont-inicializálási hibák.

  • A csomópont-fertőzöttek a csomóponton maradnak a csomóponton a csomópont affinitással rendelkező podok ütemezéséhez. A csomópontok csak az AKS API használatával vehetők fel, frissíthetők vagy távolíthatók el teljesen.
  • A csomóponti inicializálási hibák a rendszerindításkor kerülnek a csomópontra, és ideiglenesen használatosak, például olyan helyzetekben, amikor a csomópontok beállításához további időre lehet szükség. A Kubernetes API-val eltávolíthatja a csomópontinicializálási fertőzöttséget, és a csomópont életciklusa során nem garantált. Ezek csak akkor jelennek meg, ha egy csomópontot felskáláznak vagy frissítenek/újraépítenek. Az új csomópontok skálázás után is fertőzöttek a csomópont inicializálásával. A csomópont-inicializálási hibák a frissítés után minden csomóponton megjelennek. Ha teljesen el szeretné távolítani az inicializálási hibákat, az AKS API-val eltávolíthatja őket, miután a Kubernetes API-val megszüntette a csomópontok felkenését. Miután az AKS API-val eltávolította az inicializálási szennyezettségeket a fürt specifikációjából, az újonnan létrehozott csomópontok nem találják meg ezeket az inicializálási hibákat. Ha az inicializálási fertőzöttség továbbra is jelen van a meglévő csomópontokon, véglegesen eltávolíthatja azt egy csomópontrendszerkép-frissítési művelet végrehajtásával.

Feljegyzés

Az AKS-csomópontkészlet API-val alkalmazott csomópontok és címkék nem módosíthatók a Kubernetes API-ból, és fordítva. A rendszerhibák módosítása nem engedélyezett.

Ez nem vonatkozik a csomópont inicializálási fertőzöttjeire.

Csomópont-tárolók használata

Előfeltételek

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ása csomópont-fertőzöttséggel

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

    az aks nodepool add \
        --resource-group $RESOURCE_GROUP_NAME \
        --cluster-name $CLUSTER_NAME \
        --name $NODE_POOL_NAME \
        --node-count 1 \
        --node-taints "sku=gpu:NoSchedule" \
        --no-wait
    
  2. Ellenőrizze a csomópontkészlet állapotát.

  3. Ellenőrizze, hogy a fertőzöttség be van-e állítva a csomóponton.

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

  1. Frissítsen egy csomópontkészletet a csomópont-fertőzöttség hozzáadásához a az aks nodepool update parancs használatával, és használja a --node-taints paramétert a fertőzöttség megadásához sku=gpu:NoSchedule .

    az aks nodepool update \
        --resource-group $RESOURCE_GROUP_NAME \
        --cluster-name $CLUSTER_NAME \
        --name $NODE_POOL_NAME \
        --node-taints "sku=gpu:NoSchedule" \
        --no-wait
    
  2. Ellenőrizze a csomópontkészlet állapotát.

  3. Ellenőrizze, hogy a fertőzöttség be van-e állítva a csomóponton.

Csomópont-inicializálási hibák használata (előzetes verzió)

Fontos

Az AKS előzetes verziójú funkciói önkiszolgáló, opt-in alapon érhetők el. Az előzetes verziókat "ahogy van" és "rendelkezésre állóként" biztosítjuk, és a szolgáltatási szerződésekből és a korlátozott jótállásból kizárjuk őket. Az AKS előzetes verzióit részben az ügyfélszolgálat fedezi a legjobb munkamennyiség alapján. Ezért ezek a funkciók nem éles használatra vannak szánva. További információkért tekintse meg az alábbi támogatási cikkeket:

Előfeltételek és korlátozások

  • Telepítenie és konfigurálnia kell az Azure CLI-verziót vagy újabb verziót 3.0.0b3 . A verzió azonosításához futtassa a következőt: az --version. Ha telepíteni vagy frissíteni szeretne: Az Azure CLI telepítése.
  • Az inicializálási hibákat csak fürt létrehozása vagy frissítése útján alkalmazhatja az AKS API használatakor. ARM-sablonok használata esetén csomópont-inicializálási hibákat adhat meg a csomópontkészlet létrehozása és frissítése során.
  • Az Azure CLI használatával nem alkalmazhat inicializálási hibákat a Windows-csomópontkészletekre.

A fürt hitelesítő adatainak lekérése

  • Kérje le az AKS-fürt hitelesítő adatait a az aks get-credentials paranccsal.

    az aks get-credentials --resource-group $RESOURCE_GROUP_NAME --name $CLUSTER_NAME
    

Az aks-preview Azure CLI-bővítmény telepítése

  • Regisztrálja vagy frissítse az aks-preview bővítményt a vagy az extension update parancs az extension add használatával.

    # Register the aks-preview extension
    az extension add --name aks-preview
    
    # Update the aks-preview extension
    az extension update --name aks-preview
    

A funkciójelző regisztrálása NodeInitializationTaintsPreview

  1. Regisztrálja a NodeInitializationTaintsPreview funkciójelzőt a az feature register paranccsal.

    az feature register --namespace "Microsoft.ContainerService" --name "NodeInitializationTaintsPreview"
    

    Néhány percig tart, amíg az állapot megjelenik a Regisztrált állapotban.

  2. Ellenőrizze a regisztrációs állapotot a az feature show paranccsal.

    az feature show --namespace "Microsoft.ContainerService" --name "NodeInitializationTaintsPreview"
    
  3. Ha az állapot a Regisztrált állapotot tükrözi, frissítse a Microsoft.ContainerService erőforrás-szolgáltató regisztrációját a az provider register paranccsal.

    az provider register --namespace Microsoft.ContainerService
    

Fürt létrehozása csomópont inicializálási fertőzöttséggel

  1. Hozzon létre egy fürtöt egy csomópont inicializálási fertőzöttségével a az aks create parancs és a --node-initialization-taints megszenvedendő sku=gpu:NoSchedule paraméter használatával.

    Fontos

    A megadott csomópont-inicializálási hibák a fürt összes csomópontkészletére vonatkoznak. Ha egy adott csomópontra szeretné alkalmazni az inicializálási hibát, a parancssori felület helyett ARM-sablont használhat.

    az aks create \
        --resource-group $RESOURCE_GROUP_NAME \
        --name $CLUSTER_NAME \
        --node-count 1 \
        --node-init-taints "sku=gpu:NoSchedule" \
        --generate-ssh-keys
    
  2. Ellenőrizze a csomópontkészlet állapotát.

  3. Ellenőrizze, hogy a fertőzöttség be van-e állítva a csomóponton.

Fürt frissítése csomópont inicializálási fertőzöttség hozzáadásához

  1. Frissítsen egy fürtöt, hogy hozzáadjon egy csomópont inicializálási fertőzöttet a az aks update parancs és a --node-initialization-taints paraméter használatával a fertőzöttséghez.sku=gpu:NoSchedule

    Fontos

    Amikor csomópont inicializálási fertőzöttséggel frissít egy fürtöt, a hibák a fürt összes csomópontkészletére érvényesek. Az újraimálási művelet után megtekintheti a csomópont inicializálási fertőzöttségeinek frissítéseit.

    az aks update \
    --resource-group $RESOURCE_GROUP_NAME \
    --name $CLUSTER_NAME \
    --node-init-taints "sku=gpu:NoSchedule"
    
  2. Ellenőrizze a csomópontkészlet állapotát.

  3. Ellenőrizze, hogy a fertőzöttség be van-e állítva a csomóponton.

A csomópontkészlet állapotának ellenőrzése

  • A csomópont- vagy inicializálási fertőzöttség alkalmazása után ellenőrizze a csomópontkészlet állapotát a az aks nodepool list paranccsal.

    az aks nodepool list --resource-group $RESOURCE_GROUP_NAME --cluster-name $CLUSTER_NAME
    

    Ha csomópont-szennyezettségeket alkalmazott, az alábbi példakimenet azt mutatja, hogy a <node-pool-name> csomópontkészlet Creating a megadott nodeTaintscsomópontokkal rendelkező csomópontok:

    [
      {
        ...
        "count": 1,
        ...
        "name": "<node-pool-name>",
        "orchestratorVersion": "1.15.7",
        ...
        "provisioningState": "Creating",
        ...
        "nodeTaints":  [
          "sku=gpu:NoSchedule"
        ],
        ...
      },
     ...
    ]
    

    Ha csomópont inicializálási hibákat alkalmazott, az alábbi példakimenet azt mutatja, hogy a <node-pool-name> csomópontkészlet Creating a megadott nodeInitializationTaintscsomópontokkal rendelkező csomópontok:

    [
      {
        ...
        "count": 1,
        ...
        "name": "<node-pool-name>",
        "orchestratorVersion": "1.15.7",
        ...
        "provisioningState": "Creating",
        ...
        "nodeInitializationTaints":  [
          "sku=gpu:NoSchedule"
        ],
        ...
      },
     ...
    ]
    

Ellenőrizze, hogy a fertőzöttség be van-e állítva a csomóponton

  • A parancs használatával ellenőrizze a csomópont-konfiguráció csomópont-fertőzöttségeit és csomóponti inicializálási szennyezettségeit kubectl describe node .

    kubectl describe node $NODE_NAME
    

    Ha csomópont-szennyezettségeket alkalmazott, az alábbi példakimenet azt mutatja, hogy a <node-pool-name> csomópontkészlet a megadott Taints:

    [
        ...
        Name: <node-pool-name>
        ...
        Taints: sku=gpu:NoSchedule
        ...
        ],
        ...
     ...
    ]
    

Csomópont-fertőzöttek eltávolítása

Adott csomópont-fertőzöttség eltávolítása

  • Távolítsa el a csomópont-fertőzötteket a az aks nodepool update paranccsal. Az alábbi példaparancs eltávolítja a "sku=gpu:NoSchedule" csomópont-fertőzöttet a csomópontkészletből.

    az aks nodepool update \
    --cluster-name $CLUSTER_NAME \
    --name $NODE_POOL_NAME \
    --resource-group $RESOURCE_GROUP_NAME \
    --node-taints "sku=gpu:NoSchedule"
    

Az összes csomópont-fertőzött eltávolítása

  • Távolítsa el az összes csomópont-fertőzést egy csomópontkészletből a az aks nodepool update parancs használatával. Az alábbi példaparancs eltávolítja az összes csomópont-fertőzést a csomópontkészletből.

    az aks nodepool update \
    --cluster-name $CLUSTER_NAME \
    --resource-group $RESOURCE_GROUP_NAME \
    --name $NODE_POOL_NAME \
    --node-taints ""
    

Csomópont-inicializálási hibák eltávolítása

A csomópont inicializálási fertőzöttjeinek eltávolítására az alábbi lehetőségek állnak rendelkezésre:

  • Ideiglenesen távolítsa el a csomópont-inicializálási tainteket a Kubernetes API használatával. Ha így távolítja el őket, a fertőzöttek újra megjelennek a csomópontok skálázása vagy frissítése után. Az új csomópontok skálázás után is fertőzöttek a csomópont inicializálásával. A csomópont-inicializálási hibák a frissítés után minden csomóponton megjelennek.
  • A csomópont inicializálási taintjainak végleges eltávolításához törölje a csomópontot a Kubernetes API használatával, majd távolítsa el a fertőzöttet az AKS API használatával. Miután az inicializálási tainteket az AKS API-val eltávolította a fürt specifikációjából, az újonnan létrehozott csomópontok az újraimázsolási műveletek után már nem rendelkeznek inicializálási fertőzöttekkel.

Ha eltávolítja az összes inicializálási fertőzött előfordulást a csomópontkészlet replikáiból, előfordulhat, hogy a meglévő inicializálási fertőzöttség az új inicializálási hibákkal végzett frissítés után újra megjelenik.

Csomópont inicializálási fertőzöttjeinek ideiglenes eltávolítása

  • A parancs használatával ideiglenesen távolítsa el a csomópont-inicializálási kubectl taint nodes hibákat.

    Ez a parancs csak a megadott csomópontról távolítja el a fertőzöttet. Ha el szeretné távolítani a fertőzöttet a csomópontkészlet minden csomópontjáról, minden olyan csomópontra futtatnia kell a parancsot, amelyből el szeretné távolítani a fertőzöttet.

    kubectl taint nodes $NODE_POOL_NAME sku=gpu:NoSchedule-
    

    Az eltávolítás után a csomópontok inicializálása újra megjelenik a csomópontok skálázása vagy frissítése után.

Csomópont-inicializálási hibák végleges eltávolítása

  1. A csomópont inicializálási fertőzöttjeinek ideiglenes eltávolítása a Kubernetes API használatával történő csomópont-inicializálási taint eltávolításához kövesse a lépéseket.

  2. Távolítsa el a fertőzöttet a csomópontról az AKS API használatával a az aks update parancs használatával. Ez a parancs eltávolítja a csomópont inicializálási tartományát a fürt minden csomópontjáról.

    az aks update \
    --resource-group $RESOURCE_GROUP_NAME \
    --name $CLUSTER_NAME \
    --node-init-taints ""
    

Ellenőrizze, hogy a fertőzött el lett-e távolítva a csomópontról

  • A parancs használatával ellenőrizze a csomópont-konfiguráció csomópont-fertőzöttségeit és csomóponti inicializálási szennyezettségeit kubectl describe node .

    kubectl describe node $NODE_NAME
    

    Ha eltávolított egy csomópontot, az alábbi példakimenet azt mutatja, hogy a <node-pool-name> csomópontkészlet nem rendelkezik az eltávolított fertőzöttel a következő alatt Taints:

    [
        ...
        Name: <node-pool-name>
        ...
        Taints: 
        ...
        ],
        ...
     ...
    ]
    

Következő lépések