Certified Kubernetes Administrator (CKA) Preparation Guide
Certified Kubernetes Administrator (CKA) - V1.35
The objective of this repository is help you for taking the Certified Kubernetes Administrator (CKA) exam using online resources, especially using resources from Kubernetes Official Documentation.
The references were selected for the Exam Curriculum 1.35, and there are exclusive information for API objects and annotations. For more information, please see CNCF Curriculum.
Please, feel free to place a pull request whether something is not up-to-date, should be added or contains wrong information/reference.
There are other Kubernetes certification exam preparation guides available:
Exam
The exam is kind of "put your hands on", where you have some problems to fix within 120 minutes.
My tip: Spend your time wisely. Use the Notebook feature (provided in exam's UI) to keep track of your progress, where you might take notes of each question, put some annotations in order to help you. Additionally, don't get stuck, move to the next problem, and take it back when you finish all the other problems.
Exam Cost: $445 and includes one free retake.
It's important to mention that you have access to Kubernetes Official Documentation during the exam. So get yourself familiar with Kubernetes online documentation, and know where to find all specific topics listed below. It might be helpful for you during the exam.
For information about the exam, please refer Certified Kubernetes Administrator (CKA) Program.
CKA Curriculum
Exam objectives that outline of the knowledge, skills and abilities that a Certified Kubernetes Administrator (CKA) can be expected to demonstrate.
Storage (10%)
- Implement storage classes and dynamic volume provisioning.
- Configure volume types, access modes, and reclaim policies.
- Manage persistent volumes and persistent volume claims.
Workloads & Scheduling (15%)
- Understand deployments and how to perform rolling update and rollbacks.
- Example Deployment File (dep-nginx.yaml) using NGINX
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.21.6
ports:
- containerPort: 80
# Create Deployment
kubectl create -f dep-nginx.yaml
# Get Deployments kubectl get deployments
# Update Deployment kubectl edit deployment.v1.apps/nginx-deployment
# See rollout status kubectl rollout status deployment.v1.apps/nginx-deployment
# Describe Deployment kubectl describe deployment
# Rolling back to a previous revision kubectl rollout undo deployment.v1.apps/nginx-deployment
- Use ConfigMaps and Secrets to configure applications.
- Kubernetes Documentation > Concepts > Configuration > Secrets
- Configure workload autoscaling.
- Kubernetes Documentation > Concepts > Workloads > Autoscaling Workloads
# Increase replicas number for nginx-deployment
kubectl scale deployment/nginx-deployment --replicas=5
# Using autoscaling kubectl autoscale deployment/nginx-deployment --min=2 --max=5
- Understand the primitives used to create robust, self-healing, application deployments.
- configure Pod admission and scheduling (limits, node affinity, etc.).
- Kubernetes Documentation > Concepts > Policy
- Kubernetes Documentation > Concepts > Scheduling > Assign Pods to Nodes
Services & Networking (20%)
- Understand connectivity between Pods.
- GitHub > Kubernetes Community Documentation > Design Proposals > Networking
- Use ClusterIP, NodePort, LoadBalancer service types and endpoints.
- Use the Gateway API to manage ingress traffic.
- Know how to use Ingress controllers and Ingress resources.
- Kubernetes Documentation > Concepts > Services, Load Balancing, and Networking > Ingress Controllers
- Understand and use CoreDNS.
Troubleshooting (30%)
- Troubleshoot clusters and nodes.
- Troubleshoot cluster components.
- Monitor cluster and application resource usage.
- Manage and evaluate container output streams.
- Troubleshoot services and networking.
Cluster Architecture, Installation & Configuration (25%)
- Manage role based access control (RBAC).
- Prepare underlying infrastructure for installing a Kubernetes cluster.
- Create and manage Kubernetes clusters using kubeadm.
- Manage the lifecycle of Kubernetes clusters.
- Implement and configure a highly-available control plane.
- Use Helm and Kustomize to install cluster components.
- Kubernetes Documentation > Tasks > Manage Kubernetes Objects
- Understand extension interfaces (CNI, CSI CRI, etc.).
- Kubernetes Documentation > Getting started > Production environment >Container Runtimes
- Kubernetes Documentation > Concepts > Cluster Administration > Cluster Networking
- Understand CRDs, install and configure operators.
Helpful commands:
# Display addresses of the master and services
kubectl cluster-info
Dump current cluster state to stdout
kubectl cluster-info dump
List the nodes
kubectl get nodes
Show metrics for a given node
kubectl top node my-node
List all pods in all namespaces, with more details
kubectl get pods -o wide --all-namespaces
List all services in all namespaces, with more details
kubectl get svc -o wide --all-namespaces
CKA Preparation Courses
kubectl Ninja
Tip: Use kubectl Cheatsheet during the exam. You don't need to decorate everything.
Useful commands or parameters during the exam:
# Use "kubectl describe" for related events and troubleshooting
kubectl describe pods <podid>
Use "kubectl explain" to check the structure of a resource object.
kubectl explain deployment --recursive
Add "-o wide" in order to use wide output, which gives you more details.
kubectl get pods -o wide
Check always all namespaces by including "--all-namespaces"
kubectl get pods --all-namespaces
Generate a manifest template from imperative spec using the output option "-o yaml" and the parameter "--dry-run=client":
# create a service
kubectl create service clusterip my-service --tcp=8080 --dry-run=client -o yaml
create a deployment
kubectl create deployment nginx --image=nginx --dry-run=client -o yaml
create a pod
kubectl run nginx --image=nginx --restart=Never --dry-run=client -o yaml
Create resources using kubectl + stdin (heredoc) instead of creating them from manifest files. It helps a lot and saves time. You can use the output of the command above and modify as required:
cat <<EOF | kubectl create -f -
...
EOF
It saves lots of time, believe me.
Kubectl Autocomplete (configured for you in the exam environment, but worth enabling in your local environment as well):
source <(kubectl completion bash)
Practice
Practice a lot with Kubernetes:
CKA Tips
Some links that contain tips that might help you from different perspectives of the CKA exam.