Kubernetes (genellikle K8s olarak kısaltılır), konteynerleştirilmiş uygulamaların dağıtımını, yönetimini ve ölçeklenmesini otomatikleştirmek için tasarlanmış açık kaynaklı bir platformdur. Daha basit bir ifadeyle, Linux konteyner ana bilgisayarlarını kümelere gruplamanıza ve bunları yönetme zahmetini ortadan kaldırmanıza olanak tanır.
Ön koşullar
Bu kurulum için, AWS hesabında üç EC2 örneği başlattım, hepsi Ubuntu çalıştırıyor ve t3.medium örnek türünü kullanıyor. Plan şu şekilde:
- Bir örnek Kubernetes kontrol düzlemi olarak hizmet verecek.
- Diğer ikisi ise container’larımızın çalışacağı işçi düğümleri olarak görev yapacak.
AWS anahtar çiftinizin (örneğin, your-key.pem) SSH erişimine hazır olduğundan emin olun.
Adım 1: Sunucu Adlarını ve Ağ Yapılandırmasını Ayarlayın
Öncelikle, örnekleri düzgün bir şekilde iletişim kurabilecekleri şekilde yapılandırmamız gerekiyor. Ana bilgisayar adlarını ayarlayarak ve ağ ayarlarını güncelleyerek başlayalım.
1.1 Her Sunucuya SSH Erişimi
Her EC2 örneğine SSH kullanarak bağlanın. <instance-ip>’yi her örneğin genel IP’siyle değiştirin:
ssh -i your-key.pem ubuntu@<instance-ip>
Bunu üç düğüm için de tekrarlayın.
1.2 Sunucu Adlarını Ayarlayın
Her düğüme kolayca tanımlanabilmeleri için benzersiz bir ana bilgisayar adı atayın.
- Kontrol Düzlemi:
sudo hostnamectl set-hostname k8s-control-plane
- İşçi Düğümü 1:
sudo hostnamectl set-hostname k8s-worker-1
- İşçi Düğümü 2:
sudo hostnamectl set-hostname k8s-worker-2
Bu komutları ilgili düğümlerde çalıştırın.
1.3 Hosts Dosyasını Güncelleyin
Düğümlerin ana bilgisayar adlarını kullanarak iletişim kurabilmelerini sağlamak için, /etc/hosts dosyasını üç örnekte de güncelleyin. Dosyayı şu şekilde açın:
sudo nano /etc/hosts
Aşağıdaki satırları ekleyin ve IP adreslerini EC2 örneklerinizin özel IP adresleriyle değiştirin:
Kaydedin ve çıkın (Ctrl+O, Enter, Ctrl+X). Bunu her düğümde yapın.
Adım 2: Docker ve Kubernetes Bileşenlerini Tüm Düğümlere Yükleyin
Şimdi, gerekli yazılımları üç node’a da yükleyelim. Konteyner çalışma zamanı için Docker’a ve kubeadm, kubelet ve kubectl gibi Kubernetes araçlarına ihtiyacımız olacak.
2.1 Paketleri Güncelleyin
Öncelikle paket listesini yenileyip mevcut paketleri güncelleyin:
sudo apt update && sudo apt upgrade -y
2.2 Bağımlılıkları Yükleyin
Güvenli indirmeler için gerekli bazı paketleri yükleyin:
sudo apt install -y apt-transport-https ca-certificates curl
2.3 Docker’ı Yükleyin
Ardından Docker’ı kurun ve otomatik olarak başladığından emin olun:
sudo apt install -y docker.io
sudo systemctl enable docker
sudo systemctl start docker
2.4 Kubernetes Bileşenlerini Kurun
Kubernetes deposunu ekleyin ve temel araçları yükleyin:
curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /usr/share/keyrings/kubernetes-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt update
sudo apt install -y kubelet kubeadm kubectl
sudo systemctl enable kubelet
2.5 Swap’ı Devre Dışı Bırak
Kubernetes, takas etkinleştirildiğinde iyi çalışmaz, bu yüzden devre dışı bırakın:
sudo swapoff -a
sudo sed -i '/ swap / s/^/#/' /etc/fstab
2.6 Ağ için Çekirdek Modüllerini Etkinleştirin
Çekirdeği Kubernetes ağını destekleyecek şekilde yapılandırın:
sudo modprobe br_netfilter
echo 'br_netfilter' | sudo tee /etc/modules-load.d/br_netfilter.conf
Sysctl ayarlarını yapın:
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
EOF
Değişiklikleri uygulayın:
sudo sysctl --system
2. Adımın tamamını her düğümde tekrarlayın.
Adım 3: Kontrol Düzlemini Başlatın
Şimdi kontrol düzlemini ayarlayalım. Bunu yalnızca k8s-control-plane düğümünde çalıştırın:
sudo kubeadm init --pod-network-cidr=192.168.0.0/16
Bu komut kontrol düzlemini başlatır ve pod ağını kurar. Tamamlandığında, çıktıda bir kubeadm join komutu göreceksiniz. Bunu güvenli bir yere kopyalayın; daha sonra işçi düğümlerini bağlamak için buna ihtiyacınız olacak.
3.1 Kontrol Düzleminde kubectl’i yapılandırın
Kümeyi yönetebilmek için kubectl’i ayarlayın:
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 4: Calico Network Eklentisini Yükleyin
Pod ağını etkinleştirmek için kontrol düzlemine Calico CNI eklentisini yükleyin:
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
Tüm pod’ların çalıştığını kontrol edin:
kubectl get pods -n kube-system
Tüm pod’lar Çalışıyor durumunu gösterene kadar bekleyin.
Adım 5: İşçi Düğümlerini Dahil Edin
Çalışan düğümlerinize gidin (k8s-worker-1 ve k8s-worker-2). Adım 3’teki kubeadm join komutunu kullanın. Şuna benzer bir şey olacak:
sudo kubeadm join <control-plane-ip>:6443 --token <token> --discovery-token-ca-cert-hash sha256:<hash>
Eğer komutu kaybettiyseniz, kontrol düzleminde yeniden oluşturun:
kubeadm token create --print-join-command
Her iki çalışan düğümünde de birleştirme komutunu çalıştırın. Ardından, kontrol düzlemine geri dönün ve tüm düğümlerin bağlı olduğunu doğrulayın:
kubectl get nodes
Üç düğümün de Hazır durumunda olduğunu görmelisiniz.

Adım 6: Bir Uygulamayı Dağıtın ve Ölçeklendirin
Küme üzerinde bir Nginx sunucusu dağıtarak kümeyi test edelim:
6.1 Nginx’i Yükleyin
Bir dağıtım oluşturun:
kubectl create deployment nginx --image=nginx
6.2 Nginx’i NodePort Hizmeti Olarak Oluşturma
Nginx’i erişilebilir hale getirin:
kubectl expose deployment nginx --type=NodePort --port=80
6.3 Servis Ayrıntılarını Kontrol Edin
Nginx’in çalıştığı portu bulun:
kubectl get svc nginx
6.4 Nginx’i 5 Pod’a Ölçeklendirin
Dağıtımı ölçeklendirin:
kubectl scale deployment nginx --replicas=5
kubectl get pods -o wide
Çalışan düğümleriniz arasında yayılmış üç Nginx pod’u görmelisiniz.

Adım 7: Bir Pod’u Silin
Bir pod’u silerek bir başarısızlığı simüle edin. İlk olarak, pod’ları listeleyin:
kubectl get pods -o wide
Sonra birini silin:
kubectl delete pod <pod-name>
Kubernetes, üç replikayı korumak için otomatik olarak yedek bir pod kuracaktır.
Son Doğrulama
Her şeyin çalıştığından emin olalım:
- Küme düğümlerini kontrol edin:
kubectl get nodes
- Çalışan pod’ları kontrol edin:
kubectl get pods -o wide
- Nginx’i tarayıcınızdan erişerek test edin: http://<any-node-ip>:<nodeport>Replace
<nodeport>
with the port number fromkubectl get svc nginx
.
Yazının orijinalini buradan okuyabilirisniz.

Kariyerime 26 yıl önce başladım. Windows ve Linux sistemlerinin kurulumu, yapılandırılması, yönetimi ve bakımı dahil olmak üzere birden fazla sistem üzerinde uzmanlaştım.
Açık kaynak dünyasındaki en son gelişmelerden haberdar olmaktan ve Linux hakkındaki en son araçları, özellikleri ve hizmetleri denemekten hoşlanıyorum.
Son 6 yıldır sistem ve ağ yöneticisi olarak görev yapıyorum ayrıca Pardus Dönüşüm Projesini yönetiyorum ve Pardus İşletim Sisteminin yaygınlaşması adına uğraş gösteriyorum.
Boş zamanlarımda açık kaynaklı uygulamaların Türkçe çevirisine katılıyorum ve The Document Foundation üyesiyim.