
Minikube, Kubernetes’i öğrenmek ve uygulama tanımlarını yerelde denemek için tek makinede bir küme oluşturur. Docker driver, Minikube düğümünü Docker içinde çalıştırır; Kubernetes’in uygulama konteynerlerini Docker Engine’e doğrudan yönettiği anlamına gelmez. Küme içindeki çalışma zamanı CRI üzerinden yönetilir.
Bu rehber Ubuntu 24.04 LTS, x86-64, Docker Engine ve Minikube v1.39.0 için ayrı bir yerel laboratuvar kurar. Minikube üretim ortamının yüksek erişilebilirlik, yedekleme veya güvenlik tasarımı yerine geçmez.

Görselin adım adım açıklaması
- Tanımla: Deployment ile istenen durumu belirt.
- Gözle: Çalışan Pod’ların durumunu izle.
- Uzlaştır: Denetleyiciler farkı gidermeye çalışır.
- Ulaştır: Service ile hazır Pod’lara eriş.
1. Ön koşulları ve Docker erişimini doğrulayın
En az iki CPU, 2 GB boş bellek ve 20 GB boş disk Minikube’un başlangıç gereksinimleridir; örnek için 4 GB bellek ayırıyoruz. Host işletim sistemi için ayrıca kaynak bırakın. Gerekli imajları indirmek için internet erişimi gerekir.
uname -m
free -h
df -h
docker version
docker info --format '{{.OSType}}' Son iki komut Minikube’u çalıştıracak kullanıcıyla, sudo olmadan başarılı olmalı ve işletim sistemi linux olmalıdır. sudo docker çalışıyor diye aynı kullanıcının Docker driver erişimi olduğu varsayılamaz. Docker socket erişimi güçlü yetkiler verir; hesabı gelişigüzel docker grubuna eklemeyin. Yetki modelinizi Docker’ın resmî kurulum belgesine göre hazırlayın. Rootless Docker kullanıyorsanız Minikube’un rootless bölümünü ayrıca izleyin; bu örnek iki modu karıştırmaz.
2. Sürümlü Minikube dosyasını doğrulayarak kurun
Bu komutlar x86-64 içindir; ARM sistemde uygun mimari dosyasını seçin. Yeni bir indirme klasöründe:
mkdir -p fc-minikube-download
cd fc-minikube-download
FC_MINIKUBE_VERSION=v1.39.0
curl --fail --location --proto '=https' "https://github.com/kubernetes/minikube/releases/download/${FC_MINIKUBE_VERSION}/minikube-linux-amd64" -o minikube-linux-amd64
curl --fail --location --proto '=https' "https://github.com/kubernetes/minikube/releases/download/${FC_MINIKUBE_VERSION}/minikube-linux-amd64.sha256" -o minikube-linux-amd64.sha256
printf '%s %s\n' "$(cat minikube-linux-amd64.sha256)" minikube-linux-amd64 | sha256sum --check Checksum kontrolü başarısızsa kurmayın. Başarılıysa:
sudo install -m 0755 minikube-linux-amd64 /usr/local/bin/minikube
minikube version Hash dosyasını ve çalıştırılabilir dosyayı aynı resmî sürüm adresinden almak aktarım tutarlılığını kontrol eder; bağımsız bir imza denetimi iddiası değildir. Güncellemede yeni sürümün notlarını ve uyumluluğunu inceleyin.
3. Ayrı profilde yerel kümeyi başlatın
minikube profile list
minikube start -p fc-lab --driver=docker --container-runtime=containerd --cpus=2 --memory=4096
minikube status -p fc-lab
minikube -p fc-lab kubectl -- --context=fc-lab get nodes -o wide
minikube -p fc-lab kubectl -- --context=fc-lab version fc-lab zaten varsa önce kime ve hangi iş yüküne ait olduğunu kontrol edin; gerekiyorsa başka profil adı kullanın. Düğüm Ready olmalıdır. Kubernetes sunucu ve istemci sürümlerini kayıt altına alın. Ayrı kubectl kurmak yerine Minikube’un kendi sürümle eşleşen kubectl -- sarmalayıcısını kullanıyoruz; böylece kurulmamış bir komutu çağırmıyoruz. Her komutta açık context kullanılması başka bir kümeyi yanlışlıkla değiştirme riskini azaltır.
4. Sınırlı bir uygulama tanımı oluşturun
Yeni fc-demo.yaml dosyasına yazın:
apiVersion: v1
kind: Namespace
metadata:
name: fc-demo
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: web
namespace: fc-demo
spec:
replicas: 1
selector:
matchLabels:
app: web
template:
metadata:
labels:
app: web
spec:
automountServiceAccountToken: false
securityContext:
runAsNonRoot: true
runAsUser: 101
runAsGroup: 101
fsGroup: 101
seccompProfile:
type: RuntimeDefault
containers:
- name: web
image: nginxinc/nginx-unprivileged:stable-alpine
ports:
- containerPort: 8080
securityContext:
allowPrivilegeEscalation: false
readOnlyRootFilesystem: true
capabilities:
drop: [ALL]
resources:
requests:
cpu: 50m
memory: 32Mi
limits:
cpu: 250m
memory: 256Mi
readinessProbe:
httpGet:
path: /
port: 8080
initialDelaySeconds: 3
periodSeconds: 5
livenessProbe:
httpGet:
path: /
port: 8080
initialDelaySeconds: 15
periodSeconds: 10
volumeMounts:
- name: temporary
mountPath: /tmp
volumes:
- name: temporary
emptyDir:
sizeLimit: 64Mi
---
apiVersion: v1
kind: Service
metadata:
name: web
namespace: fc-demo
spec:
selector:
app: web
ports:
- port: 80
targetPort: 8080
type: ClusterIP Nginx’in ayrıcalıksız imajı 8080 üzerinde çalışır; root olmayan kullanıcı, salt okunur kök dosya sistemi ve sınırlı geçici alan kullanır. stable-alpine değişebilir: gerçek bir dağıtımda test ettiğiniz imaj digest’ini kaydedip YAML’de sabitleyin. Secret değerlerini bu dosyaya gömmeyin. emptyDir kalıcı uygulama verisi için uygun değildir.
5. Uygulayın ve erişimi test edin
minikube -p fc-lab kubectl -- --context=fc-lab apply --dry-run=client -f fc-demo.yaml
minikube -p fc-lab kubectl -- --context=fc-lab apply -f fc-demo.yaml
minikube -p fc-lab kubectl -- --context=fc-lab -n fc-demo rollout status deployment/web --timeout=120s
minikube -p fc-lab kubectl -- --context=fc-lab -n fc-demo get pods,service
minikube -p fc-lab kubectl -- --context=fc-lab -n fc-demo port-forward --address=127.0.0.1 service/web 8080:80 Port-forward terminalini açık bırakın; başka bir terminalde curl --fail http://127.0.0.1:8080/ ile yanıt alın. Service yalnız ClusterIP’dir; bu akış genel internete LoadBalancer veya NodePort açmaz. --address=0.0.0.0 kullanmak erişim sınırını değiştirir.
Readiness, Pod’un trafik almaya hazır olup olmadığını; liveness, yeniden başlatma gerektiren durumu ölçer. Her uygulamada aynı URL veya gecikmeler doğru olmayabilir. Başarılı apply sonucu tek başına uygulamanın çalıştığını göstermez.
Sorun giderme, geri dönüş ve temizlik
Pending: kaynakları ve olayları inceleyin. ImagePullBackOff: imaj adı, mimari ve depo erişimini kontrol edin. CrashLoopBackOff: günlük, çıkış nedeni, bellek sınırı ve gereken yazılabilir yolları inceleyin. Port-forward hatası: yerel 8080 portunun boş ve Pod’un hazır olduğunu doğrulayın.
minikube -p fc-lab kubectl -- --context=fc-lab -n fc-demo describe deployment web
minikube -p fc-lab kubectl -- --context=fc-lab -n fc-demo logs deployment/web --tail=50
minikube logs -p fc-lab --problems Bir Deployment güncellemesinden sonra önceki çalışan revizyona dönmek için rollout geçmişini inceleyip rollout undo deployment/web -n fc-demo kullanın; aynı context sarmalayıcısını koruyun. Bu işlem haricî veritabanını geri yüklemez.
Port-forward’ı Ctrl+C ile kapatın. Çalışmayı saklamak için minikube stop -p fc-lab kullanın. Yalnız bu laboratuvarı kalıcı olarak kaldırmak istediğinizde minikube delete -p fc-lab çalıştırın; içindeki iş yükü ve veriler kaybolabilir. Tam Docker/Minikube ağ ve çalışma kabulü kendi ayrı makinenizde tamamlanmalıdır; YAML kontrolü bunun yerine geçmez.
Resmî kaynaklar
- Minikube başlangıç ve kaynak gereksinimleri
- Docker driver ve rootless ayrımı
- kubectl kurulumu ve sürüm uyumluluğu
- Kubernetes readiness ve liveness kontrolleri
- NGINX ayrıcalıksız konteyner imajı
Teknik içerik ve kaynaklar 4 Ekim 2026 tarihinde gözden geçirildi. Sürüm veya sağlayıcı değişikliğinde ilgili resmî belgeyi yeniden kontrol edin.
Bir yanıt yazın