Pod Nedir?
Pod, Kubernetes’in en küçük ve temel çalışma birimidir. Bir Pod, genellikle bir veya birden fazla container içerir. Her Pod, container’lar için aynı ağ IP adresini paylaşır ve birbirleriyle iletişim kurabilir.
Bir örnekle açıklayalım: Eğer bir web uygulamanız var ve bu uygulama frontend ve backend’den oluşuyorsa, bu iki bileşeni aynı Pod içinde çalıştırabilirsiniz. Ancak, dikkat etmeniz gereken şey, Pod’ların genellikle tek bir uygulamanın birden çok parçasını çalıştırmak için kullanılmasıdır.
apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
containers:
- name: my-container
image: nginx:latest
Bu basit YAML dosyasını kullanarak bir Nginx container’ı çalıştırabilirsiniz. Pod, Kubernetes cluster'ınızda bir IP alır ve ağ üzerinden erişilebilir olur.
Deployment Nedir?
Deployment, Pod’ların yaşam döngüsünü yönetir. Yani, belirli bir uygulamanın doğru sayıda ve doğru versiyonda çalışıp çalışmadığını kontrol eder. Eğer bir Pod başarısız olursa, Deployment onu otomatik olarak yeniden oluşturur.
#### Deployment Oluşturma Örneği:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-deployment
spec:
replicas: 3
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-container
image: nginx:latest
Bu YAML dosyası, 3 Pod’dan oluşan bir Deployment oluşturur. Nginx container'ı her bir Pod içinde çalışır.
Service Nedir?
Service, Kubernetes cluster’ındaki Pod’lar arasındaki trafiği yöneten soyut bir yapıttır. Bir Pod’un IP adresi değişebilir veya yeniden oluşturulabilir. Bu durumda Service, Pod’ların IP adreslerini birleştirip stabil bir erişim noktası sağlar.
#### Service Oluşturma Örneği:
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
selector:
app: my-app
ports:
- protocol: TCP
port: 80
targetPort: 80
type: ClusterIP
Bu Service, `my-app` etiketine sahip Pod’lara 80 numaralı port üzerinden erişim sağlar. Buradaki `ClusterIP`, sadece cluster içinde erişilebilir olmasını sağlar.
Kubernetes’te Yönetim ve Ölçeklenebilirlik
Kubernetes’in sunduğu en büyük avantajlardan biri ölçeklenebilirliktir. Pod sayınızı sadece birkaç komutla artırabilir veya azaltabilirsiniz. Deployment ile bu süreç oldukça kolaydır. Yeni bir versiyon dağıtmak veya mevcut versiyonu güncellemek de son derece basittir. Ayrıca, Kubernetes’in sağladığı otomatik yeniden başlatma ve hata yönetimi özellikleri ile uygulamanız her zaman erişilebilir olur.
Pod sayısını artırmak için aşağıdaki komutu kullanabilirsiniz:
kubectl scale deployment my-deployment --replicas=5
Bu komut, `my-deployment` adındaki Deployment için Pod sayısını 5’e çıkarır. Bu sayede uygulamanız daha fazla trafiği kaldırabilir.