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.20, and there are exclusive information for API objects and annotations. For more information, please see CKA Curriculum.
Please, feel free to place a pull request whether something is not up-to-date, should be added or contains wrong information/reference.
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: $300 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.
Exam objectives that outline of the knowledge, skills and abilities that a Certified Kubernetes Administrator (CKA) can be expected to demonstrate.
-
Manage role based access control (RBAC).
-
Use Kubeadm to install a basic cluster.
-
Manage a highly-available Kubernetes cluster.
-
Provision underlying infrastructure to deploy a Kubernetes cluster.
-
Perform a version upgrade on a Kubernetes cluster using Kubeadm.
-
Implement etcd backup and restore.
Helpful commands:
# Display addresses of the master and services
kubectl cluster-info
# Dump current cluster state to stdout
kubectl cluster-info dump
# Check health of cluster components
kubectl get componentstatuses
# 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
-
Understand deployments and how to perform rolling update and rollbacks.
-
Kubernetes Documentation > Concepts > Workloads > Controllers > Deployments
-
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.15.4 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.
-
Know how to scale applications.
-
# 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.
-
Understand how resource limits can affect Pod scheduling.
-
Awareness of manifest management and common templating tools.
-
Understand host networking configuration on the cluster nodes.
-
Understand connectivity between Pods.
-
Understand ClusterIP, NodePort, LoadBalancer service types and endpoints.
-
Know how to use Ingress controllers and Ingress resources.
-
Know how to configure and use CoreDNS.
-
Choose an appropriate container network interface plugin.
-
Understand storage classes, persistent volumes.
-
Understand volume mode, access modes and reclaim policies for volumes.
-
Understand persistent volume claims primitive.
-
Know how to configure applications with persistent storage.
-
Evaluate cluster and node logging.
-
Understand how to monitor applications.
-
Manage container stdout & stderr logs.
-
Troubleshoot application failure.
-
Troubleshoot cluster component failure.
-
Troubleshoot networking.
Tip: Use kubectl Cheatsheet during the exam. You don't need to decorate everything.
# 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":
# create a service
kubectl create service clusterip my-service --tcp=8080 --dry-run -o yaml
# create a deployment
kubectl create deployment nginx --image=nginx --dry-run -o yaml
# create a pod
kubectl run nginx --image=nginx --restart=Never --dry-run -o yaml
Create resources using kubectl + stdin 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
source <(kubectl completion bash)
Practice a lot with Kubernetes:
- Kubernetes the Hard Way by Kelsey Hightower
- Katacoda: Learn Kubernetes using Interactive Browser-Based Scenarios
Some links that contain tips that might help you from different perspectives of the CKA exam.