kubernetes deployment~
Kubernetes, konteynerleri yönetmek için kullanılan güçlü bir orkestrasyon sistemidir. Konteyner imajları, Kubernetes ortamında Pod adı verilen en küçük birimler içinde çalıştırılır. Ancak, Pod’lar doğrudan yönetilmesi zor olan geçici yapılardır. İşte bu noktada Deployment devreye girer.
Deployment Nedir ve Neden Kullanılır?
Deployment, Kubernetes’te Pod’ları yönetmek, güncellemek ve sürekliliğini sağlamak için kullanılan bir bileşendir. Bir Deployment tanımlandığında, Kubernetes bu yapı üzerinden istenen durumu belirler ve mevcut durumu sürekli kontrol ederek bu istenen durumla uyumlu hale getirir.
Örneğin, bir uygulamanın iki adet çalışan pod’a sahip olması gerektiğini belirttiğinizde, Kubernetes her zaman iki pod’un çalışır durumda olduğundan emin olur. Eğer bir pod çökerse, Kubernetes otomatik olarak yeni bir pod başlatır.
Deployment’ın Sağladıkları:
• Otomatik Düzeltme (Self-healing): Pod’lardan biri çökerse Kubernetes yeni bir pod başlatır.
• Güncellemeler ve Sürümler: Deployment sayesinde uygulama güncellemeleri sorunsuz bir şekilde yönetilebilir.
- Ölçekleme (Scaling): Trafik arttığında daha fazla pod oluşturulabilir, düştüğünde azaltılabilir.
Deployment Nasıl Oluşturulur?
Aşağıdaki komut ile httpd imajını kullanarak iki replikaya sahip bir Deployment oluşturabilirsiniz:
Deploeyment Oluşturmak
kubectl create deployment myapp --image=httpd:latest --replicas=2
Deployment Durumunu Kontrol Etme:
kubectl get deployments
Pod’ların Durumunu Görüntüleme:
kubectl get pods
AME READY STATUS RESTARTS AGE
test2-5544448fcb-7qd7h 1/1 Running 0 30m
test2-5544448fcb-jcnd6 1/1 Running 0 30m
Podların Replika Sayısnı Arttırmak
kubectl scale deployment test2 --replicas=6
NAME READY STATUS RESTARTS AGE
test2-5544448fcb-7qd7h 1/1 Running 0 31m
test2-5544448fcb-j4rcg 1/1 Running 0 5s
test2-5544448fcb-jcnd6 1/1 Running 0 31m
test2-5544448fcb-sf7rh 0/1 ContainerCreating 0 5s
test2-5544448fcb-ztmj5 1/1 Running 0 5s
test2-5544448fcb-ztvzm 0/1 ContainerCreating 0 5s
Deployment Silmek
kubectl delete deployment myapp
• Yüksek Erişilebilirlik: Bir pod hataya düştüğünde Deployment, yeni bir pod oluşturarak uygulamanın kesintisiz çalışmasını sağlar.