1. Kubernetes Nedir ve Neden Kullanılır?
Kubernetes, container’ları yönetmek için kullanılan açık kaynaklı bir orkestrasyon platformudur. Yani, birden fazla konteyneri (Docker gibi) yönetmek ve bu konteynerlerin tüm kaynaklarını verimli bir şekilde kullanmak amacıyla tasarlanmıştır. Kubernetes, container’larınızın *yük dengeleme, ölçeklenebilirlik* ve *kendi kendine onarım* gibi ihtiyaçlarını karşılar.
Şimdi, Kubernetes'in temel işlevlerine bir göz atalım:
- Ölçeklenebilirlik: Yüksek trafikli uygulamalarınızda otomatik olarak yeni konteynerler ekleyip çıkarabilirsiniz.
- Otomatik Sağlık Kontrolleri: Kubernetes, container’larınızın durumunu sürekli olarak izler ve sorun oluştuğunda yenisini otomatik olarak başlatır.
- Yük Dengeleme: Tüm container’lar arasında eşit yük paylaşımı yapar ve sistemin verimli çalışmasını sağlar.
2. Kubernetes Kurulumuna Başlamak
Kubernetes’i kurmadan önce, bazı hazırlıklar yapmamız gerekiyor. En önemli şeylerden biri, Kubernetes cluster’ınız için uygun bir ortam oluşturmak. Her şey hazır olduğunda, kurulum işlemi oldukça basittir. İşte adım adım Kubernetes kurulumunun nasıl yapılacağı:
Adım 1: Gerekli Araçları Yükleyin
Kubernetes’i kurmadan önce, bazı araçları yüklemeniz gerekiyor. İlk olarak, kubectl ve kubeadm’yi indirmeniz gerek.
# Kubectl Yükleme
curl -LO https://storage.googleapis.com/kubernetes-release/release/`curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt`/bin/linux/amd64/kubectl
chmod +x ./kubectl
sudo mv ./kubectl /usr/local/bin/kubectl
# Kubeadm Yükleme
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
sudo apt-get install -y kubeadm
Adım 2: Cluster Başlatma
Şimdi, Kubernetes cluster’ınızı kurmaya başlıyoruz. İlk olarak, kubeadm init komutunu çalıştırarak ana node’u başlatın.
sudo kubeadm init --pod-network-cidr=10.244.0.0/16
Bu komut, Kubernetes master node'unu kuracak. Kurulumdan sonra, size bir kubeconfig dosyası verilecek. Bu dosya, Kubernetes komutlarını yönetmek için gereklidir. Aşağıdaki komutu kullanarak kubeconfig dosyasını ayarlayabilirsiniz:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
Adım 3: Pod Ağı Yükleyin
Pod’lar arasında iletişimi sağlamak için bir ağ çözümü kurmamız gerekiyor. Genellikle, Flannel ya da Calico gibi popüler ağ eklentileri kullanılır. İşte Flannel yüklemek için komut:
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
3. Kubernetes Cluster Yönetimi
Kubernetes’i kurmak kolaydı, şimdi ise yönetimi için önemli birkaç ipucu vereceğiz. Kubernetes cluster’ınızı yönetmek için kubectl komut satırı aracını kullanabilirsiniz. Bu araç sayesinde pod’ları izleyebilir, yeni hizmetler ekleyebilir ve mevcut kaynakları yönetebilirsiniz.
Pod’ları ve Servisleri Yönetmek
Kubernetes üzerinde pod oluşturmak oldukça basittir. İşte basit bir pod başlatma komutu:
kubectl run my-app --image=nginx --port=80
Bu komut, `nginx` imajını kullanarak yeni bir pod oluşturacaktır. Pod durumunu kontrol etmek için şu komutu kullanabilirsiniz:
kubectl get pods
Cluster Durumunu İzlemek
Cluster'ınızın genel durumunu görmek için şu komutu kullanabilirsiniz:
kubectl cluster-info
Yük Dengeleyici (Load Balancer) Kullanmak
Cluster’ınızda birden fazla pod çalıştırıyorsanız, bu pod’lar arasında yük dengelemesi yapmak önemlidir. Kubernetes Service kullanarak bu işlemi yapabilirsiniz. İşte bir servis oluşturma komutu:
kubectl expose pod my-app --type=LoadBalancer --name=my-service
Bu komut, `my-app` pod’unu dışarıya açacak ve ona bir yük dengeleleyici ekleyecektir.
4. Cluster Ölçeklendirme ve Yönetimi
Kubernetes’in en güçlü özelliklerinden biri otomatik ölçeklendirme yapabilmesidir. Eğer uygulamanız yüksek trafikli bir dönem geçiriyorsa, Kubernetes otomatik olarak daha fazla pod başlatabilir. Yüksek trafikli ortamlarda bu özellik oldukça faydalıdır.
İşte pod sayısını manuel olarak artırmak için komut:
kubectl scale deployment my-app --replicas=5
5. Kubernetes'i Kullanmaya Devam Etmek
Kubernetes öğrenmek bir süreçtir, ancak zamanla bu güçlü platformu daha iyi anlayacak ve etkili bir şekilde kullanabileceksiniz. Cluster yönetimi ile ilgili daha fazla özellik keşfettikçe, Kubernetes'in sağladığı esneklik ve otomasyonun ne kadar değerli olduğunu göreceksiniz.
Son olarak, Kubernetes'i daha iyi öğrenebilmek için bolca pratik yapmanızı tavsiye ederim. Her yeni uygulama ve her yeni pod ile bu platformun derinliklerine daha çok ineceksiniz.