Kubernetes Öğrenme Yolculuğu
- Murat Akpınar
- Kubernetes öğrenme yolculuğu
- 13 Ağustos 2026
İçindekiler
Kubernetes öğrenmeye çalışan çoğu kişi aynı yerden başlıyor: internetten bir YAML dosyası kopyalıyor, kubectl apply diyor, çalışınca seviniyor, çalışmayınca ne olduğunu anlamıyor. Ben de öyle başladım. Sorun şu ki Kubernetes bir komut seti değil, bir model; o modeli anlamadan ezberlenen komutlar ilk arızada işe yaramıyor.
Bu seride konuyu baştan ve sırayla ele alacağız: önce Kubernetes’in neden var olduğunu ve neyden oluştuğunu, sonra kümeyi kurup üzerinde uygulama çalıştırmayı, en sonunda da o kümeyi üretimde ayakta tutmak için gerekenleri. Her başlık kendi yazısı olacak; bu yazı da hepsinin içindekiler sayfası.
Blogda daha önce yayımladığım Ansible ile RKE2 küme kurulumu, Longhorn ve Lens Desktop yazıları bu yolculuğun parçası. Aşağıdaki listede linkli olan başlıklar yayımlanmış yazılardır; diğerleri sırası geldikçe linke dönüşecek.
Yol Haritası
Kabaca dört evre var: temel kavramlar ve mimari (1-2), kümeyi kurup ilk iş yüklerini çalıştırmak (3-5), altyapı katmanları — ağ, depolama, yapılandırma, kaynak yönetimi (6-9) ve üretime hazırlık (10-14). Sırayla okumak en verimlisi, ama her yazı tek başına da ayakta duracak.
Başlıkları seçerken kendi deneyimimin yanında CNCF’in resmî CKA müfredatını da ölçüt aldım; sınav hedeflemeseniz bile o müfredat “bir küme yöneticisinin bilmesi gereken” konuların iyi bir listesi. Dikkat çeken bir ayrıntı: CKA’da en ağır domain %30 ile sorun giderme. Aşağıdaki 11. başlığın neden bu kadar kabarık olduğunu bu açıklıyor — işin çoğu orada geçiyor.
- Giriş: Kubernetes Nedir, Ne Zaman Gerekir?
1.1 Konteyner nedir, sanal makineden farkı nedir?
1.2 Docker’dan orkestrasyona: tek sunucuda çözülemeyen problemler
1.3 Kubernetes’e gerçekten ihtiyacınız var mı? Gereksiz olduğu durumlar - Mimari: Küme Neyden Oluşur?
2.1 Control plane bileşenleri: kube-apiserver, etcd, scheduler, controller-manager
2.2 Worker düğüm bileşenleri: kubelet, kube-proxy, konteyner çalışma zamanı
2.3 Deklaratif model: istenen durum, gözlenen durum ve uzlaşma döngüsü
2.4 Konteyner çalışma zamanları: dockershim’in 1.24’te kaldırılması, containerd ve CRI-O
2.5 Genişletme arayüzleri: CRI, CNI ve CSI kümenin neresine takılır? - Kümeyi Kurmak
3.1 Öğrenme kümesi: kind veya k3s ile tek düğümde başlamak
3.2 Ansible ile RKE2 Kubernetes Kümesi Kurulumu
3.3 Dağıtım seçenekleri: kubeadm, RKE2, k3s ve yönetilen servisler
3.4 kubeconfig, bağlam (context) ve birden fazla kümeyle çalışmak
3.5 Kurulum sonrası ilk doğrulama: küme gerçekten sağlıklı mı? - kubectl ve Nesne Modeli
4.1 kubectl temelleri:get,describe,logs,exec
4.2 Pod nedir? Tek konteynerden sidecar ve init konteyner desenlerine
4.3 Namespace, label, selector ve annotation
4.4 Manifest anatomisi: apiVersion, kind, metadata, spec, status
4.5 Lens Desktop ile kümeyi görselleştirmek - Uygulama Çalıştırmak: İş Yükü Nesneleri
5.1 ReplicaSet ve Deployment: kopyaları kim ayakta tutuyor?
5.2 Güncelleme stratejileri: rolling update, rollback, maxSurge ve maxUnavailable
5.3 StatefulSet: kimliği ve diski olan uygulamalar
5.4 DaemonSet, Job ve CronJob
5.5 Sağlık kontrolleri: liveness, readiness ve startup probe farkı - Ağ: Trafiği Pod’a Ulaştırmak
6.1 Kubernetes ağ modeli ve CNI eklentileri
6.2 Service türleri: ClusterIP, NodePort, LoadBalancer ve arkalarındaki EndpointSlice
6.3 CoreDNS: küme içi ad çözümleme ve servis keşfi
6.4 Ingress controller ve TLS sonlandırma
6.5 Gateway API: Ingress’in halefi — Ingress desteklenmeye devam ediyor ama yeni özellik almıyor
6.6 NetworkPolicy: varsayılan olarak her pod herkesle konuşur - Depolama: Veriyi Kalıcı Kılmak
7.1 Volume, PersistentVolume ve PersistentVolumeClaim ilişkisi; erişim modları ve geri kazanım (reclaim) politikaları
7.2 StorageClass ve dinamik sağlama
7.3 Longhorn ile dağıtık blok depolama
7.4 Anlık görüntü, yedekleme ve geri dönüş tatbikatı - Yapılandırma ve Gizli Bilgi
8.1 ConfigMap ile yapılandırmayı imajdan ayırmak
8.2 Secret neden şifreleme değildir: base64, etcd ve at-rest şifreleme
8.3 Ortam değişkeni mi, dosya olarak bağlamak mı?
8.4 Harici gizli bilgi yönetimi: External Secrets ve Vault - Zamanlama ve Kaynak Yönetimi
9.1 requests ve limits: scheduler’ın gerçekte baktığı değerler
9.2 QoS sınıfları ve pod tahliyesi (eviction)
9.3 Yerleşimi yönlendirmek: nodeSelector, affinity, taint ve toleration
9.4 Otomatik ölçekleme: HPA, VPA ve Cluster Autoscaler
9.5 ResourceQuota ve LimitRange ile namespace sınırları - Güvenlik
10.1 RBAC: Role, ClusterRole, RoleBinding ve ServiceAccount
10.2 Pod Security Admission: 1.25’te kaldırılan PodSecurityPolicy’nin yerine ne geldi?
10.3 Konteyner ayrıcalıkları: root’suz çalıştırma, capability düşürme, read-only kök dosya sistemi
10.4 İmaj güvenliği: registry, imza doğrulama ve zafiyet taraması
10.5 Küme sertleştirme: CIS Benchmark ve kube-bench - İzleme, Günlük ve Sorun Giderme
11.1 Monitoring nedir, neden önemlidir? — küme metrikleri neyi anlatır?
11.2 Prometheus ve Grafana kurulumu üzerine kube-state-metrics eklemek
11.3 Günlük toplama: Loki ve EFK yaklaşımları
11.4 Pod düzeyinde sorun giderme: CrashLoopBackOff, ImagePullBackOff, Pending pod
11.5 Küme bileşenlerinde sorun giderme: kubelet, apiserver, etcd ve sertifika süreleri
11.6 Servis ve ağ sorunları: DNS çözümlenmiyor, Service’e trafik gitmiyor, endpoint listesi boş
11.7 Kaynak kullanımını okumak: metrics-server,kubectl top, düğüm koşulları ve eviction
11.8 Olay akışını okumak:kubectl get eventsve olayların 1 saatlik ömrü - Paketleme ve Sürekli Teslimat
12.1 Helm: chart, release ve values mantığı
12.2 Kustomize ile ortam bazlı yapılandırma
12.3 Jenkins pipeline ile kümeye dağıtım
12.4 GitOps: Argo CD ve Flux ile git’i tek doğruluk kaynağı yapmak
12.5 Ansible ile küme yaşam döngüsü yönetimi - Üretime Almadan Önce
13.1 Yüksek erişilebilirlik: birden fazla control plane ve etcd quorum aritmetiği
13.2 etcd yedeği ve felaket kurtarma tatbikatı
13.3 Düğüm bakımı: cordon, drain ve PodDisruptionBudget
13.4 Sürüm yükseltme stratejisi ve API kullanımdan kaldırma (deprecation) takibi
13.5 Kapasite planlama: küme ne zaman büyümeli, ne zaman bölünmeli?
13.6 Üretim öncesi kontrol listesi - İleri Konular ve Kaynaklar
14.1 CRD ve operator deseni: Kubernetes’i kendi nesnenizle genişletmek
14.2 Service mesh’e giriş
14.3 Sertifikasyon yolu: KCNA, CKAD, CKA ve CKS
14.4 Belgeler, kitaplar ve topluluk kaynakları
Ön Koşullar
Kubernetes bir soyutlama katmanı; altındaki katmanı bilmiyorsanız soyutlama size yardım etmez, sadece hatayı gizler. Başlamadan önce şunlar elinizde olsun:
- Linux komut satırı. Dosya izinleri, süreçler, servisler ve günlükler. Sıfırdan başlıyorsanız GNU/Linux Öğrenme Yolculuğu serisi tam olarak bu boşluğu dolduruyor.
- Konteyner kavramı. Bir imajı çalıştırmış, log’una bakmış, port yayımlamış olmak yeter. Konteyner ile sanal makine farkını sanallaştırma yazısında ele almıştım.
- Temel ağ bilgisi. IP, port, NAT ve DNS’in ne yaptığını bilmek. Kubernetes’te karşılaşacağınız sorunların önemli bir kısmı aslında ağ sorunudur.
- YAML okuryazarlığı. Girinti duyarlı olduğunu ve liste ile eşleme (map) arasındaki farkı bilmek yeterli.
Nasıl İlerleyeceğiz
Yazıların çoğu, okurken aynı anda deneyebileceğiniz biçimde kurgulanacak. Öğrenmeye başlamak için güçlü bir sunucuya gerek yok: kind veya k3s ile dizüstü bilgisayarınızda tek düğümlü bir küme dakikalar içinde ayağa kalkar ve 1-8 arası başlıkların neredeyse tamamı orada denenebilir.
Ama tek düğümlü kümenin gösteremediği şeyler var: bir düğüm kaybedildiğinde pod’ların yeniden zamanlanması, etcd quorum’unun bozulması, dağıtık depolamanın kopyaları senkronlaması. Bunları görmek için en az üç düğüm gerekiyor — birkaç sanal makine yeter. Evde böyle bir ortam kurmak isterseniz Proxmox ile homelab yazısı iyi bir başlangıç.
Serideki yazılarda geçen sunucu adları, IP adresleri ve çıktılar örnek değerlerdir; komutlar ve davranışlar gerçektir. Kendi ortamınızda çalıştırmadan önce değerleri kendinize göre uyarlayın.
Yolculuk buradan başlıyor. Bir sonraki yazıda ilk maddeyi ele alacağız: konteyner tam olarak nedir, ve neden bir noktadan sonra tek başına yetmiyor?