Kubernetes (k8s) Cluster kurulumu: Kubeadm rehberi

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

Elbette, uzman bir sistem yöneticisi perspektifiyle Kubeadm kullanarak Kubernetes (k8s) cluster kurulumunu anlatan teknik bir blog yazısı aşağıdadır:






Kubeadm ile Kubernetes Cluster Kurulum Rehberi


Kubeadm ile Kubernetes Cluster Kurulum Rehberi

Kubernetes (k8s), container tabanlı iş yüklerini ve servisleri otomatikleştirmek, dağıtmak ve ölçeklendirmek için kullanılan açık kaynaklı bir platformdur. Günümüz DevOps ve mikroservis mimarilerinde vazgeçilmez bir araç haline gelmiştir. Bir Kubernetes cluster’ı kurmanın birden fazla yolu olsa da, kubeadm, üretim ortamına yakın, kararlı ve kolay yönetilebilir bir cluster oluşturmak için Kubernetes topluluğu tarafından resmi olarak desteklenen bir araçtır.

Bu rehberde, Ubuntu tabanlı makineler üzerinde kubeadm kullanarak temel bir Kubernetes cluster’ı nasıl kuracağınızı adım adım anlatacağım. Bu kurulumda bir kontrol düzlemi (master) ve birden fazla çalışan (worker) düğümü olacaktır.

Ön Gereksinimler

Kuruluma başlamadan önce aşağıdaki gereksinimleri karşılamanız gerekmektedir:

  • İşletim Sistemi: Her düğümde Ubuntu 20.04 LTS veya 22.04 LTS (veya benzeri bir Debian tabanlı Linux dağıtımı).
  • Donanım:
    • Kontrol Düzlemi Düğümü: En az 2 CPU/vCPU, 2GB RAM (Üretim ortamları için daha fazlası önerilir).
    • Çalışan Düğümleri: En az 1 CPU/vCPU, 1GB RAM (Üretim ortamları için daha fazlası önerilir).
  • Ağ:
    • Tüm makineler arasında tam ağ bağlantısı. Güvenlik duvarları (firewall) kapalı veya gerekli portlar açık olmalı (örn: 6443, 2379-2380, 10250, 10257, 10259).
    • Her düğüm için benzersiz hostname.
    • Her düğüm için statik IP adresleri önerilir.
  • Diğer: İnternet erişimi.

Adım 1: Tüm Düğümleri Hazırlama (Kontrol Düzlemi ve Çalışan Düğümleri)

Bu adımlar, hem kontrol düzlemi düğümünde hem de tüm çalışan düğümlerinde tekrarlanmalıdır.

1.1 Swap’ı Kapatma

Kubernetes, performans sorunlarını önlemek için swap’ın kapalı olmasını gerektirir. Swap’ı kalıcı olarak devre dışı bırakmak için:


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

1.2 Gerekli Kernel Modüllerini Yükleme ve Sysctl Ayarları

Kubernetes için gerekli olan bazı kernel modüllerini etkinleştirmemiz ve sysctl ayarlarını yapmamız gerekiyor. Bu, pod’ların ağ trafiğini doğru şekilde yönlendirmesi için önemlidir.


sudo tee /etc/modules-load.d/k8s.conf <

1.3 Container Runtime Kurulumu (Containerd)

Kubernetes, container'ları çalıştırmak için bir Container Runtime Interface (CRI) uyumlu runtime'a ihtiyaç duyar. Bu rehberde popüler ve hafif olan Containerd'yi kullanacağız.


# Gerekli paketleri kurma
sudo apt update
sudo apt install -y ca-certificates curl gnupg lsb-release

# Docker'ın resmi GPG anahtarını ekleme (Containerd için gerekli)
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

# Docker apt deposunu ekleme
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

# Containerd'yi kurma
sudo apt update
sudo apt install -y containerd.io

# Containerd varsayılan yapılandırmasını oluşturma ve systemd cgroup driver'ı etkinleştirme
sudo containerd config default | sudo tee /etc/containerd/config.toml
sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/g' /etc/containerd/config.toml

# Containerd servisini yeniden başlatma ve etkinleştirme
sudo systemctl restart containerd
sudo systemctl enable containerd
    

1.4 Kubeadm, Kubelet ve Kubectl Kurulumu

Kubernetes araçlarını kurmak için Kubernetes apt deposunu ekleyeceğiz.


# Kubernetes GPG anahtarını indirme ve ekleme
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.28/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg

# Kubernetes apt deposunu ekleme
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.28/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list

# Paket listesini güncelleme ve kubeadm, kubelet, kubectl kurma
sudo apt update
sudo apt install -y kubelet kubeadm kubectl

# Paketlerin otomatik güncellenmesini engelleme (sürüm kilitleme)
sudo apt-mark hold kubelet kubeadm kubectl
    

Adım 2: Kontrol Düzlemini Başlatma (Sadece Kontrol Düzlemi Düğümü)

Tüm düğümlerdeki ön hazırlıklar tamamlandıktan sonra, sadece kontrol düzlemi düğümünde kubeadm ile cluster'ı başlatabiliriz.


# 'YOUR_POD_NETWORK_CIDR' yerine kullanacağınız Pod Network eklentisine uygun bir CIDR bloğu girin (örn: Calico için 192.168.0.0/16)
# 'YOUR_CONTROL_PLANE_IP' yerine kontrol düzlemi düğümünün IP adresini girin
sudo kubeadm init --pod-network-cidr=192.168.0.0/16 --control-plane-endpoint=YOUR_CONTROL_PLANE_IP
    

Yukarıdaki komutu çalıştırdıktan sonra, çıktı size bir sonraki adımda `kubectl`'yi nasıl yapılandıracağınızı ve çalışan düğümleri nasıl ekleyeceğinizi gösterecektir. `kubeadm join` komutunu bir yere not edin.

2.1 Kubectl Yapılandırması

Çıktıdaki yönergeleri takip ederek `kubectl`'yi kullanabilmek için yapılandırma dosyalarını 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
    

2.2 Pod Ağ Eklentisi (CNI) Kurulumu

Pod'ların birbirleriyle ve dış dünya ile iletişim kurabilmesi için bir Pod Ağ Eklentisi (Container Network Interface - CNI) kurmanız gerekir. Bu rehberde Calico'yu kullanacağız.


# Calico'nun en güncel sürümünü kontrol etmek için https://docs.tigera.io/calico/latest/manifests/calico.yaml adresini ziyaret edin.
kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.26.1/manifests/calico.yaml
    

Birkaç dakika bekledikten sonra, Calico pod'larının ayağa kalktığını ve `kube-system` namespace'indeki tüm pod'ların `Running` durumunda olduğunu görmelisiniz:


kubectl get pods --all-namespaces
    

Adım 3: Çalışan Düğümleri Katma (Sadece Çalışan Düğümleri)

Kontrol düzlemi düğümünde `kubeadm init` komutunu çalıştırdığınızda verilen `kubeadm join` komutunu kullanarak çalışan düğümleri kümeye dahil edin. Bu komutu her çalışan düğümünde çalıştırmanız gerekmektedir.


# Örnek 'kubeadm join' komutu (sizin çıktınızdaki komutu kullanın)
sudo kubeadm join YOUR_CONTROL_PLANE_IP:6443 --token YOUR_TOKEN --discovery-token-ca-cert-hash sha256:YOUR_HASH
    

Not: `kubeadm join` token'ları varsayılan olarak 24 saat geçerlidir. Eğer token süresi dolarsa, kontrol düzlemi düğümünde yeni bir join komutu oluşturabilirsiniz:


sudo kubeadm token create --print-join-command
    

Adım 4: Küme Sağlığını Kontrol Etme

Kontrol düzlemi düğümüne geri dönerek tüm düğümlerin kümeye başarıyla katılıp katılmadığını kontrol edebilirsiniz:


kubectl get nodes
    

Tüm düğümlerinizin `Ready` durumunda olduğunu görmelisiniz. Ayrıca, sistem pod'larının da düzgün çalıştığını kontrol edebilirsiniz:


kubectl get pods -A
    

Bu komut, tüm namespace'lerdeki pod'ları listeler. `kube-system` namespace'indeki tüm pod'ların `Running` veya `Completed` durumunda olması gerekmektedir.

Sonuç

Tebrikler! Kubeadm kullanarak temel bir Kubernetes cluster'ı başarıyla kurdunuz. Artık bu cluster üzerinde uygulamalarınızı dağıtabilir, yönetebilir ve ölçeklendirebilirsiniz.

Kurulum sonrası atabileceğiniz bazı adımlar şunlardır:

  • Kubernetes Dashboard kurulumu.
  • Depolama çözümleri (Persistent Volumes) entegrasyonu.
  • Helm gibi paket yöneticileriyle uygulama dağıtımı.
  • İzleme ve loglama araçları (Prometheus, Grafana, ELK Stack) entegrasyonu.
  • Yüksek erişilebilirlik (HA) için birden fazla kontrol düzlemi düğümü ekleme.

Kubernetes dünyası geniş ve öğrenilecek çok şey var. Bu kurulum, yolculuğunuzda sağlam bir başlangıç noktası olacaktır.


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