Mi a helyes utat, hogy szabadítson fel kubernetes forrásokkal kubernetes feladat, amely nem húzza a képet?

szavazat
0

Kontextus

Mi már régóta futó kubernetes feladatok alapján dokkoló konténerek. A tartályokat igényel erőforrásokat (pl 15GB memória, 2 CPU) és az általunk használt autoscaler bővíteni új dolgozó csomópontok kérésére.

Forgatókönyv

A felhasználó kiválaszthatja a változat a dokkoló kép használható a munkát, pl 1.0.0, 1.1.0, vagy akár egy elkövetni hash kód a kép volt építkezni a tesztkörnyezetben.

Ahogy elhagyjuk a dokkoló címkét kell freetext, a felhasználó beírhatja egy nem létező dokkoló tag. Emiatt a munka pod jön ImagePullBackOff állapotban. A pod marad ebben az állapotban, és tartja a források zárva úgy, hogy nem lehet újra felhasználni más munkát.

Kérdés

Mi a helyes megoldás, hogy lehet alkalmazni a kubernetes önmagában, mert nem a pod azonnal, vagy legalábbis gyorsan, ha a pull miatt nem sikerül egy nem létező dokkoló kép: tag?

lehetőségek

Belenéztem backofflimit. Azt állította, hogy 0, de ez nem sikerül, vagy távolítsa el a munkát. A források természetesen vezetett is.

Lehet, hogy meg lehet ölni egy cron feladatot. Nem tudja, hogyan kell megtenni.

Ideális esetben, a forrásokat ne is kiosztott egy munkát egy unexisting dokkoló képet. De nem vagyok benne biztos, ha van lehetőség, hogy könnyen elérni.

Bármi más?

A kérdést 24/10/2019 12:53
a forrás felhasználó
Más nyelveken...                            


3 válasz

szavazat
0

Miután megnézte a design, azt ajánlom, hogy adjunk InitContainer a Job specifikáció megtekintéséhez meglétét a dokkoló képek az adott tag.

Ha a kép a címke nem létezik a registry, InitContainer lehet bejelenteni a hibát, és nem a Jób Pod kilépve nem nulla kilépési kódot.

Ezután Jób Pod kerül újraindul . Miután bizonyos mennyiségű kísérletet Job kap Failedállapotban. Konfigurálásával .spec.ttlSecondsAfterFinished opció, nem munkahelyet lehet kimerültem.

Ha egy Pod init tartály nem sikerül, Kubernetes többször egymás után újraindul a Pod amíg az init tartály sikerül. Azonban, ha a Pod egy restartPolicy a Soha, Kubernetes nem indítja újra a Pod.

Ha a kép létezik, InitContainer script kilép nulla kilépési kódot, és a fő feladat tartály kép fog húzni, és konténer kezdődik.

Válaszolt 01/11/2019 22:55
a forrás felhasználó

szavazat
0

Ha egy feladat befejezése, nem több Pods jönnek létre, de a hüvely nem törlődnek sem.

Alapértelmezésben a Job fog futni megszakítás nélkül, kivéve, ha a Pod sikertelen (restartPolicy = soha), vagy egy konténer kilépések hiba (restartPolicy = OnFailure), ekkor a Job elhalasztja a .spec.backoffLimit fent leírtak szerint. Miután .spec.backoffLimit elérte a Job lesz jelölve sikerült és minden futó Pods megszűnik.

Egy másik módja, hogy befejezze a Job beállításával aktív határidőt. Tedd ezt a beállítást a .spec.activeDeadlineSeconds területén a munkát a másodpercek számát. A activeDeadlineSeconds vonatkozik tart a munka, nem számít, hány Pods jönnek létre. Ha egy feladat eléri activeDeadlineSeconds, annak minden futó hüvely megszüntetik és a Munka állapota lesz típusa: Sikertelen oka: DeadlineExceeded.

Megjegyezzük, hogy a Jób .spec.activeDeadlineSeconds elsőbbséget élvez a .spec.backoffLimit . Ezért a munkát, ami újra próbálkozunk egy vagy több sikertelen Pods nem telepíthető kiegészítő hüvely, amint eléri a megjelölt határidőn activeDeadlineSeconds , akkor is, ha a backoffLimit még nem érte el.

Itt további információkat: munkahelyet .

Azt is set-up concurrencyPolicy a cron munkálatain hogy cserélje ki , és cserélje ki a jelenleg futó feladat egy új munkát.

Itt egy példa:

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: hello
spec:
  schedule: "*/2 * * * *"
  concurrencyPolicy: Replace
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: hello
            image: busybox
            args:
            - /bin/sh
            - -c
            - date; echo Hello from the Kubernetes cluster && sleep 420
          restartPolicy: Never

Beállítása Cserélje érték concurrencyPolicy flag segítségével, ha ez az idő egy új munkát futás és az előző feladat távon még nem fejeződött be, a cron job helyettesíti a jelenleg futó feladat fut egy új munkát futni.

Függetlenül attól, hogy ez a megoldás a probléma abban rejlik, rossz képeket, így az automatizált törlésével hüvely vagy a munkahelyek nem oldja meg a problémát. Mert ha nem változtat semmit a meghatározás a munkahelyek és a képeket a hüvelyben még nem létrehozása után ismét a munkát.

Itt látható példa a hibaelhárítás Hiba: ImagePullBackOff Normál hátralék: ImagePullBackOff .

Válaszolt 25/10/2019 11:27
a forrás felhasználó

szavazat
0

Használhatja failedJobsHistoryLimita sikertelen munkák és successfulJobsHistoryLimita siker munkahelyek

Ezzel a két paramétert, akkor tartsa a munkát történelem tiszta

.spec.backoffLimit hogy meghatározza az ismétlések számát, mielőtt döntenének munkát nem sikerült.

Válaszolt 24/10/2019 13:16
a forrás felhasználó

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more