Kubernetes (k8s) Cluster kurulumu: Kubeadm rehberi

📅 27 Ocak 2026Emre Karabulut
⏱️ Yaklaşık 3 dakikalık okuma süresi






Kubeadm ile Kubernetes Cluster Kurulum Rehberi


Kubeadm ile Üretim Ortamına Yakın Kubernetes Cluster Kurulumu

Kubernetes, konteynerize edilmiş uygulamaları otomatik olarak dağıtmak, ölçeklemek ve yönetmek için güçlü bir platformdur. Bir Kubernetes kümesi kurmanın birçok yolu olsa da, Kubeadm, resmi ve en çok tercih edilen yöntemlerden biridir. Bu rehberde, Kubeadm kullanarak temel bir Kubernetes kümesini adım adım nasıl kuracağınızı detaylı bir şekilde anlatacağız. Rehber, üretim ortamına yakın bir yapılandırma sağlamayı hedefler.

Ön Koşullar

Kuruluma başlamadan önce aşağıdaki gereksinimleri karşıladığınızdan emin olun:

  • İşletim Sistemi: Ubuntu 20.04/22.04 LTS veya CentOS 7/8. Bu rehberde Ubuntu 22.04 referans alınacaktır.
  • Sunucular: En az 2 sunucu (1 Master Düğüm, 1 Worker Düğüm). Fiziksel sunucular, sanal makineler veya bulut örnekleri olabilir.
  • Donanım Gereksinimleri (Her Düğüm için minimum):
    • 2 vCPU
    • 2 GB RAM
    • 20 GB Disk alanı
  • Ağ: Düğümler arasında tam ağ bağlantısı (internete erişim).
  • Hostname’ler: Her düğüm için benzersiz bir hostname.
  • Ayrıcalıklar: Tüm adımları gerçekleştirmek için root ayrıcalıklarına sahip veya sudo yetkisi olan bir kullanıcı.
  • Açık Portlar:
    • Master Düğüm: 6443 (Kubernetes API sunucusu), 2379-2380 (etcd), 10250 (Kubelet API), 10251 (Kube-scheduler), 10252 (Kube-controller-manager)
    • Worker Düğümler: 10250 (Kubelet API), 30000-32767 (NodePort hizmetleri için)

Tüm Düğümlerde Ortak Adımlar (Master ve Worker)

Aşağıdaki adımlar, hem Master hem de Worker düğümlerinde uygulanmalıdır.

1. Sistem Güncellemesi ve Temel Paket Kurulumu

sudo apt update && sudo apt upgrade -y
sudo apt install -y apt-transport-https ca-certificates curl gnupg lsb-release

2. Swap Alanını Devre Dışı Bırakma

Kubernetes, kararlılık ve performans nedenleriyle swap alanının devre dışı bırakılmasını önerir.

sudo swapoff -a
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab

3. Kernel Modüllerini ve Sysctl Parametrelerini Yapılandırma

Kubernetes ağının düzgün çalışması için bazı kernel modüllerinin yüklenmesi ve sysctl parametrelerinin ayarlanması gerekir.

sudo modprobe overlay
sudo modprobe br_netfilter

# Gerekli sysctl parametrelerini ayarla
sudo tee /etc/modules-load.d/k8s.conf <

4. Container Runtime Kurulumu (Containerd)

Kubernetes, Pod'ları çalıştırmak için bir Container Runtime Interface (CRI) uyumlu bir çalışma zamanına ihtiyaç duyar. Containerd, Docker'a göre daha hafif ve Kubernetes ile daha entegre bir seçenektir.

Docker'ın GPG anahtarını ve deposunu ekleyin:

sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update

Containerd'yi kurun:

sudo apt install -y containerd.io

Containerd yapılandırma dosyasını oluşturun ve systemd cgroup sürücüsünü etkinleştirin:

sudo mkdir -p /etc/containerd
sudo containerd config default | sudo tee /etc/containerd/config.toml

# SystemdCgroup = true olarak değiştirin
sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/g' /etc/containerd/config.toml

Containerd servisini yeniden başlatın ve etkinleştirin:

sudo systemctl restart containerd
sudo systemctl enable containerd

5. Kubeadm, Kubelet ve Kubectl Kurulumu

Bu araçlar, Kubernetes kümesini yönetmek için temel bileşenlerdir.

Kubernetes GPG anahtarını ve deposunu ekleyin:

sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.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

Not: kubernetes-xenial, Kubernetes'in Ubuntu üzerinde kullandığı bir depodur. Ubuntu sürümünüz ne olursa olsun genellikle bu şekilde kullanılır.

Kubeadm, Kubelet ve Kubectl'yi kurun:

sudo apt update
sudo apt install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl

apt-mark hold komutu, bu paketlerin otomatik olarak yükseltilmesini engeller, bu da kararlılık için önemlidir.

Master Düğümünde Yapılacaklar

Sadece Master düğümünde aşağıdaki adımları uygulayın.

1. Kubeadm ile Küme Başlatma

kubeadm init komutu, kontrol düzlemi bileşenlerini (API sunucusu, etcd, scheduler, controller-manager) başlatır. --pod-network-cidr parametresi, Pod'lar için kullanılacak ağ aralığını belirtir ve bu, seçeceğiniz ağ eklentisi (CNI) ile uyumlu olmalıdır. Flannel için genellikle 10.244.0.0/16 kullanılır.

sudo kubeadm init --pod-network-cidr=10.244.0.0/16

Bu komutun çıktısında, worker düğümlerinin kümeye katılması için kullanacağınız kubeadm join komutu yer alacaktır. Bu komutu not alın!

2. Kubectl için Yapılandırma

Kubernetes kümesini yönetmek için kubectl komutunu kullanabilmeniz için yapılandırma dosyasını kopyalamanız gerekir.

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

3. Ağ Eklentisi (CNI) Kurulumu

Pod'lar arasında iletişimi sağlamak için bir ağ eklentisi kurmanız gerekir. Bu rehberde popüler ve kurulumu kolay olan Flannel'ı kullanacağız. Diğer popüler seçenekler arasında Calico, Cilium vb. bulunur.

kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml

Ağ eklentisi kurulduktan sonra, Master düğümünüzün durumunun NotReady'den Ready'ye değiştiğini göreceksiniz. Bu biraz zaman alabilir.

4. Düğüm Durumunu Kontrol Etme

Master düğümünün durumunu kontrol edin:

kubectl get nodes

Başlangıçta Master düğümünüz NotReady durumunda görünebilir. Ağ eklentisi kurulduktan ve Pod'lar çalışmaya başladıktan sonra Ready durumuna geçecektir.

Worker Düğümlerinde Yapılacaklar

Her bir Worker düğümünde aşağıdaki adımı uygulayın.

1. Cluster'a Katılma

Master düğümünde kubeadm init komutunun çıktısında size verilen kubeadm join komutunu Worker düğümlerinde çalıştırın. Örnek bir komut aşağıdaki gibi olacaktır (kendi token ve hash değerlerinizle değiştirin):

sudo kubeadm join <MASTER_IP>:6443 --token <TOKEN> --discovery-token-ca-cert-hash sha256:<HASH>

<MASTER_IP> yerine Master düğümünüzün IP adresini, <TOKEN> ve <HASH> yerine kendi değerlerinizi yazın.

Eğer kubeadm join komutunu kaybettiyseniz, Master düğümünde aşağıdaki komutu çalıştırarak yeni bir token oluşturabilir ve katılma komutunu alabilirsiniz:

sudo kubeadm token create --print-join-command

Kurulumu Doğrulama

Master düğümüne geri dönerek tüm düğümlerin kümeye katılıp katılmadığını ve hazır olup olmadığını kontrol edin:

kubectl get nodes

Tüm düğümlerinizin durumu Ready olarak görünmelidir.

Kümedeki tüm namespace'lerde çalışan Pod'ları kontrol edin:

kubectl get pods --all-namespaces

kube-system namespace'indeki Pod'ların (CoreDNS, kube-flannel, vs.) Running durumda olduğunu görmelisiniz.

Önemli Notlar ve Sonraki Adımlar

  • Master Düğümdeki Taint: Varsayılan olarak, Master düğüm üzerinde Pod'ların zamanlanmasını engelleyen bir NoSchedule taint'i bulunur. Eğer Master düğümünüzde uygulama Pod'ları çalıştırmak istiyorsanız, bu taint'i kaldırabilirsiniz:
    kubectl taint nodes <master-node-adı> node-role.kubernetes.io/control-plane:NoSchedule-

    (Eski versiyonlarda node-role.kubernetes.io/master:NoSchedule- olabilir.)

  • Kubernetes Dashboard: Kümenizi görsel olarak yönetmek için Kubernetes Dashboard kurmayı düşünebilirsiniz.
  • Depolama Sınıfları (StorageClasses): Persistent Volume'lar için depolama sınıflarını yapılandırmanız gerekecektir.
  • Yüksek Erişilebilirlik (HA): Bu rehber tek bir Master düğümü ile temel bir kurulumu kapsamaktadır. Üretim ortamları için birden fazla Master düğümü ile Yüksek Erişilebilirlik (HA) kurulumu planlamak önemlidir. Kubeadm, bu tür kurulumları da destekler.
  • Güvenlik: Kümenizin güvenliğini sağlamak için RBAC (Role-Based Access Control) politikalarını, ağ politikalarını ve diğer güvenlik önlemlerini yapılandırmayı unutmayın.

Sonuç

Tebrikler! Kubeadm kullanarak temel bir Kubernetes kümesini başarıyla kurdunuz. Bu temel kurulumla, konteynerize edilmiş uygulamalarınızı dağıtabilir, yönetebilir ve ölçeklendirebilirsiniz. Kubernetes dünyasına attığınız bu ilk adımla, daha karmaşık ve güçlü yapılandırmaları keşfetmeye hazırsınız. Unutmayın, Kubernetes dinamik bir platformdur ve sürekli öğrenme gerektirir.


155f52c7e9c3ea8a325b44ff056acd50611fa5e706241e72fc0165362c08111b?s=64&d=mm&r=g
Emre Karabulut
📊 Bu yazı 50 kez okundu.