Hogyan állítsuk be a Kubernetes Pod erőforráskorlátokat – CloudSavvy IT

Avatar Gadam | 2021.03.04. 33 Views 0 Likes 0 Ratings

33 Views 0 Ratings Rate it

[ad_1]

A Kubernetes logót ábrázoló grafika

Erőforráskorlátok beállítása a Kubernetes-csomagoknál megakadályozza, hogy egy hibás tároló befolyásolja az egyéb munkaterheléseket. A Kubernetes lehetővé teszi az erőforrások korlátozását, beleértve a CPU-t és a memóriafelhasználást. A hüvelyek a korlátok túllépésekor megszüntethetők, fenntartva a klaszter általános stabilitását.

Erőforrás egységek

Előtt határok meghatározása, érdemes megjegyezni, hogy a Kubernetes hogyan fejezi ki az erőforrások elérhetőségét.

A CPU-fogyasztást a felhasznált vCPU-k alapján mérik. Korlátja 0.5 A vCPU-k azt jelzik, hogy a pod elfogyaszthatja az elérhető vCPU-k egyikének elérhető idejét. A felhőalapú szolgáltatók tárhelyein a vCPU jelenik meg. Csupasz fém hardver használata esetén ez egy hiperszál a processzoron.

A memóriát bájtban mérjük. Megadhatja bájtok egész számaként vagy barátságosabb mennyiségként, például 512Mi vagy 1Gi.

CPU-korlát létrehozása

CPU-korlátozás hozzáadásához a pod-tárolókhoz tartalmazza a resources:limits mező a konténer jegyzékében:

apiVersion: v1
kind: Pod
metadata:
  name: demo
  namespace: demo
spec:
  containers:
    - name: my-container
      image: example/example
      resources:
        limits:
          cpu: "0.5"

A fenti példa a tárolókat 0,5 vCPU-ra korlátozza. Fojtogatják őket, hogy 100 ms-os időszakon belül ne fogyasszák el a rendelkezésre álló CPU-idő felét.

Memóriakorlát létrehozása

A memóriahatárok hasonló módon jönnek létre. Változtasd meg a limits:cpu mező a jegyzékben limits:memory:

A tároló 512Mi RAM-ra lesz korlátozva. A Kubernetes továbbra is engedélyezi a további hozzáférést, ha az ütemezett csomópont kapacitása meghaladja. Ellenkező esetben a határérték túllépése azt eredményezi, hogy a konténert megszüntetésre jelöltként jelölik meg.

Tárolási korlátok

Az összes Kubernetes-csomópontban rendelkezésre áll egy efemer tárhely. Ezt a tárolót a hüvelyek használják gyorsítótárak és naplók tárolására. Az efemer tárolókészletben a Kubernetes-fürt is tárolja a tárolóképeket.

Korlátokat állíthat be a hüvely rövid ideig tartó tárolására. Ez egy béta funkció, amelynek célja annak biztosítása, hogy egyetlen pod cache-je ne tudja felemészteni a teljes tárkészletet. Használja a limits:ephemeral-storage tárolójegyzék-mező:

limits:
  ephemeral-storage: "1Gi"

Ez a konténer most a rendelkezésre álló efemer tárhely 1Gi felhasználására korlátozódik. A több tárhelyet próbáló hüvelyeket kilakoltatják. Ha egy tárban több tároló van, a csomagot kilakoltatják, ha az összes tárolóból származó tárhelyhasználat összege meghaladja a teljes tárolási korlátot.

A Kubernetes általában a csomópont mulandó tároló fájlrendszerének időszakos átvizsgálásával követi nyomon a tárhelyhasználatot. Ezután összegzi az egyes hüvelyek és tárolók tárolási felhasználását. Opcionálisan támogatja az operációs rendszer szintű fájlrendszer-tárolási kvótákat, amelyek pontosabb megfigyelést tesznek lehetővé.

Szüksége lesz egy projekt kvóta által támogatott fájlrendszerre, például XFS vagy ext4. Ellenőrizze, hogy a fájlrendszer be van-e kapcsolva a projektkvóta-követés engedélyezésével, majd engedélyezze a LocalStorageCapacityIsolationFSQuotaMonitoring jellemző zászló kubelet. Útmutató a konfigurálja ezt a rendszert a Kubernetes dokumentációjában található.

Erőforrás-kérelmek

Az erőforrás korlátok mellett beállíthat erőforrást kéréseket. Ezek elérhetők a CPU, a memória és az efemer tároláshoz – változtassa meg a limits mezőt requests a fenti példák mindegyikében.

Erőforrás-kérelem beállítása jelzi annak az erőforrásnak a mennyiségét, amelyet a tároló várhatóan használni fog. A Kubernetes figyelembe veszi ezeket az információkat, amikor meghatározza, hogy melyik csomópontra kell ütemezni a csomagot.

Például a memóriát használva a request nak,-nek 512Mi azt eredményezi, hogy a pod egy olyan csomópontra kerül, amely legalább 512Mi memóriával rendelkezik. A rendelkezésre állás kiszámításához a csomópont összes meglévő hüvelyének memóriaigényét összegezzük, és levonjuk a csomópont teljes memóriakapacitásából.

Egy csomópont nem lesz alkalmas új tároló befogadására, ha a munkaterhelési kérelmek összege, beleértve az új tároló kérését is, meghaladja a rendelkezésre álló kapacitást. Ez akkor is így van, ha a valós idejű memóriahasználat valójában nagyon alacsony. A rendelkezésre álló kapacitást már kiosztották a meglévő konténerekhez, hogy biztosítsák kéréseik kielégítését.

A korlátozással ellentétben a Kubernetes mindig lehetővé teszi a tárolók számára, hogy túllépjék erőforrásigényüket. Fogyaszthatnak minden fel nem használt erőforrásmennyiséget, amelyet más tárolók kértek, de jelenleg nem használnak.

Kérések és korlátok használata

A kérések és korlátozások eltérő viselkedése azt jelenti, hogy alaposan meg kell fontolnia a használt értékeket. Általában a legjobb, ha alacsony a kérelmek száma. Ezután a lehető legmagasabb határokat állítja be anélkül, hogy befolyásolná a munkaterhelés együttélési képességét.

Alacsony erőforrásigény-érték használatával a podok a legjobb esélyt kapják arra, hogy ütemezést kapjanak egy csomópontra. Az ütemező nagyobb rugalmassággal rendelkezik az allokációs döntések meghozatalakor, mivel valószínűbb, hogy bármely adott csomópont képes lesz tárolni a tárolót. A tároló a kérésen túl, a megadott határig kész hozzáférést biztosít minden szükséges többletforráshoz.

Minden kérésnek és korlátnak kiegyensúlyozottnak kell lennie a legnagyobb hatás elérése érdekében. Meg kell vizsgálnia a fürtben futó többi csomag kéréseit és korlátjait. Győződjön meg róla, hogy tisztában van a csomópontok által biztosított teljes erőforrásmennyiséggel, hogy ne állítson be túl magas (stabilitást kockáztató) vagy túl alacsony (kapacitás pazarlás) korlátokat.

Következtetés

Mindig állítson be erőforráskorlátokat a Kubernetes munkaterheléséhez. A korlátok hatékony használata elősegíti a munkaterhelések békés egymás mellett élését anélkül, hogy veszélyeztetné a fürt egészségét.

Ez különösen fontos a memória esetében. Korlátozások nélkül egy hibás folyamatú tároló gyorsan elfogyaszthatja a csomópontja által kínált összes memóriát. Egy ilyen memórián kívüli forgatókönyv megsemmisítheti az adott csomópontra ütemezett más csomagokat, mivel az operációs rendszer szintű memóriakezelő megkezdi a folyamatokat a memóriahasználat csökkentése érdekében.

Memóriakorlát beállításával a Kubernetes leállíthatja a tárolót, mielőtt az a fürt egyéb munkaterhelésére hatással lenne, nem beszélve a külső folyamatokról. Elveszíti a munkaterhelését, de az általános fürt nagyobb stabilitást nyer.

[ad_2]
Source link