Azure için Kubernetes Kavramları
Temel Kubernetes yapılarını (pod'lar, dağıtımlar, hizmetler ve ad alanları) inceleyin ve AKS'nin denetim düzlemini sizin adınıza nasıl yönettiğini anlayın.
Azure için Kubernetes Kavramları, CoddyKit'te ücretsiz bir Cloud & IT Cert Prep dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Cloud & IT Cert Prep öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Cloud & IT Cert Prep kursu toplamda 4 dersten oluşur.
Kubernetes Nedir?
Kubernetes (K8s), ilk olarak Google tarafından geliştirilen açık kaynaklı bir kapsayıcı düzenleme platformudur. Kapsayıcılı uygulamaların dağıtımını, ölçeklendirilmesini ve yönetimini otomatikleştirir. Kapsayıcıları elle çalıştırmak yerine uygulamanızın istenen durumunu YAML bildirimlerinde tanımlarsınız; Kubernetes de gerçek durumu istenen durumla eşleştirmek için sürekli çalışır — başarısız kapsayıcıları yeniden başlatır, iş yüklerini sağlıklı düğümlerde zamanlar ve çoğaltmaları ölçeklendirir.
Küme Mimarisi: Denetim Düzlemi ve Düğümler
Bir Kubernetes kümesi denetim düzlemi ve worker düğümlerinden oluşur. Denetim düzleminde API sunucusu (tüm kubectl komutlarının giriş noktası), etcd (dağıtılmış durum deposu), zamanlayıcı (Pod'ları düğümlere atar) ve denetleyici yöneticisi (istenen durumu korur) bulunur. Worker düğümleri kubelet'i (düğüm aracısı), kube-proxy'yi (ağ kuralları) ve bir kapsayıcı çalışma zamanını (containerd) çalıştırır. AKS'de Microsoft denetim düzlemini yönetir — yalnızca worker düğümlerini yönetirsiniz.
# Kubernetes control plane components
# kube-apiserver - REST API for all cluster operations
# etcd - Distributed key-value store (cluster state)
# kube-scheduler - Assigns pending pods to nodes
# kube-controller-manager - Runs reconciliation controllers
# Worker node components
# kubelet - Node agent, ensures containers run
# kube-proxy - Network routing for services
# containerd - Container runtime (runs containers)Pod'lar: Dağıtılabilir En Küçük Birim
Bir Pod, Kubernetes'teki dağıtılabilir en küçük birimdir. Pod; bir ağ ad alanını (aynı IP adresi), depolama birimlerini ve yaşam döngüsünü paylaşan bir veya daha fazla kapsayıcıyı bir araya getirir. Pod içindeki kapsayıcılar localhost üzerinden iletişim kurar. Pod'lar geçicidir — başarısız olduklarında farklı IP'lere sahip yeni Pod'larla değiştirilirler. Pod'ları doğrudan nadiren oluşturursunuz; bunun yerine Pod'ları yöneten daha üst düzey kaynaklar oluşturursunuz.
# Simple pod manifest
apiVersion: v1
kind: Pod
metadata:
name: myapp-pod
labels:
app: myapp
spec:
containers:
- name: myapp
image: mycontainerregistry.azurecr.io/myapp:v1.0
ports:
- containerPort: 80
resources:
requests:
cpu: '100m'
memory: '128Mi'
limits:
cpu: '500m'
memory: '512Mi'Dağıtımlar: ReplicaSet'leri Yönetme
Deployment, Kubernetes'te durum bilgisi tutmayan uygulamaları çalıştırmanın standart yoludur. İstenen sayıda özdeş Pod çoğaltmasını koruyan bir ReplicaSet oluşturur ve yönetir. Deployment'lar kademeli güncellemeleri — eski Pod'ların yenileriyle aşamalı olarak değiştirilmesini — ve önceki sürümlere geri almayı destekler. İstenen Pod şablonunu ve çoğaltma sayısını tanımlarsınız; geri kalanını Kubernetes halleder.
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp
spec:
replicas: 3
selector:
matchLabels:
app: myapp
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 1 # Create 1 extra pod during update
maxUnavailable: 0 # Never reduce below desired count
template:
metadata:
labels:
app: myapp
spec:
containers:
- name: myapp
image: mycontainerregistry.azurecr.io/myapp:v1.0
ports:
- containerPort: 80Hizmetler: Kararlı Ağ Uç Noktaları
Pod'lar geçici olduğundan ve IP'leri değiştiğinden, Service'ler eşleşen Pod'lar arasındaki trafiği yük dengeleyen kararlı bir ağ uç noktası sağlar. Hizmet, Pod'ları bulmak için bir etiket seçicisi kullanır. Hizmet türleri: ClusterIP (yalnızca dahili, varsayılan), NodePort (her düğümde bir bağlantı noktasını açığa çıkarır), LoadBalancer (genel IP'ye sahip bir Azure Load Balancer sağlar) ve ExternalName (harici bir hizmete DNS takma adı).
# Service exposing myapp pods externally
apiVersion: v1
kind: Service
metadata:
name: myapp-svc
spec:
type: LoadBalancer # Creates Azure Load Balancer
selector:
app: myapp # Routes traffic to pods with this label
ports:
- port: 80 # Service port
targetPort: 80 # Pod/container port
# After creation, check the EXTERNAL-IP (Azure LB public IP)
# kubectl get service myapp-svcÇok Kiracılı Kullanım için Ad Alanları
Ad alanları, tek bir Kubernetes kümesini birden çok sanal kümeye böler. Farklı ad alanlarındaki kaynaklar adlarına göre yalıtılır — aynı anda hem development hem de production ad alanında birer myapp Deployment'ı bulunabilir. Ad alanları, RBAC'yi, kaynak kotalarını ve ağ ilkelerini bir ekibe veya ortama uygulamak için kullanılan temel birimdir. Varsayılan ad alanları arasında default, kube-system ve kube-public bulunur.
# Create a namespace for the dev team
kubectl create namespace dev-team
# Deploy into a specific namespace
kubectl apply -f deployment.yaml --namespace dev-team
# List all resources in a namespace
kubectl get all --namespace dev-team
# Set default namespace for current context
kubectl config set-context --current --namespace dev-teamConfigMaps ve Secrets
ConfigMaps, hassas olmayan yapılandırma verilerini anahtar-değer çiftleri veya dosyalar olarak depolar ve bunları ortam değişkenleri ya da birim bağlamaları olarak Pod'lara aktarır. Secrets, hassas verileri (parolalar, belirteçler) base64 kodlamasıyla depolar (varsayılan olarak şifrelenmez — gerçek bekleme hâli şifrelemesi için Azure Key Vault Provider for Secrets Store CSI Driver kullanın). Her ikisi de ad alanı kapsamındadır ve Pod tanımlarında adlarıyla başvurulur.
# Create a ConfigMap from literal values
kubectl create configmap app-config \
--from-literal=APP_ENV=production \
--from-literal=LOG_LEVEL=info
# Create a Secret
kubectl create secret generic db-secret \
--from-literal=DB_PASSWORD='super-secret'
# Reference in a pod spec
# env:
# - name: APP_ENV
# valueFrom:
# configMapKeyRef:
# name: app-config
# key: APP_ENV
# - name: DB_PASSWORD
# valueFrom:
# secretKeyRef:
# name: db-secret
# key: DB_PASSWORDAzure'da Kalıcı Birimler
Durum bilgisi tutan uygulamalar, tek tek Pod'ların ömrünü aşan depolamaya ihtiyaç duyar. Kubernetes, depolamayı Pod yaşam döngüsünden ayırmak için PersistentVolumes (PVs) ve PersistentVolumeClaims (PVCs) kullanır. AKS'de yerleşik Azure Disk ve Azure Files depolama sınıfları, bir PVC oluşturulduğunda yönetilen diskleri ve dosya paylaşımlarını otomatik olarak sağlar. Azure Disk tek bir Pod erişimi içindir; Azure Files aynı anda birden fazla Pod'un okuma ve yazma işlemi yapmasını destekler.
# PersistentVolumeClaim using Azure Disk
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-disk-pvc
spec:
accessModes:
- ReadWriteOnce # Single-node read/write (Azure Disk)
storageClassName: managed-csi
resources:
requests:
storage: 10Gi
# Mount in a pod
# volumes:
# - name: data
# persistentVolumeClaim:
# claimName: my-disk-pvc
# volumeMounts:
# - name: data
# mountPath: /dataYatay Pod Otomatik Ölçeklendirici
HorizontalPodAutoscaler (HPA), gözlemlenen CPU/bellek kullanımına veya özel ölçümlere göre bir Deployment içindeki Pod çoğaltmalarının sayısını otomatik olarak ayarlar. HPA denetleyicisi, ölçüm sunucusunu her 15 saniyede bir sorgular ve kullanımı hedefe yakın tutmak için çoğaltmaları artırır veya azaltır. Kontrolsüz ölçeklendirmeyi önlemek üzere minimum ve maksimum çoğaltma sayılarını sınır olarak belirlersiniz.
# Create an HPA targeting 50% CPU utilisation
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: myapp-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: myapp
minReplicas: 2
maxReplicas: 20
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 50Durum Denetimleri: Canlılık ve Hazırlık Yoklamaları
Kubernetes, kapsayıcıların durumunu izlemek için yoklamaları kullanır. livenessProbe, kapsayıcının hâlâ çalışıp çalışmadığını denetler — başarısız olursa Kubernetes kapsayıcıyı yeniden başlatır. readinessProbe, kapsayıcının trafik sunmaya hazır olup olmadığını denetler — başarısız olursa Pod, yeniden başlatılmadan Service yük dengelemesinden çıkarılır. startupProbe, uygulama başlatılana kadar diğer yoklamaları geciktirir ve yavaş başlatma sırasında erken yeniden başlatmaları önler.
livenessProbe:
httpGet:
path: /health
port: 80
initialDelaySeconds: 15
periodSeconds: 20
failureThreshold: 3
readinessProbe:
httpGet:
path: /ready
port: 80
initialDelaySeconds: 5
periodSeconds: 10
failureThreshold: 3
startupProbe:
httpGet:
path: /startup
port: 80
failureThreshold: 30
periodSeconds: 10 # Allow 300s for slow startupKaynak İstekleri ve Sınırları
Kubernetes'teki her kapsayıcı, kaynak isteklerini (zamanlayıcı tarafından kullanılan minimum garantili ayırma) ve sınırları (aşıldığında kapsayıcının kısıtlandığı veya sonlandırıldığı izin verilen maksimum değer) bildirmelidir. CPU istekleri millicore cinsindendir (m) — 1000m = 1 CPU çekirdeği. İstekleri ve sınırları doğru ayarlamak, gürültülü komşu sorunlarını önler ve zamanlayıcının kaynakları aşırı tahsis etmeden Pod'ları düğümlere verimli biçimde yerleştirmesini sağlar.
resources:
requests:
cpu: '250m' # 0.25 CPU core guaranteed
memory: '256Mi' # 256 MiB guaranteed
limits:
cpu: '1' # Max 1 CPU core
memory: '512Mi' # Max 512 MiB (OOMKilled if exceeded)Hızlı Kontrol
Bu derste ele alınan Microsoft Azure Temelleri (AZ-900) kavramlarını anlayıp anlamadığınızı test edin.
Ders Özeti
Bu derste şunları öğrendiniz: pod'lar, ağ ve depolamayı paylaşan en küçük dağıtılabilir birimlerdir; Deployment'lar, aşamalı güncelleme desteğiyle durumsuz replika kümelerini yönetir; Service'ler ise geçici pod'lar arasındaki trafiği yük dengeleyen kararlı uç noktalar sağlar. Sırada AKS üzerinde iş yüklerini dağıtmayı inceleyeceğiz.
Sıkça Sorulan Sorular
“Azure için Kubernetes Kavramları” dersi ücretsiz mi?
Evet — “Azure için Kubernetes Kavramları” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Cloud & IT Cert Prep kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Cloud & IT Cert Prep kursu toplamda 4 dersten oluşur.
“Azure için Kubernetes Kavramları” dersinde ne öğreneceğim?
Temel Kubernetes yapılarını (pod'lar, dağıtımlar, hizmetler ve ad alanları) inceleyin ve AKS'nin denetim düzlemini sizin adınıza nasıl yönettiğini anlayın. Cloud & IT Cert Prep ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Cloud & IT Cert Prep öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Cloud & IT Cert Prep, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.
“Azure için Kubernetes Kavramları” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Cloud & IT Cert Prep dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Cloud & IT Cert Prep dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Azure Container Registry
- Azure Container Instances
- Azure için Kubernetes Kavramları
- AKS Üzerinde İş Yükleri Dağıtma