CodeBlanks Logo Icon CodeBlanks

Meydan okuma - Deployment

Üç kopyalı bir Deployment yazarsın.

Meydan okuma: güvenli güncellenen Deployment

Bu meydan okumada kesintisiz güncellenen bir Deployment tanımlayacak ve sonra bir sürüm yükseltip geri alacaksın. Kesintisizliğin iki koşulu: maxUnavailable: 0 ve yeni pod'ların hazır olduğunu gerçekten ölçen bir readinessProbe.

kubectl apply -f api.yaml
kubectl set image deploy/api api=api:1.1
kubectl rollout status deploy/api
# sorun çıktı:
kubectl rollout undo deploy/api

Uygulama Deployment tanımı

Bir Deployment YAML'ı yaz: adı api, replicas: 3; RollingUpdate stratejisi maxSurge: 1, maxUnavailable: 0; selector ve şablon etiketi app: api; container adı api, image api:1.0.

Başlangıç kodu

terminal
# buraya yaz

Örnek çözüm

terminal
apiVersion: apps/v1
kind: Deployment
metadata:
  name: api
spec:
  replicas: 3
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 0
  selector:
    matchLabels:
      app: api
  template:
    metadata:
      labels:
        app: api
    spec:
      containers:
        - name: api
          image: api:1.0

Beklenen çıktı

deployment.apps/api created

Uygulama Yükselt ve geri al

Dört komut yaz: api deployment'ında api container'ının image'ını api:1.1 yap; dağıtımın bitmesini bekle; geçmişi göster; önceki sürüme geri dön.

Başlangıç kodu

terminal
# buraya yaz

Örnek çözüm

terminal
kubectl set image deployment/api api=api:1.1
kubectl rollout status deployment/api
kubectl rollout history deployment/api
kubectl rollout undo deployment/api

Beklenen çıktı

deployment.apps/api image updated
deployment "api" successfully rolled out
REVISION  CHANGE-CAUSE
1         <none>
2         <none>
deployment.apps/api rolled back

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 readinessProbe olmadan maxUnavailable: 0 neden yeterli değildir?

  • Güncelleme hiç başlamaz
  • maxUnavailable yok sayılır
  • Pod'lar silinmez
  • Container başlar başlamaz hazır sayılır; uygulama hazır olmadan eskiler kapanır Doğru cevap

Açıklama: Hazırlık sinyali olmadan Kubernetes uygulamanın ne zaman hazır olduğunu bilemez.

2 Önceki sürüme geri dön.

Soru
kubectl rollout ____ deploy/api
Cevap
kubectl rollout undo deploy/api

Açıklama: rollout undo önceki ReplicaSet'e döner.

3 Eşleştir.

Kavram Anlamı
maxUnavailable: 0 Kapasite düşmez
maxSurge: 1 Bir ek pod
set image Sürüm yükselt
rollout undo Geri al

Orta seviye bölümündeki tüm dersler