Kubernetes Giriş Rehberi: Konteynerleştirilmiş Uygulamaları Verimli Yönetme
Kubernetes Giriş Rehberi: Konteynerleştirilmiş Uygulamaları Verimli Yönetme
Kubernetes, günümüzde en popüler konteyner orkestrasyon platformu haline gelmiştir. Otomatik dağıtım, ölçeklendirme ve konteynerleştirilmiş uygulamaların yönetimi için bir çözüm sunar. Bu makale, başlangıç seviyesindeki ve orta düzey geliştiricilere pratik bir giriş rehberi sağlayarak, Kubernetes'in temel kavramlarını ve pratik uygulamalarını hızlı bir şekilde öğrenmenize yardımcı olacaktır.
Kubernetes Nedir?
Kubernetes (genellikle K8s olarak kısaltılır), konteynerleştirilmiş uygulamaların otomatik dağıtımını, ölçeklendirilmesini ve yönetimini sağlamak için kullanılan açık kaynaklı bir platformdur. Google tarafından geliştirilmiş ve Cloud Native Computing Foundation (CNCF) 'a bağışlanmıştır. Kubernetes'in ana hedefi, uygulamaların yaşam döngüsü yönetimini basitleştirmek ve sistemin yüksek kullanılabilirliğini ve otomatik yönetimini sağlamaktır.
Kubernetes'in Temel Bileşenleri
1. Pod
Pod, Kubernetes'teki en küçük dağıtım birimidir ve bir veya daha fazla konteyner içerebilir. Her Pod, ağ ve depolama paylaşır, bu nedenle sıkı bir şekilde ilişkili hizmetlerin çalıştırılması için uygundur.
apiVersion: v1
kind: Pod
metadata:
name: my-app-pod
spec:
containers:
- name: my-app-container
image: nginx
2. Deployment
Deployment, Pod'ların yaşam döngüsünü yönetmek için kullanılır, belirli sayıda Pod'un çalışır durumda olmasını sağlar ve sürüm kontrolü ve güncellemeler yapılabilir.
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app-deployment
spec:
replicas: 3
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-app-container
image: nginx
3. Service
Service, diğer Pod'ların veya dış kullanıcıların çalışmakta olan Pod'lara erişimini sağlamak için kararlı bir erişim noktası sunar.
apiVersion: v1
kind: Service
metadata:
name: my-app-service
spec:
type: LoadBalancer
selector:
app: my-app
ports:
- port: 80
targetPort: 80
Kubernetes'in Avantajları
- Otomatik Yönetim: Kubernetes, konteyner uygulamalarını otomatik olarak dağıtabilir, ölçeklendirebilir ve yönetebilir, manuel işlemleri azaltır ve hata olasılığını düşürür.
- Yüksek Kullanılabilirlik: ReplicaSets aracılığıyla, Kubernetes yeterli sayıda Pod örneğinin çalışır durumda olmasını sağlar; bir örnek başarısız olduğunda, sistem otomatik olarak onu yeniden başlatır veya değiştirir.
- Yük Dengeleme: Kubernetes, hizmetlere trafik dağıtmak için yerleşik yük dengeleme işlevine sahiptir ve kaynakların verimli kullanılmasını sağlar.
Kubernetes'e Hızla Nasıl Başlanır
1. Ortam Hazırlığı
Öncelikle, Kubernetes ortamını kurmanız gerekir. Bu, Minikube kullanarak yerel test yaparak veya bulut hizmet sağlayıcılarında (Google Kubernetes Engine, AWS EKS, Azure AKS gibi) bir küme oluşturarak çeşitli yollarla yapılabilir.
Minikube Kullanarak Kubernetes Kurulumu
- Minikube ve kubectl'i kurun
# Minikube'u kurun (kurulum yöntemi için Minikube resmi belgelerine bakın)
brew install minikube
# kubectl'i kurun
brew install kubectl
- Minikube'u başlatın
minikube start
2. İlk Uygulamayı Dağıtma
Nginx örneği ile, Nginx'i dağıtmak için bir Deployment ve Service tanımlayabiliriz.
# deployment.yaml dosyasını oluşturun
cat deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
EOF
# deployment'i uygulayın
kubectl apply -f deployment.yaml
# service.yaml dosyasını oluşturun
cat service.yaml
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
type: NodePort
EOF
# service'i uygulayın
kubectl apply -f service.yaml
3. Uygulamaya Erişim
Her NodePort türünde bir Service oluşturduğunuzda, Kubernetes ona bir port atar. Erişim adresini almak için aşağıdaki komutu kullanabilirsiniz:
minikube service nginx-service --url
Yazdırılan URL'yi tarayıcıda açarak Nginx'in karşılama sayfasını görebilirsiniz.
Yaygın Hatalar ve Hata Ayıklama
Kubernetes kullanırken, Pod durumunun CrashLoopBackOff olduğu gibi bazı yaygın sorunlarla karşılaşabilirsiniz. Bu bir hata değildir, aksine bir güvenlik mekanizmasıdır; Kubernetes, Pod çöktüğünde sonsuz bir şekilde yeniden başlatmaz, her yeniden başlatma arasında gecikme ekler ve sistemin karışmasını önler.
Hata ayıklamaya yardımcı olmak için Pod'un günlüklerini görmek için aşağıdaki komutu kullanabilirsiniz:
kubectl logs
Sonuç
Kubernetes, güçlü bir konteyner yönetim aracıdır. Temel kavramlarını ve yaygın komutlarını öğrenerek, bulut yerel uygulamaları daha verimli bir şekilde yönetebilir ve dağıtabilirsiniz. Bulut bilişim ve konteyner teknolojilerinin yaygınlaşmasıyla, Kubernetes öğrenmek kariyer gelişiminiz için yeni fırsatlar açacaktır. Umarım bu rehber, Kubernetes öğrenme yolculuğunuzda size yardımcı ve referans olur.

