yoklateknik mülakat

DevOps / Cloud K8s Scheduling Resources Mülakat Soruları

75 doğrulanmış DevOps / Cloud K8s Scheduling Resources mülakat sorusu — cevaplarıyla çöz, açıklamalarıyla öğren, gerçek simülasyonda kendini test et.

Gerçek simülasyonu dene →

Örnek sorular

K8s Scheduling ResourcesZorluk 1
Bir Pod'un container spec'inde resources.requests ile resources.limits arasındaki temel fark nedir?
  • aHer iki alan da yalnızca kubelet tarafından, çalışma zamanında kullanım üzerine sert bir tavan uygulamak için kullanılır.
  • brequests, scheduler'ın kapasiteli bir node bulması için kullanılır; limits kubelet tarafından çalışma zamanında uygulanır.
  • crequests, kubelet tarafından çalışma zamanı tavanı olarak uygulanır; limits yalnızca scheduler tarafından kullanılır.
  • drequests ve limits işlevsel olarak birbirinin yerine geçebilen, farksız alanlardır.
Açıklama:Scheduler, Pod için yeterli ayrılabilir kapasiteye sahip node'u belirlemek üzere requests değerini okur. limits ise Pod hangi node'a yerleşirse yerleşsin, container çalışırken kubelet/container runtime tarafından bağımsız olarak uygulanır.
K8s Scheduling ResourcesZorluk 2
Bir container'ın gerçek CPU kullanımı, resources.limits.cpu değerini aşmaya çalışıyor. Container'a ne olur?
  • aÇalışmaya devam eder ama CPU kullanımı limit içinde kalacak şekilde throttle edilir.
  • bkubelet, container'ı hemen OOMKilled sebebiyle sonlandırır.
  • cPod hemen tahliye edilip başka bir node'a yeniden zamanlanır.
  • dPod'un yapılandırılmış restart policy'sinden bağımsız olarak container yeniden başlatılır.
Açıklama:CPU sıkıştırılabilir (compressible) bir kaynaktır. CPU limitinin aşılması, sürecin CFS ile throttle edilmesiyle sonuçlanır, sonlandırma ile değil — bellekten farklı olarak CPU fazla kullanımı için bir öldürme mekanizması yoktur.
K8s Scheduling ResourcesZorluk 1
Bir container'ın gerçek bellek kullanımı, resources.limits.memory değerini aşıyor. Tipik sonuç nedir?
  • aContainer, CPU fazla kullanımında olduğu gibi yeniden başlatılmadan throttle edilir.
  • bNode'da daha fazla bellek boşalana kadar Pod Pending durumuna geçer.
  • cContainer süreci çekirdek (kernel) tarafından öldürülür ve son durumu OOMKilled sebebiyle gösterilir.
  • dLimit sessizce yok sayılır ve container bellek tüketmeye devam eder.
Açıklama:Bellek sıkıştırılamaz (non-compressible) bir kaynaktır. Kullanım container'ın bellek limitini aştığında, çekirdeğin OOM killer'ı süreci sonlandırır ve kubectl describe pod, container'ın son sonlanma durumunu OOMKilled olarak raporlar.
K8s Scheduling ResourcesZorluk 2
Node'un allocatable belleğinin 100Gi'den çok daha az olduğu tek node'lu bir cluster'da şu Pod'u uyguluyorsun:
apiVersion: v1
kind: Pod
metadata:
  name: big-request
spec:
  containers:
  - name: busybox
    image: busybox
    command: ["sleep", "3600"]
    resources:
      requests:
        memory: "100Gi"
        cpu: "500m"

kubectl get pod big-request STATUS'u Pending gösteriyor. kubectl describe pod big-request çıktısının Events bölümü büyük olasılıkla ne gösterir?
  • aWarning ImagePullBackOff: back-off pulling image "busybox"
  • bWarning CrashLoopBackOff: back-off restarting failed container
  • cWarning FailedScheduling: 0/1 nodes are available: 1 Insufficient cpu.
  • dWarning FailedScheduling: 0/1 nodes are available: 1 Insufficient memory.
Açıklama:İstenen 100Gi bellek, tek node'un sunabileceğinden fazladır, bu yüzden scheduler Pod'u yerleştiremez. Events bölümü, karşılanamayan kaynağı adıyla belirten bir FailedScheduling uyarısı raporlar — burada CPU değil, bellek.
K8s Scheduling ResourcesZorluk 2
Bir Pod'un tek container'ında hem CPU hem bellek için resources.requests ile resources.limits tam olarak aynı değerlere ayarlanmış. Kubernetes bu Pod'a hangi QoS sınıfını atar?
  • aGuaranteed
  • bBurstable
  • cBestEffort
  • dReserved (Kubernetes'in yalnızca control-plane Pod'ları için kullandığı bir sınıf)
Açıklama:Bir Pod, Guaranteed QoS sınıfını yalnızca her container hem CPU hem bellek için requests'i limits'e eşit belirttiğinde alır. "Reserved" gerçek bir Kubernetes QoS sınıfı değildir.
K8s Scheduling ResourcesZorluk 2
Bir Pod'un container'ı resources.requests.memory değerini resources.limits.memory'den düşük ayarlıyor (ve/veya requests, her kaynak için limits'e tam eşit olmadan ayarlanmış). Pod hangi QoS sınıfını alır?
  • aGuaranteed
  • bBurstable
  • cBestEffort
  • drequests, limits'e tam eşit olmadıkça Pod zamanlanamaz.
Açıklama:En az bir container'da requests ayarlanmış ama her kaynak türünde limits'e eşit değilse, Pod Burstable sınıfına düşer — Guaranteed (her yerde requests==limits) ile BestEffort (hiçbir şey ayarlanmamış) arasında.

3375 soruluk DevOps / Cloud bankasında kendini sına.

Mülakata başla