ReplicaSet nedir ?

Bengu

Yeni Üye
Dahası, ReplicaSet tek başına artan trafiğe göre Pod sayısını otomatik olarak artırmaz. Hedef sayıyı üçten altıya çıkarmak mümkündür; ancak talebe göre otomatik ölçeklendirme için uygun yapılandırmayla Horizontal Pod Autoscaler gibi araçlardan yararlanılır.

Bu örnekten çıkarılacak ders şudur: Yüksek erişilebilirlik tek bir özelliğin değil, birlikte çalışan bileşenlerin sonucudur.

5. Erkekler Strateji Kurar, Kadınlar İlişkileri Yönetir mi? Teknik Ekiplerde Gerçek Resim

Teknik konuları konuşurken bazen insan davranışlarını da işin içine katıyoruz. Özellikle ekip çalışmasında erkeklerin çözüm odaklı, kadınların ise empatik olduğu yönünde genellemeler duyabiliyoruz. Ancak gerçek hayattaki ekipler bu kadar basit kalıplara sığmıyor.

Bir altyapı mühendisi olan Mert'i düşünelim. Mert, gece yarısı Pod sayısının düştüğünü fark ettiğinde önce olay kayıtlarını inceliyor, kaynak tüketimini kontrol ediyor ve sorunun hangi düğümden kaynaklandığını araştırıyor. Hızlı hareket etmek istiyor çünkü hizmet kesintisinin uzamasını istemiyor.

Aynı ekipte çalışan Deniz ise teknik incelemeyi sürdürürken destek ekibine ulaşıyor. Müşterilerin hangi hataları gördüğünü, kesintinin hangi kullanıcı gruplarını etkilediğini ve iletişimin nasıl yürütülmesi gerektiğini değerlendiriyor.

Mert'in yaklaşımı stratejik ve analitik; Deniz'in yaklaşımı ise iletişim ve kullanıcı deneyimi açısından güçlü. Fakat bu özelliklerin cinsiyetle zorunlu bir ilişkisi yok. Mert de son derece empatik olabilir, Deniz de karmaşık bir altyapı sorununu çözmek için son derece sistematik bir plan geliştirebilir.

Üstelik ekipte başka karakterler de var. Elif otomasyon konusunda uzmandır ve aynı sorunun bir daha yaşanmaması için izleme kuralları geliştirir. Kerem ise maliyetleri inceler ve gereğinden fazla Pod çalıştırmanın bütçeye etkisini hesaplar.

İyi bir Kubernetes ekibi, herkesin aynı düşünmesini değil, farklı bakış açılarının ortak bir hedefte birleşmesini sağlar.

ReplicaSet'in teknik görevi Pod sayısını korumaktır. İnsanların görevi ise bu teknik kapasiteyi doğru planlamak, kesintileri anlamak, kullanıcıları bilgilendirmek ve sürdürülebilir bir sistem oluşturmaktır.

Peki sizin ekibinizde bir kesinti yaşandığında ilk kim harekete geçiyor? Sorunu çözmeye odaklanan kişi mi, etkilenen kullanıcıları bilgilendiren kişi mi, yoksa ikisini aynı anda yapabilen bir ekip mi? Aslında en sağlıklı cevap, bu sorumlulukların birbirini tamamlamasıdır.

6. ReplicaSet Nasıl Oluşturulur? Küçük Bir YAML Örneği

Konuyu yalnızca teoride bırakmayalım. Aşağıdaki örnek, üç adet NGINX Pod'u hedefleyen temel bir ReplicaSet tanımıdır.

```yaml

apiVersion: apps/v1

kind: ReplicaSet

metadata:

name: web-replicaset

spec:

replicas: 3

selector:

matchLabels:

app: web

template:

metadata:

labels:

app: web

spec:

containers:

- name: nginx

image: nginx:stable

ports:

- containerPort: 80

```

Bu yapılandırmada apiVersion, kullanılan Kubernetes API sürümünü belirtir. kind, oluşturulacak kaynağın ReplicaSet olduğunu söyler. metadata.name, kaynağa bir isim verir.

replicas: 3 ifadesi üç Pod hedeflendiğini belirtir. Selector, app: web etiketine sahip Pod'ları seçer. Pod Template içinde de aynı etiketin bulunması gerekir. Seçici ile şablon etiketlerinin uyuşmaması, kaynak tanımının kabul edilmemesine neden olabilir.

Yapılandırmayı web-replicaset.yaml adıyla kaydettiğinizi varsayalım. Ardından şu komutla uygulayabilirsiniz:

```bash

kubectl apply -f web-replicaset.yaml

```

ReplicaSet durumunu kontrol etmek için:

```bash

kubectl get rs

```

Pod'ları görüntülemek için:

```bash

kubectl get pods -l app=web

```

Daha ayrıntılı inceleme yapmak isterseniz:

```bash

kubectl describe rs web-replicaset

```

Bu komutlar, hedeflenen ve mevcut Pod sayısını, ilgili olayları ve ReplicaSet'in durumunu anlamanıza yardımcı olur.

Ancak gerçek bir projede yalnızca örnekteki tanımı kopyalayıp üretim ortamına taşımak yeterli değildir. İmaj sürümünü, kaynak isteklerini ve limitlerini, sağlık kontrollerini, güvenlik ayarlarını ve uygulamanın gerçek ihtiyaçlarını da değerlendirmek gerekir.

Bir de önemli uyarı: Bu örnekte doğrudan ReplicaSet oluşturuyoruz. Normal bir web uygulamasını dağıtmak için çoğu durumda Deployment tanımlamak daha uygun olacaktır.

7. ReplicaSet ile Deployment Arasındaki Fark Nedir?

Bu iki kavramı birbirine karıştırmak oldukça yaygındır. İkisi de Pod'larla ilgilenir ancak sorumlulukları aynı değildir.

ReplicaSet'in temel amacı, belirtilen sayıda uygun Pod kopyasını korumaktır. Deployment ise uygulama sürümlerinin yönetilmesini ve güncellemelerin kontrollü biçimde gerçekleştirilmesini sağlar.

Örneğin uygulamanızın eski sürümü nginx değil, kendi geliştirdiğiniz webapp:v1 imajı olsun. Yeni sürümünüzü webapp:v2 olarak yayımlamak istiyorsunuz.

Doğrudan ReplicaSet kullanıyorsanız yalnızca Pod Template içindeki imajı değiştirmeniz, mevcut Pod'ların kontrollü şekilde yeni sürüme geçirileceği anlamına gelmez. Eski ReplicaSet mevcut Pod'larını korumaya devam edebilir.

Deployment kullanıldığında ise yeni sürüm için yeni bir ReplicaSet oluşturulabilir ve eski sürümdeki Pod'lar yapılandırılan güncelleme stratejisine göre azaltılabilir. Bu süreç, uygun koşullarda kademeli dağıtım ve geri alma gibi olanaklar sağlar.

Özetle:

- ReplicaSet: Belirli sayıda Pod kopyasını korumaya odaklanır.

- Deployment: ReplicaSet'leri ve uygulama güncellemelerini yönetir.

- Service: Uygun Pod'lara erişim için kararlı bir ağ erişim noktası sunabilir.

- Horizontal Pod Autoscaler: Yapılandırmaya ve ölçümlere bağlı olarak hedef replika sayısını otomatik değiştirebilir.

Bu bileşenler birbiriyle uyumlu çalıştığında daha yönetilebilir bir uygulama mimarisi elde edilir.

8. ReplicaSet Kullanırken Yapılan Yaygın Hatalar

Teknik sistemlerde hataların çoğu, aracın kendisinden çok yanlış beklentilerden kaynaklanır. ReplicaSet de bu konuda bir istisna değil.

Hata 1: ReplicaSet'in uygulamayı tamamen iyileştireceğini düşünmek.

ReplicaSet, uygun Pod sayısını korumaya çalışır. Uygulamanın içindeki bir yazılım hatasını kendiliğinden düzeltmez. Bir uygulama sürekli çöküyorsa yeni Pod'lar oluşturulabilir ama kök neden çözülmedikçe sorun devam eder.

Hata 2: Her Pod'un farklı bir makinede çalışacağını varsaymak.

Bir ReplicaSet'in üç Pod'u aynı düğümde de bulunabilir. Düğümün tamamı arızalanırsa birden fazla Pod aynı anda etkilenebilir. Yerleştirme kuralları, dağıtım tercihleri ve uygun altyapı planlaması bu nedenle önemlidir.

Hata 3: Selector etiketlerini dikkatsizce seçmek.

Birden fazla denetleyicinin aynı Pod'ları hedeflemesi beklenmedik davranışlara yol açabilir. Etiketlerin tutarlı ve kaynakların seçicilerinin dikkatle tanımlanmış olması gerekir.

Hata 4: ReplicaSet'in otomatik ölçeklendirme yaptığını sanmak.

Hedef üç olarak tanımlandıysa sistem bu sayıyı korumaya çalışır. Trafik arttığında hedefin kendiliğinden altıya çıkması için ayrıca uygun bir ölçeklendirme mekanizması yapılandırılmalıdır.

Hata 5: Pod sayısını sağlık göstergesi olarak kabul etmek.

Üç Pod'un bulunması, üçünün de hazır olduğu veya uygulamanın tüm kullanıcılar için sorunsuz çalıştığı anlamına gelmez. kubectl get pods çıktısını, olayları, uygulama günlüklerini ve sağlık kontrollerini birlikte değerlendirmek gerekir.
 
Üst