Certified Kubernetes Administrator
Deze cursus bereidt je volledig voor op het CKA — Certified Kubernetes Administrator examen. Met realistische oefenvragen, foutenanalyse en uitgebreide uitleg per antwoord studeer je gericht en efficiënt.
Onderwerpen
De cursus behandelt alle examenonderwerpen: Clusterarchitectuur, workloads, netwerken, opslag, beveiliging en probleemoplossing.
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 CKA?
Het CKA-examen test of je een Kubernetes-cluster kunt installeren, configureren en beheren. Je werkt 2 uur in meerdere live clusters. Naast applicatiebeheer (zoals CKAD) ligt de nadruk op clusterinfrastructuur, beveiliging en probleemoplossing.
Studietijd: ~38 uur. Slagingspercentage: 66% van de beschikbare punten.
1. Clusterarchitectuur
Componenten
- API Server: het enige toegangspunt voor alle cluster-operaties
- etcd: gedistribueerde key-value store voor alle clusterdata
- Scheduler: plaatst pods op nodes op basis van resources en regels
- Controller Manager: beheert controllers (ReplicaSet, Deployment, etc.)
- kubelet: draait op elke node, beheert pods
- kube-proxy: beheert netwerkregelsets voor Services
- CoreDNS: service-discovery via DNS
Static pods
# Static pod manifesten staan op de node zelf
ls /etc/kubernetes/manifests/
# kube-apiserver.yaml, kube-controller-manager.yaml, etc.
# kubelet beheert ze direct — geen API server nodig
# Wijzigingen in de bestanden worden automatisch opgepikt
2. RBAC — toegangsbeheer
# Role (namespace-gebonden)
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: pod-lezer
namespace: productie
rules:
- apiGroups: [""]
resources: ["pods"]
verbs: ["get", "list", "watch"]
---
# RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: alice-pod-lezer
namespace: productie
subjects:
- kind: User
name: alice
roleRef:
kind: Role
name: pod-lezer
apiGroup: rbac.authorization.k8s.io
# ClusterRole + ClusterRoleBinding
kubectl create clusterrole node-lezer \
--verb=get,list,watch \
--resource=nodes
kubectl create clusterrolebinding alice-nodes \
--clusterrole=node-lezer \
--user=alice
# Toegang controleren
kubectl auth can-i get pods --as=alice -n productie
kubectl auth can-i get nodes --as=alice
ServiceAccounts
# ServiceAccount aanmaken
kubectl create serviceaccount mijn-sa -n mijnns
# Token genereren
kubectl create token mijn-sa
# ServiceAccount aan pod koppelen
spec:
serviceAccountName: mijn-sa
3. etcd-beheer
# Backup maken (voer uit op de control plane node)
ETCDCTL_API=3 etcdctl snapshot save /opt/backup/etcd.db \
--endpoints=https://127.0.0.1:2379 \
--cacert=/etc/kubernetes/pki/etcd/ca.crt \
--cert=/etc/kubernetes/pki/etcd/server.crt \
--key=/etc/kubernetes/pki/etcd/server.key
# Snapshot verifiëren
ETCDCTL_API=3 etcdctl snapshot status /opt/backup/etcd.db
# Herstellen vanuit backup
ETCDCTL_API=3 etcdctl snapshot restore /opt/backup/etcd.db \
--data-dir=/var/lib/etcd-herstel
# Vervolgens: update etcd.yaml in /etc/kubernetes/manifests/
# zodat --data-dir wijst naar /var/lib/etcd-herstel
4. Nodebeheer
# Node voor onderhoud klaarzetten
kubectl cordon node01 # geen nieuwe pods
kubectl drain node01 \
--ignore-daemonsets \
--delete-emptydir-data # pods verplaatsen
# Na onderhoud
kubectl uncordon node01
# Labels
kubectl label node node01 disktype=ssd
kubectl label node node01 disktype- # verwijderen
# Taints
kubectl taint nodes node01 key=waarde:NoSchedule
kubectl taint nodes node01 key=waarde:NoSchedule- # verwijderen
# Toleration in pod-spec
tolerations:
- key: "key"
operator: "Equal"
value: "waarde"
effect: "NoSchedule"
Nodeaffinity
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: disktype
operator: In
values: [ssd]
5. Opslag
# StorageClass (dynamische provisioning)
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: snel
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer
# PersistentVolume (handmatig)
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-data
spec:
capacity:
storage: 10Gi
accessModes: [ReadWriteOnce]
hostPath:
path: /mnt/data
# PVC
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mijn-pvc
spec:
accessModes: [ReadWriteOnce]
resources:
requests:
storage: 5Gi
6. Netwerken
# Services
kubectl expose deployment myapp --port=80
# DNS testen vanuit een pod
kubectl run test --image=busybox --rm -it -- nslookup myapp
# Volledig DNS-patroon
# <service>.<namespace>.svc.cluster.local
# Ingress
kubectl create ingress myapp \
--rule="app.example.com/=myapp:80"
# NetworkPolicy — alle inkomende traffic blokkeren
kubectl apply -f - <<EOF
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: deny-all
namespace: mijnns
spec:
podSelector: {}
policyTypes: [Ingress]
EOF
7. Certificaten en beveiliging
# Certificaatvervaldatums controleren
kubeadm certs check-expiration
# Certificaten vernieuwen
kubeadm certs renew all
# kubeconfig voor nieuwe gebruiker
kubectl config set-cluster mijn-cluster \
--server=https://api.cluster.example.com:6443 \
--certificate-authority=/etc/kubernetes/pki/ca.crt
kubectl config set-credentials alice \
--client-certificate=alice.crt \
--client-key=alice.key
kubectl config set-context alice@mijn-cluster \
--cluster=mijn-cluster \
--user=alice
kubectl config use-context alice@mijn-cluster
8. Troubleshooting
# Pod debug
kubectl describe pod <naam> # events en status
kubectl logs <naam> # container logs
kubectl logs <naam> --previous # logs van vorige instantie
kubectl exec -it <naam> -- sh # interactieve shell
# Node debug
kubectl describe node <naam> # capaciteit en events
kubectl top nodes # resource-gebruik
ssh node01
systemctl status kubelet
journalctl -u kubelet -f # kubelet logs
# Cluster events
kubectl get events --sort-by=.metadata.creationTimestamp -A
# API server debug
kubectl cluster-info
kubectl get componentstatuses
Officiële documentatie
Tip: oefen het herstellen van een kapotte cluster. Op het examen zijn er altijd troubleshooting-taken waarbij de kubelet of etcd niet draait.
Lesmateriaal beschikbaar na aankoop
Koop de cursus voor € 39,00 en krijg direct toegang tot alle lesmateriaal, commando-overzichten, readiness check en het volledige oefenexamen.
✓ 30 dagen niet-goed-geld-terug garantie
Gratis proefexamen — 5 vragen
Probeer 5 echte examenvragen zonder account. Zo weet je wat je kunt verwachten.