Kubernetes Nedir ve Neden Önemlidir?
Bir gün, yeni bir uygulama geliştirmek ve bunu daha hızlı bir şekilde dağıtmak isteyen bir yazılım geliştiricisi olduğunuzu düşünün. Hızla büyüyen bir şirketin parçasısınız ve uygulamanızın sürekli güncel kalması, ölçeklenmesi ve sağlam olması gerekiyor. İşte bu noktada Kubernetes devreye giriyor. Kubernetes, çok sayıda konteyneri yönetmek için tasarlanmış açık kaynaklı bir platformdur. Uygulamanızın her bir parçasını tek bir yerde toplar, dağıtır ve yönetir.
Kubernetes'in temelde ne yaptığına bakıldığında, aslında devasa bir orkestratör olduğunu görebilirsiniz. Yani, tüm konteynerleri bir arada tutup doğru çalıştıklarından emin oluyor. Eğer büyük ölçekli sistemleri yönetecek bir platform arıyorsanız, Kubernetes bu iş için mükemmel bir tercih.
Kubernetes Cluster Nasıl Oluşturulur?
Bir Kubernetes cluster'ı kurmak, bazı adımları takip ederek mümkün hale gelir. Hadi bunları adım adım inceleyelim.
1. Kubernetes Master ve Worker Nodes
Cluster oluşturmanın ilk adımı, Kubernetes'in temel bileşenlerinden olan master ve worker node'ları ayarlamaktır. Master Node, Kubernetes'in kontrol düzeyini sağlar ve tüm işlemlerin koordinasyonunu yapar. Worker Node ise asıl iş yükünü çalıştıran yerlerdir. Her worker node, uygulama konteynerlerini barındıran bir işçi olarak görev alır.
2. Cluster Kurulumunu Yapın
Kubernetes'i kurarken en yaygın kullanılan araçlardan biri olan kubeadm'yi kullanabilirsiniz. Bu araç, Kubernetes cluster'ınızı kurmanıza ve yapılandırmanıza yardımcı olur. Kubeadm, bir master node ve bir veya daha fazla worker node ile çalışacak şekilde tasarlanmıştır.
Aşağıdaki komutları kullanarak bir cluster kurabilirsiniz:
# Master node kurulumunu başlatın
sudo kubeadm init
# Çalıştırılabilir dosyaları yapılandırın
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
# Çalışan pod'lar için ağ yapılandırmasını yapın (örneğin, Flannel)
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
3. Worker Node Bağlantısı
Master node'u kurduktan sonra, worker node'ları bu cluster'a bağlamanız gerekecek. Her worker node'un master node ile iletişim kurabilmesi için gerekli token'ı alıp, worker node'lara dağıtmalısınız. Bu işlem için şu komutu kullanabilirsiniz:
# Master node'dan token'ı almak
kubeadm token create --print-join-command
# Worker node'da bu komutu çalıştırarak cluster'a katılın
Cluster Yönetimi ve İzleme
Cluster'ınızı kurduktan sonra, yönetmek ve izlemek oldukça önemlidir. Burada Kubernetes Dashboard'u kullanmak oldukça faydalıdır. Dashboard, Kubernetes'in web tabanlı bir GUI'sidir ve cluster'ınızdaki tüm bileşenleri görselleştirmenizi sağlar. Dashboard'u kurmak için şu komutu kullanabilirsiniz:
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/master/aio/deploy/recommended.yaml
Cluster İzleme
Kubernetes, "kubectl" komut satırı aracı ile yönetilebilir. Bu araç sayesinde, tüm node'ları, pod'ları ve servislere dair çok kapsamlı bilgiler edinebilirsiniz. Örneğin, cluster'ın genel durumunu görmek için şu komutu kullanabilirsiniz:
kubectl get nodes
Bu komut, cluster'daki tüm node'ların durumunu size gösterir.
Kubernetes ile Uygulama Dağıtımı ve Yönetimi
Kubernetes'in temel güçlerinden biri de uygulamaları hızlı bir şekilde dağıtma yeteneğidir. Bir pod, Kubernetes içinde çalışan en küçük uygulama birimidir. Pod'lar, uygulamanızın farklı parçalarını bir araya getirir. Uygulama dağıtımını şu şekilde yapabilirsiniz:
1. Yaml Dosyası Oluşturun
Kubernetes, genellikle YAML formatındaki konfigürasyon dosyalarını kullanır. Aşağıda bir örnek yaml dosyasını görebilirsiniz:
apiVersion: v1
kind: Pod
metadata:
name: my-app-pod
spec:
containers:
- name: my-app
image: my-app-image:latest
ports:
- containerPort: 80
2. Uygulamayı Başlatın
YAML dosyasını oluşturduktan sonra, aşağıdaki komutla pod'u başlatabilirsiniz:
kubectl apply -f my-app-pod.yaml
Bu, uygulamanızın Kubernetes üzerinde çalışmasını sağlayacaktır.
Kubernetes Güvenliği ve Ölçeklenebilirlik
Kubernetes'in en önemli avantajlarından biri, özelleştirilebilir güvenlik ve ölçeklenebilirlik özellikleridir. Cluster'ınızı daha güvenli hale getirmek için RBAC (Role-Based Access Control) kullanabilir ve ağ güvenliğini sağlamak için pod güvenlik politikaları oluşturabilirsiniz. Ayrıca, Kubernetes otomatik ölçekleme özellikleri sayesinde uygulamanızın büyüdükçe daha fazla kaynak almasını sağlayabilir.
1. RBAC Konfigürasyonu
RBAC, kullanıcılara ve uygulamalara belirli izinler atamanıza olanak tanır. Bu sayede, sadece yetkili kişilerin veya servislerin belirli kaynaklara erişmesini sağlarsınız. Aşağıda RBAC konfigürasyonuna dair bir örnek bulabilirsiniz:
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: default
name: pod-reader
rules:
- apiGroups: [""]
resources: ["pods"]
verbs: ["get", "list"]
Sonuç
Kubernetes, devops dünyasında vazgeçilmez bir araç haline geldi. Cluster oluşturmak, uygulama dağıtımını yönetmek ve güvenliği sağlamak, Kubernetes’in sunduğu özelliklerle oldukça kolay hale geliyor. Bu rehberin sonunda, Kubernetes cluster'ınızı oluşturmayı ve yönetmeyi öğrenmiş oldunuz. Elbette, Kubernetes çok geniş bir konu ve her zaman yeni şeyler öğrenmek mümkün.