Kubernetes Cheatsheet voor CKA en CKAD: kubectl op één pagina
De essentiële kubectl-commando’s en YAML-patronen voor het CKA en CKAD examen. Stel eerst een alias in en gebruik dry-run zo veel mogelijk.
⚡ Eerste stap op het examen
# Stel dit direct in bij het begin van het examen
alias k=kubectl
export do="--dry-run=client -o yaml"
# Gebruik
k run pod1 --image=nginx $do > pod.yaml
k create deployment myapp --image=nginx $do > deploy.yaml
🔍 Navigeren en inspecteren
kubectl config current-context # Huidige context
kubectl config use-context <context> # Wisselen van context
kubectl config set-context --current \
--namespace=mijnns # Namespace instellen
kubectl get pods -A # Alle namespaces
kubectl get pods -o wide # Met node-info
kubectl describe pod <naam> # Details + events
kubectl explain pod.spec.containers # Velddocumentatie
kubectl explain deployment --recursive # Volledige structuur
🚀 Pods en containers
# Pod aanmaken
kubectl run nginx --image=nginx:1.25
# Pod met env var en limieten
kubectl run myapp --image=myapp:1.0 \
--env="DB_HOST=db" \
--requests="cpu=100m,memory=128Mi" \
--limits="cpu=500m,memory=256Mi"
# Tijdelijke debug-pod
kubectl run debug --image=busybox --rm -it -- sh
# Shell in bestaande pod
kubectl exec -it <pod> -- bash
# Logs bekijken
kubectl logs <pod>
kubectl logs <pod> --previous # Vorige instantie
kubectl logs <pod> -f # Live streamen
# Pod verwijderen (geforceerd)
kubectl delete pod <naam> --force --grace-period=0
📦 Deployments
kubectl create deployment myapp \
--image=nginx --replicas=3 # Aanmaken
kubectl scale deployment myapp --replicas=5 # Schalen
kubectl autoscale deployment myapp \
--min=2 --max=10 --cpu-percent=80 # HPA aanmaken
kubectl set image deployment/myapp \
nginx=nginx:1.25 # Image updaten
kubectl rollout status deployment/myapp # Status
kubectl rollout undo deployment/myapp # Terugdraaien
kubectl rollout history deployment/myapp # Geschiedenis
⚙️ ConfigMaps en Secrets
# ConfigMap aanmaken
kubectl create configmap app-config \
--from-literal=LOG_LEVEL=debug \
--from-file=config.properties
# Secret aanmaken
kubectl create secret generic db-secret \
--from-literal=password=geheim123
# Als environment variabele injecteren (in YAML)
env:
- name: LOG_LEVEL
valueFrom:
configMapKeyRef:
name: app-config
key: LOG_LEVEL
- name: DB_PASS
valueFrom:
secretKeyRef:
name: db-secret
key: password
# Alles uit ConfigMap injecteren
envFrom:
- configMapRef:
name: app-config
# Als volume mounten
volumes:
- name: config
configMap:
name: app-config
volumeMounts:
- name: config
mountPath: /etc/config
🌐 Services en Netwerken
# Service aanmaken
kubectl expose deployment myapp \
--port=80 --target-port=8080 # ClusterIP
kubectl expose deployment myapp \
--port=80 --type=NodePort # NodePort
# DNS-naam van een service
# <service>.<namespace>.svc.cluster.local
# Verbinding testen vanuit pod
kubectl exec <pod> -- curl http://myapp:80
# NetworkPolicy — deny all inbound
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: deny-all
spec:
podSelector: {}
policyTypes: [Ingress]
💾 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 pod gebruiken
volumes:
- name: data
persistentVolumeClaim:
claimName: data-pvc
volumeMounts:
- name: data
mountPath: /data
🔐 RBAC (CKA)
# Role aanmaken
kubectl create role pod-lezer \
--verb=get,list,watch \
--resource=pods -n mijnns
# RoleBinding aanmaken
kubectl create rolebinding alice-lezer \
--role=pod-lezer \
--user=alice -n mijnns
# 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 mijnns
🛠 Troubleshooting (CKA)
# Cluster info
kubectl cluster-info
kubectl get componentstatuses
# Node debuggen
kubectl describe node <naam>
ssh <node>
systemctl status kubelet
journalctl -u kubelet -f
# Events bekijken
kubectl get events \
--sort-by=.metadata.creationTimestamp -A
# etcd backup (CKA)
ETCDCTL_API=3 etcdctl snapshot save backup.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
# Certificaten controleren (CKA)
kubeadm certs check-expiration
⚡ Examentips
- Stel
alias k=kubectlenexport do="--dry-run=client -o yaml"in als eerste - Gebruik
kubectl explainvoor velddocumentatie — sneller dan de docs - Controleer de namespace bij elke opdracht — verkeerde namespace = verloren punten
- Markeer moeilijke vragen en kom er later op terug
- Verificeer elke taak met
kubectl get podsofkubectl describe