Beschrijving
Deze cursus bereidt je volledig voor op het CKAD — Certified Kubernetes Application Developer examen. Met realistische oefenvragen, foutenanalyse en uitgebreide uitleg per antwoord studeer je gericht en efficiënt.
Onderwerpen
De cursus behandelt alle examenonderwerpen: Pod-ontwerp, configuratie, multi-container applicaties, observability en services & netwerken.
Wat zit er in het pakket?
- 60 realistische oefenvragen met foutenanalyse
- Uitgebreide uitleg bij elk antwoord
- 180 dagen toegang
- Voortgangstracking per sessie
- BTW-factuur op aanvraag
Wat leer je in CKAD?
Het CKAD-examen test of je Kubernetes-applicaties kunt ontwerpen, bouwen en deployen. Je werkt 2 uur in een live Kubernetes-cluster en lost praktische taken op. Snelheid en nauwkeurigheid zijn essentieel.
Studietijd: ~30 uur. Slagingspercentage: 66% van de beschikbare punten.
1. Core-concepten en sneltoetsen
De belangrijkste tijdsbesparing: dry-run + YAML
# Genereer YAML zonder iets aan te maken
kubectl run mijnpod --image=nginx --dry-run=client -o yaml > pod.yaml
kubectl create deployment myapp --image=nginx --dry-run=client -o yaml > deploy.yaml
kubectl create service clusterip myapp --tcp=80:8080 --dry-run=client -o yaml
# Pas de YAML aan en apply
kubectl apply -f pod.yaml
Snelle navigatie
# Alias instellen (doe dit als eerste op het examen) alias k=kubectl export do="--dry-run=client -o yaml" # Gebruik k run pod1 --image=nginx $do > pod.yaml # Huidige context bekijken kubectl config current-context # Namespace instellen kubectl config set-context --current --namespace=mijnns # Documentatie raadplegen kubectl explain pod.spec.containers kubectl explain deployment.spec.template.spec --recursive
2. Pods en containers
# Pod aanmaken
kubectl run nginx --image=nginx:1.25 --port=80
# Pod met environment variabele
kubectl run myapp --image=myapp:1.0
--env="DB_HOST=db.example.com"
--env="DB_PORT=5432"
# Pod met resource limits
kubectl run myapp --image=myapp:1.0
--requests="cpu=100m,memory=128Mi"
--limits="cpu=500m,memory=256Mi"
# Pod uitvoeren en direct verwijderen
kubectl run busybox --image=busybox --rm -it -- sh
# Bestaande pod bewerken (live)
kubectl edit pod mijnpod
Multi-container patronen
# Sidecar-patroon (logging)
spec:
containers:
- name: app
image: myapp:1.0
volumeMounts:
- name: logs
mountPath: /var/log/app
- name: log-forwarder # sidecar
image: fluentd:latest
volumeMounts:
- name: logs
mountPath: /var/log/app
volumes:
- name: logs
emptyDir: {}
InitContainers
spec:
initContainers:
- name: wacht-op-db
image: busybox
command: ['sh', '-c',
'until nc -z db-service 5432; do sleep 2; done']
containers:
- name: app
image: myapp:1.0
Probes
livenessProbe:
httpGet:
path: /healthz
port: 8080
initialDelaySeconds: 10
periodSeconds: 10
failureThreshold: 3
readinessProbe:
tcpSocket:
port: 5432
initialDelaySeconds: 5
periodSeconds: 5
startupProbe:
httpGet:
path: /healthz
port: 8080
failureThreshold: 30
periodSeconds: 10
3. Configuratie
ConfigMaps
# Aanmaken
kubectl create configmap app-config
--from-literal=LOG_LEVEL=debug
--from-literal=MAX_CONN=100
kubectl create configmap app-config
--from-file=config.properties
# Als environment variabelen injecteren
envFrom:
- configMapRef:
name: app-config
# Specifieke key
env:
- name: LOG_LEVEL
valueFrom:
configMapKeyRef:
name: app-config
key: LOG_LEVEL
# Als volume mounten
volumes:
- name: config
configMap:
name: app-config
volumeMounts:
- name: config
mountPath: /etc/config
Secrets
# Aanmaken
kubectl create secret generic db-secret
--from-literal=wachtwoord=geheim123
kubectl create secret docker-registry regcred
--docker-server=registry.example.com
--docker-username=gebruiker
--docker-password=wachtwoord
# In pod gebruiken
env:
- name: DB_PASS
valueFrom:
secretKeyRef:
name: db-secret
key: wachtwoord
4. Deployments en schaalbaarheid
# Deployment aanmaken
kubectl create deployment myapp
--image=myapp:1.0
--replicas=3
# Schalen
kubectl scale deployment myapp --replicas=5
# Automatisch schalen (HPA)
kubectl autoscale deployment myapp
--min=2 --max=10 --cpu-percent=80
# Rolling update
kubectl set image deployment/myapp
myapp=myapp:2.0
# Rollout status bekijken
kubectl rollout status deployment/myapp
# Terugdraaien
kubectl rollout undo deployment/myapp
# Naar specifieke revisie
kubectl rollout undo deployment/myapp --to-revision=2
# Geschiedenis
kubectl rollout history deployment/myapp
Deployment-strategie aanpassen
spec:
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 1 # Max extra pods tijdens update
maxUnavailable: 0 # Geen downtime
5. Services en netwerken
# ClusterIP (intern)
kubectl expose deployment myapp --port=80 --target-port=8080
# NodePort (extern via node-IP)
kubectl expose deployment myapp --port=80
--type=NodePort
# Service aanmaken via YAML
apiVersion: v1
kind: Service
metadata:
name: myapp
spec:
selector:
app: myapp
ports:
- port: 80
targetPort: 8080
type: ClusterIP
Ingress
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: myapp-ingress
spec:
rules:
- host: app.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: myapp
port:
number: 80
NetworkPolicy
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-alleen-frontend
spec:
podSelector:
matchLabels:
app: backend
ingress:
- from:
- podSelector:
matchLabels:
app: frontend
6. Persistente opslag
# PVC aanmaken
kubectl apply -f - <<EOF
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: data-pvc
spec:
accessModes: [ReadWriteOnce]
resources:
requests:
storage: 1Gi
EOF
# PVC in Deployment gebruiken
volumes:
- name: data
persistentVolumeClaim:
claimName: data-pvc
volumeMounts:
- name: data
mountPath: /data
7. Jobs en CronJobs
# Job aanmaken
kubectl create job backup
--image=busybox
-- sh -c "echo 'backup klaar'"
# CronJob aanmaken
kubectl create cronjob dagelijks
--image=busybox
--schedule="0 2 * * *"
-- sh -c "echo 'nachtelijke run'"
# CronJob YAML
spec:
schedule: "0 2 * * *" # minuut uur dag maand weekdag
jobTemplate:
spec:
template:
spec:
containers:
- name: job
image: busybox
command: ["/bin/sh", "-c", "datum backup"]
restartPolicy: OnFailure
Officiële documentatie
Tip: oefen met tijdslimiet. Je hebt gemiddeld 4 minuten per vraag. Sla moeilijke vragen over en kom er later op terug.





Beoordelingen
Er zijn nog geen beoordelingen.