Kubernetes Cluster Kurulumu: Adım Adım Kılavuz ve Üretim Senaryoları
Bu kılavuz, sıfırdan bir Kubernetes cluster'ı kurma sürecini, temel bileşenlerini ve üretim ortamlarında karşılaşabileceğiniz pratik senaryoları detaylandırmaktadır. Amaç, küresel ölçekte dağıtık uygulamaların yönetimi için güçlü bir temel oluşturmaktır.
Kubernetes Temel Bileşenleri
Bir Kubernetes cluster'ı, temel olarak iki ana bölümden oluşur: Kontrol Düzlemi (Control Plane) ve Çalışma Düzlemi (Worker Nodes).
Kontrol Düzlemi (Control Plane)
Cluster'ın beyni olarak görev yapar. Küresel durum bilgisini yönetir, kararları alır ve cluster'daki eylemleri tetikler. Ana bileşenleri şunlardır:
- kube-apiserver: Cluster'ın ön yüzü. Tüm API isteklerini işler ve doğrular.
- etcd: Cluster'ın tutarlı ve dağıtık anahtar-değer deposu. Tüm cluster verilerini depolar.
- kube-scheduler: Yeni oluşturulan Pod'ları hangi Çalışma Düzlemine yerleştireceğine karar verir.
- kube-controller-manager: Çeşitli kontrol döngülerini çalıştırır (örneğin, Node Controller, Replication Controller).
- cloud-controller-manager: Bulut sağlayıcısına özgü denetleyicileri yönetir (örneğin, LoadBalancer, Storage).
Çalışma Düzlemi (Worker Nodes)
Uygulama Pod'larının çalıştığı sunuculardır. Her Çalışma Düzlemi aşağıdaki bileşenleri içerir:
- kubelet: Her Düğümde çalışan bir ajandır. Kontrol Düzleminden Pod'ları alır ve Pod'ların çalıştığından emin olur.
- kube-proxy: Her Düğümde ağ kurallarını koruyan bir ağ vekilidir. Pod'lara ağ iletişimi sağlar.
- Container Runtime: Konteynerleri çalıştırmaktan sorumlu yazılımdır (örneğin, Docker, containerd, CRI-O).
Kubernetes Cluster Kurulumu (kubeadm ile)
Bu bölümde, kubeadm aracını kullanarak temel bir Kubernetes cluster'ı nasıl kuracağımızı adım adım inceleyeceğiz. kubeadm, Kubernetes kurulumunu kolaylaştırmak için tasarlanmış bir araçtır.
Ön Gereksinimler:
- En az iki Linux makinesi (biri Kontrol Düzlemi, diğeri Çalışma Düzlemi için).
- Makinelere SSH erişimi.
- Her makinede internet erişimi ve gerekli portların açık olması.
- Her makinede bir container runtime (örneğin,
containerd) kurulu olmalı.
Kurulum Adımları:
1. Container Runtime Kurulumu (Örnek: containerd)
Her iki düğümde de containerd'yi kurun. Paket yöneticisi kullanarak veya doğrudan indirme ile yapılabilir. containerd yapılandırmasını Kubernetes ile uyumlu hale getirmek önemlidir.
# containerd kurulumu (Ubuntu/Debian)
sudo apt-get update
sudo apt-get install -y containerd
# Yapılandırma dosyasını oluşturma
sudo mkdir -p /etc/containerd
sudo containerd config default | sudo tee /etc/containerd/config.toml
# cgroup driver'ı systemd olarak ayarlama (Kubernetes için önerilir)
sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml
# containerd servisini yeniden başlatma
sudo systemctl restart containerd
2. Kubernetes Bileşenlerini Kurulumu
Her iki düğümde de kubeadm, kubelet ve kubectl paketlerini kurun.
# Kubernetes deposunu ekleme
sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.29/deb/Release.key | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/kubernetes-archive-keyring.gpg
echo 'deb [signed-by=/etc/apt/trusted.gpg.d/kubernetes-archive-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.29/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
# Kurulum
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
# kubelet ve kubeadm'nin otomatik başlatılmasını engelleme (kurulum aşamasında)
sudo apt-mark hold kubelet kubeadm kubectl
3. Kontrol Düzlemi Başlatma (Master Node)
Kontrol Düzlemi düğümünde kubeadm init komutunu çalıştırın. Bu komut, Kontrol Düzlemi bileşenlerini başlatacak ve bir kubeconfig dosyası oluşturacaktır.
sudo kubeadm init --pod-network-cidr=192.168.0.0/16
Komut başarıyla tamamlandığında, cluster'ı kullanabilmek için yapmanız gereken adımları içeren bir çıktı alacaksınız. Bu çıktıdaki komutları çalıştırarak kubectl'i yapılandırın ve çalışan düğümü cluster'a dahil edin.
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
4. Ağ Eklentisi (CNI) Kurulumu
Kubernetes'in Pod'lar arası ağ iletişimini sağlaması için bir Container Network Interface (CNI) eklentisine ihtiyacı vardır. Popüler seçeneklerden biri Calico'dur.
# Calico CNI eklentisini uygulayın
kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.27.0/manifests/calico.yaml
Bu komut, Calico Pod'larını oluşturacak ve cluster'ın ağ altyapısını kuracaktır.
5. Çalışma Düzlemi Düğümünü Dahil Etme (Worker Node)
Kontrol Düzlemi başlatıldıktan sonra, size bir kubeadm join komutu verilecektir. Bu komutu Çalışma Düzlemi düğümünde çalıştırarak cluster'a katılmasını sağlayın.
sudo kubeadm join :6443 --token \
--discovery-token-ca-cert-hash sha256:
Token ve hash değerleri, kubeadm init komutunun çıktısında yer alır.
6. Cluster Durumunu Kontrol Etme
Kontrol Düzlemi düğümünde aşağıdaki komutu çalıştırarak tüm düğümlerin hazır olduğunu doğrulayın.
kubectl get nodes
Tüm düğümlerin Ready durumunda olması beklenir.
Üretim Senaryoları ve İleri Konular
Senaryo 1: Yüksek Erişilebilirlik (High Availability - HA) Kontrol Düzlemi
Tek bir Kontrol Düzlemi düğümü, tek hata noktası (Single Point of Failure - SPOF) oluşturur. Üretim ortamları için HA Kontrol Düzlemi kurulumu kritiktir. Bu, birden fazla master düğümü ve harici bir yük dengeleyici (load balancer) gerektirir. etcd veritabanı da kümelenmiş olmalıdır.
Teknik Detay: HA kurulumu genellikle kubeadm ile `kubeadm init --control-plane-endpoint