S
Certified Kubernetes Administrator (CKA) ACTUAL
PERFORMANCE TASK SIMULATION 2026/2027 | Hands-
On kubectl Tasks | No Multiple Choice | Exam Environment
Simulation | Pass Guaranteed - A+ Graded
Domain 1: Cluster Architecture, Installation & Configuration (4 Tasks)
Task 1: Create a new ClusterRole named pod-reader that allows get, list, and watch permissions
on pods in the core API group. Then create a ClusterRoleBinding named pod-reader-binding that
assigns this role to the user jane in the default namespace.
Correct Solution: kubectl create clusterrole pod-reader --verb=get,list,watch --resource=pods
then kubectl create clusterrolebinding pod-reader-binding --clusterrole=pod-reader --user=jane
Task 2: You need to upgrade the control plane node from Kubernetes version 1.28.x to 1.29.x
using kubeadm. The node is running Ubuntu with containerd. Perform the upgrade with minimal
downtime, ensuring etcd is backed up first. The cluster context is k8s-upgrade.
Correct Solution: kubectl drain control-plane --ignore-daemonsets then apt-get update && apt-
get install -y kubeadm=1.29.x-00 then kubeadm upgrade plan then kubeadm upgrade apply
v1.29.x then apt-get install -y kubelet=1.29.x-00 kubectl=1.29.x-00 then systemctl restart kubelet
then kubectl uncordon control-plane
Task 3: Create a backup of the etcd datastore running at https://127.0.0.1:2379 using the etcdctl
command. Use the CA certificate at /etc/kubernetes/pki/etcd/ca.crt, client certificate at
/etc/kubernetes/pki/etcd/server.crt, and client key at /etc/kubernetes/pki/etcd/server.key. Save the
snapshot to /opt/backup/etcd-backup.db.
Correct Solution: ETCDCTL_API=3 etcdctl snapshot save /opt/backup/etcd-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
, S
Task 4: Restore the etcd cluster from the snapshot located at /var/backups/etcd-snapshot.db. The
etcd data directory is /var/lib/etcd. Ensure the etcd service is stopped before restoration and
started after.
Correct Solution: systemctl stop etcd then ETCDCTL_API=3 etcdctl snapshot restore
/var/backups/etcd-snapshot.db --data-dir=/var/lib/etcd then systemctl start etcd (or if static pod:
move manifest out, restore, move back)
Domain 2: Workloads & Scheduling (5 Tasks)
Task 5: Create a deployment named web-app in namespace production using image nginx:1.21
with 3 replicas. Expose the deployment on port 80. Then perform a rolling update to version
nginx:1.22 with zero downtime, ensuring max unavailable is 1 and max surge is 1.
Correct Solution: kubectl create deployment web-app --image=nginx:1.21 --replicas=3 -n
production then kubectl set image deployment/web-app nginx=nginx:1.22 -n production or edit
deployment to add strategy: type: RollingUpdate, rollingUpdate: {maxUnavailable: 1, maxSurge:
1} then kubectl rollout status deployment/web-app -n production
Task 6: A pod in namespace dev is consuming excessive CPU. Create a LimitRange named cpu-
limit-range in namespace dev that sets default CPU request to 100m, default CPU limit to 500m,
max CPU limit to 1000m, and min CPU request to 50m.
Correct Solution: `kubectl apply -f - <<EOF apiVersion: v1 kind: LimitRange metadata: name:
cpu-limit-range namespace: dev spec: limits:
• default: cpu: 500m defaultRequest: cpu: 100m max: cpu: "1" min: cpu: 50m type:
Container EOF`
Task 7: Schedule a pod named manual-schedule with image redis:alpine in namespace default to
run specifically on node worker-2. Use nodeSelector with label disktype=ssd which is already
applied to worker-2.
Correct Solution: kubectl run manual-schedule --image=redis:alpine --dry-run=client -o yaml >
pod.yaml then edit to add nodeSelector: disktype: ssd then kubectl apply -f pod.yaml or kubectl
run manual-schedule --image=redis:alpine --overrides='{"spec": {"nodeSelector": {"disktype":
"ssd"}}}'
Certified Kubernetes Administrator (CKA) ACTUAL
PERFORMANCE TASK SIMULATION 2026/2027 | Hands-
On kubectl Tasks | No Multiple Choice | Exam Environment
Simulation | Pass Guaranteed - A+ Graded
Domain 1: Cluster Architecture, Installation & Configuration (4 Tasks)
Task 1: Create a new ClusterRole named pod-reader that allows get, list, and watch permissions
on pods in the core API group. Then create a ClusterRoleBinding named pod-reader-binding that
assigns this role to the user jane in the default namespace.
Correct Solution: kubectl create clusterrole pod-reader --verb=get,list,watch --resource=pods
then kubectl create clusterrolebinding pod-reader-binding --clusterrole=pod-reader --user=jane
Task 2: You need to upgrade the control plane node from Kubernetes version 1.28.x to 1.29.x
using kubeadm. The node is running Ubuntu with containerd. Perform the upgrade with minimal
downtime, ensuring etcd is backed up first. The cluster context is k8s-upgrade.
Correct Solution: kubectl drain control-plane --ignore-daemonsets then apt-get update && apt-
get install -y kubeadm=1.29.x-00 then kubeadm upgrade plan then kubeadm upgrade apply
v1.29.x then apt-get install -y kubelet=1.29.x-00 kubectl=1.29.x-00 then systemctl restart kubelet
then kubectl uncordon control-plane
Task 3: Create a backup of the etcd datastore running at https://127.0.0.1:2379 using the etcdctl
command. Use the CA certificate at /etc/kubernetes/pki/etcd/ca.crt, client certificate at
/etc/kubernetes/pki/etcd/server.crt, and client key at /etc/kubernetes/pki/etcd/server.key. Save the
snapshot to /opt/backup/etcd-backup.db.
Correct Solution: ETCDCTL_API=3 etcdctl snapshot save /opt/backup/etcd-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
, S
Task 4: Restore the etcd cluster from the snapshot located at /var/backups/etcd-snapshot.db. The
etcd data directory is /var/lib/etcd. Ensure the etcd service is stopped before restoration and
started after.
Correct Solution: systemctl stop etcd then ETCDCTL_API=3 etcdctl snapshot restore
/var/backups/etcd-snapshot.db --data-dir=/var/lib/etcd then systemctl start etcd (or if static pod:
move manifest out, restore, move back)
Domain 2: Workloads & Scheduling (5 Tasks)
Task 5: Create a deployment named web-app in namespace production using image nginx:1.21
with 3 replicas. Expose the deployment on port 80. Then perform a rolling update to version
nginx:1.22 with zero downtime, ensuring max unavailable is 1 and max surge is 1.
Correct Solution: kubectl create deployment web-app --image=nginx:1.21 --replicas=3 -n
production then kubectl set image deployment/web-app nginx=nginx:1.22 -n production or edit
deployment to add strategy: type: RollingUpdate, rollingUpdate: {maxUnavailable: 1, maxSurge:
1} then kubectl rollout status deployment/web-app -n production
Task 6: A pod in namespace dev is consuming excessive CPU. Create a LimitRange named cpu-
limit-range in namespace dev that sets default CPU request to 100m, default CPU limit to 500m,
max CPU limit to 1000m, and min CPU request to 50m.
Correct Solution: `kubectl apply -f - <<EOF apiVersion: v1 kind: LimitRange metadata: name:
cpu-limit-range namespace: dev spec: limits:
• default: cpu: 500m defaultRequest: cpu: 100m max: cpu: "1" min: cpu: 50m type:
Container EOF`
Task 7: Schedule a pod named manual-schedule with image redis:alpine in namespace default to
run specifically on node worker-2. Use nodeSelector with label disktype=ssd which is already
applied to worker-2.
Correct Solution: kubectl run manual-schedule --image=redis:alpine --dry-run=client -o yaml >
pod.yaml then edit to add nodeSelector: disktype: ssd then kubectl apply -f pod.yaml or kubectl
run manual-schedule --image=redis:alpine --overrides='{"spec": {"nodeSelector": {"disktype":
"ssd"}}}'