Görüntüyü çeken başarısız bir Kubernetes iş için Kubernetes kaynakları serbest doğru yolu nedir?

oy
0

bağlam

Uzun liman işçisi kaplarda dayalı Kubernetes işleri çalışıyor olması. konteynerler kaynaklarını (örneğin 15gb hafıza, 2 cpu) ihtiyacı vardır ve biz isteği üzerine yeni işçi düğümlerini büyütmek için autoscaler kullanın.

senaryo

Kullanıcılar, örneğin 1.0.0, 1.1.0, liman işçisi görüntü sürümü bir iş için kullanılacak seçebilir, hatta bir görüntü test ortamında gelen inşa edildi kod karma işlemek.

Biz FREETEXT edilecek liman işçisi etiketi terk gibi, kullanıcı var olmayan liman işçisi etiketi yazabilirsiniz. Bu nedenle iş pod ImagePullBackOff halde geliyor. pod bu durumda kalır ve başka hiçbir işi tarafından yeniden kullanılamaz böylece kaynaklar kilitli tutar.

Soru

etiketi: Bir çekme nedeniyle mevcut olmayan bir liman işçisi görüntüye başarısız olursa hemen veya en azından çabuk pod geçemediği için Kubernetes kendisi uygulanabilir doğru çözüm, nedir?

olasılıklar

Ben backofflimit içine baktı. Ben 0 olarak ayarlayın, ancak bu başarısız ya da işi kaldırmaz. kaynaklar tabii olarak iyi muhafaza edilmiştir.

Belki bir cron işi ile öldürülebilir. Bunun nasıl emin değilim.

İdeal olarak, kaynaklar bile unexisting liman işçisi görüntü ile bir iş için tahsis edilmemelidir. Kolayca bunu başarmak için bir ihtimal varsa Ama emin değilim.

Başka?

Oluştur 24/10/2019 saat 11:53
kaynak kullanıcı
Diğer dillerde...                            


3 cevaplar

oy
0

Sen kullanabilirsiniz failedJobsHistoryLimitBaşarısız işlerin ve successfulJobsHistoryLimitbaşarı işler için

Bu iki parametre ile, iş geçmişi temiz tutabilirsek

.spec.backoffLimit başarısız olarak bir Job düşünmeden önce yeniden deneme sayısını belirtmek için.

Cevap 24/10/2019 saat 12:16
kaynak kullanıcı

oy
0

Ne zaman bir işi tamamlar, artık Bölmeler oluşturulur, ancak Kapsüller ya silinmez.

Bir Pod yanlışlıkla (restartPolicy = yok) ya da bir konteyner çıkar başarısız Varsayılan olarak, bir iş kesintisiz çalışır (restartPolicy = onFailure), hangi için iş Erteledi etmektedir .spec.backoffLimit yukarıda tarif edildiği. .Spec.backoffLimit ulaşıldığında başarısız oldu ve herhangi çalışan Kapsüller sonlandırılacak olarak İş işaretlenir.

Bir İşi sonlandırmak için başka bir yolu, bir aktif son tarih ayarı gereğidir. Ayarlayarak bunu .spec.activeDeadlineSeconds saniyelik bir sayıya Job alanını. ActiveDeadlineSeconds olursa olsun birçok Kapsüller nasıl oluşturulduğunu işin, süresi için de geçerlidir. Bir İş activeDeadlineSeconds ulaştığında, onun çalışan Pod tüm sonlandırılır ve İş durumu türü haline gelecektir: nedenden ile başarısız oldu: DeadlineExceeded.

Bir İşin o Not .spec.activeDeadlineSeconds onun önceliklidir .spec.backoffLimit . Bu nedenle, bir yeniden denemeden veya tarafından belirtilen zaman sınırına ulaşırsa kez daha başarısız Kapsüller ek Pod'larını dağıtmak olmayacak bir iş activeDeadlineSeconds backoffLimit henüz gelmemiş olsa bile.

İşte bilgiler verilmiştir: işler .

Ayrıca set-up yapabilirsiniz concurrencyPolicy ait cronjob için değiştirin ve yeni bir iş ile şu anda çalışan işini değiştirmek.

İşte bir örnek:

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

Ayar Değiştir değerini concurrencyPolicy yeni bir iş çalıştırmak ve önceki iş çalışma henüz bitmediğini zamanı ise bayrak araçlarla cron işi yeni bir iş çalıştırmak ile şu anda çalışan iş çalıştırmak yerine geçer.

Ne olursa olsun bu çözümlerin yanlış görüntüler içinde sorunun yalanlar böylece sorunu çözmez bakla veya işlerini silme otomatik. Eğer bölmeler yine tekrar iş oluşturduktan sonra başarısız olur iş ve görüntülerin tanımında herhangi bir değişiklik yoksa çünkü.

ImagePullBackOff Normal Backoff: Burada Hata için sorun giderme bir örnektir ImagePullBackOff .

Cevap 25/10/2019 saat 10:27
kaynak kullanıcı

oy
0

Tasarımınızın baktığımızda sonra eklemek öneriyoruz InitContainer için İş şartnamesine varlığını kontrol verilen etiketle liman işçisi görüntülerin.

etiketiyle görüntü kayıt yoksa, InitContainer bir hata rapor ve sıfır olmayan çıkış kodu ile çıkarken tarafından Eyüp'ün Pod'u başarısız olabilir.

O Eyüp'ün Pod sonra edilecektir yeniden . Girişimleri Job belli bir miktar sonra alacak Faileddevlet. Yapılandırarak .spec.ttlSecondsAfterFinished seçeneği, başarısız işler sildi edilebilir.

Bir Pod'un init konteyner başarısız olursa init konteyner başarılı oluncaya kadar, Kubernetes defalarca Pod yeniden başlatır. Pod hiçbir zaman, bir restartPolicy sahiptir Ancak, Kubernetes Pod'u yeniden başlatmaz.

görüntü varsa, sıfır çıkış kodu ve ana iş konteyner görüntü ile InitContainer komut çıkış çekti ve konteyner başlar olacak.

Cevap 01/11/2019 saat 20:55
kaynak kullanıcı

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