Certified Kubernetes Application Developer (CKAD)¶
Exam Overview¶
The Certified Kubernetes Application Developer (CKAD) exam certifies that candidates can design, build, configure, and expose cloud-native applications for Kubernetes. This is a performance-based exam where you work directly in a live Kubernetes environment through a command-line terminal - there are no multiple-choice questions.
Exam Details: - Exam Code: CKAD - Duration: 2 hours - Format: Performance-based, hands-on terminal environment - Passing Score: 66% - Cost: $395 USD (includes one free retake) - Delivery: PSI online proctoring - Validity: 3 years - Prerequisites: None (hands-on Kubernetes application development experience recommended) - Kubernetes Version: Exam environment runs a recent stable version (check CNCF for current version) - Allowed Resources: Access to kubernetes.io/docs, kubernetes.io/blog, and github.com/kubernetes during the exam
Exam Domains¶
Domain 1: Application Design and Build (20%)¶
- Define, build, and modify container images
- Choose and use the right workload resource (Deployment, DaemonSet, CronJob, etc.)
- Understand multi-container Pod design patterns
- Utilize persistent and ephemeral volumes
Key Skills: - Building and managing container images - Creating Pods with multiple containers (sidecar, init, ambassador patterns) - Working with Jobs and CronJobs - Configuring persistent storage with PersistentVolumes and PersistentVolumeClaims - Understanding container lifecycle hooks
Domain 2: Application Deployment (20%)¶
- Use Kubernetes primitives to implement common deployment strategies
- Understand Deployments and how to perform rolling updates
- Use the Helm package manager to deploy existing packages
- Kustomize for configuration management
Key Skills: - Creating and managing Deployments - Performing rolling updates and rollbacks - Implementing blue-green and canary deployment strategies - Using Helm to install, upgrade, and manage charts - Using Kustomize to customize application configuration
Domain 3: Application Observability and Maintenance (15%)¶
- Understand API deprecations
- Implement probes and health checks
- Use built-in CLI tools to monitor Kubernetes applications
- Utilize container logs
- Debugging in Kubernetes
Key Skills: - Configuring liveness, readiness, and startup probes - Viewing and interpreting container logs with kubectl logs - Monitoring resource usage with kubectl top - Debugging Pods, containers, and services - Understanding API version deprecations and migrations
Domain 4: Application Environment, Configuration and Security (25%)¶
- Discover and use resources that extend Kubernetes (CRDs, Operators)
- Understand authentication, authorization, and admission control
- Understand requests, limits, and quotas
- Understand ConfigMaps and Secrets
- Understand SecurityContexts and ServiceAccounts
Key Skills: - Creating and consuming ConfigMaps and Secrets - Configuring SecurityContexts for Pods and containers - Managing ServiceAccounts and RBAC - Setting resource requests and limits - Working with ResourceQuotas and LimitRanges - Understanding admission controllers
Domain 5: Services and Networking (20%)¶
- Demonstrate basic understanding of NetworkPolicies
- Provide and troubleshoot access to applications via services
- Use Ingress rules to expose applications
Key Skills: - Creating and configuring Services (ClusterIP, NodePort, LoadBalancer, ExternalName) - Configuring Ingress resources and controllers - Implementing NetworkPolicies for traffic control - Understanding Kubernetes DNS for service discovery - Troubleshooting service connectivity
Core Kubernetes Concepts¶
Workload Resources¶
Pods¶
- Smallest deployable unit in Kubernetes
- Can contain one or more containers sharing network and storage
- Defined with a Pod spec that includes containers, volumes, and metadata
- Managed through higher-level controllers (Deployments, Jobs, etc.)
Multi-Container Pod Patterns¶
- Sidecar: Helper container that enhances the main container (logging agent, proxy, sync)
- Init Container: Runs to completion before app containers start (setup, migrations, config)
- Ambassador: Proxy container that handles external communication on behalf of the main container
- Adapter: Container that transforms or standardizes output from the main container
Deployments¶
- Declarative updates for Pods and ReplicaSets
- Supports rolling updates with configurable strategy
- Enables rollback to previous revisions
- Manages scaling and self-healing
Services¶
- Stable network endpoint for accessing a set of Pods
- Types: ClusterIP (internal), NodePort (external port), LoadBalancer (cloud LB), ExternalName (DNS alias)
- Label selectors determine which Pods receive traffic
Configuration¶
ConfigMaps¶
- Store non-confidential configuration data as key-value pairs
- Can be consumed as environment variables, command-line arguments, or mounted as files
- Decouples configuration from container images
Secrets¶
- Store sensitive data (passwords, tokens, keys) with base64 encoding
- Similar consumption methods as ConfigMaps
- Should be used with RBAC and encryption at rest for production
Storage¶
PersistentVolumes (PVs) and PersistentVolumeClaims (PVCs)¶
- PVs represent a piece of storage provisioned in the cluster
- PVCs are requests for storage by users
- Access modes: ReadWriteOnce, ReadOnlyMany, ReadWriteMany
- Storage classes enable dynamic provisioning
Batch Workloads¶
Jobs¶
- Run-to-completion workloads
- Configurable parallelism and completion count
- Restart policy must be Never or OnFailure
CronJobs¶
- Schedule Jobs on a recurring basis using cron syntax
- Configure concurrency policy, starting deadline, and history limits
Observability¶
Probes¶
- Liveness Probe: Detects if a container is stuck and needs restart
- Readiness Probe: Determines if a container is ready to accept traffic
- Startup Probe: Checks if an application has started (disables liveness/readiness until success)
- Probe types: HTTP GET, TCP Socket, Exec command, gRPC
Resource Management¶
- Requests: Minimum resources guaranteed to a container
- Limits: Maximum resources a container can consume
- Used by the scheduler for Pod placement decisions
Security¶
Network Policies¶
- Control traffic flow between Pods at the IP/port level
- Default: all traffic allowed (no NetworkPolicy means open communication)
- Specify ingress and/or egress rules with pod/namespace/CIDR selectors
Important Exam Notes¶
This is a HANDS-ON Terminal Exam¶
- You will work in a real Kubernetes cluster through a browser-based terminal
- No multiple-choice questions - every task requires you to execute commands and create/modify resources
- Speed with kubectl is critical - practice imperative commands extensively
- You can access kubernetes.io documentation during the exam
- Learn to navigate the docs quickly to find YAML examples
Imperative Commands are Your Best Friend¶
# Create a Pod quickly
kubectl run nginx --image=nginx --port=80
# Create a Deployment
kubectl create deployment myapp --image=nginx --replicas=3
# Expose a Deployment as a Service
kubectl expose deployment myapp --port=80 --target-port=80 --type=NodePort
# Generate YAML without creating the resource
kubectl run nginx --image=nginx --dry-run=client -o yaml > pod.yaml
# Create a Job
kubectl create job my-job --image=busybox -- echo "Hello"
# Create a CronJob
kubectl create cronjob my-cron --image=busybox --schedule="*/5 * * * *" -- echo "Hello"
# Create a ConfigMap
kubectl create configmap my-config --from-literal=key1=value1
# Create a Secret
kubectl create secret generic my-secret --from-literal=password=mysecret
Key kubectl Commands to Master¶
# Debugging
kubectl describe pod <pod-name>
kubectl logs <pod-name> -c <container-name>
kubectl exec -it <pod-name> -- /bin/sh
kubectl get events --sort-by=.metadata.creationTimestamp
# Resource management
kubectl top pods
kubectl top nodes
kubectl get all -n <namespace>
# Quick edits
kubectl edit deployment <name>
kubectl set image deployment/<name> container=image:tag
kubectl scale deployment <name> --replicas=5
kubectl rollout status deployment/<name>
kubectl rollout undo deployment/<name>
Kubestronaut Certification Path¶
The CKAD is one of five certifications in the CNCF Kubestronaut program:
- KCNA - Kubernetes and Cloud Native Associate (entry-level knowledge)
- KCSA - Kubernetes and Cloud Native Security Associate (security fundamentals)
- CKA - Certified Kubernetes Administrator (cluster administration)
- CKAD - Certified Kubernetes Application Developer (application development)
- CKS - Certified Kubernetes Security Specialist (advanced security)
Earning all five grants the Kubestronaut title from CNCF.
Study Resources¶
| Resource | Type | Link |
|---|---|---|
| Kubernetes Official Documentation | Docs | kubernetes.io/docs |
| CKAD Exam Curriculum | Curriculum | CNCF CKAD |
| Kubernetes the Hard Way | Lab | GitHub |
| killer.sh CKAD Simulator | Practice | killer.sh |
| Kubernetes Playground | Lab | Play with Kubernetes |
Study Guide Contents¶
| File | Description |
|---|---|
| fact-sheet.md | Quick reference with official documentation links |
| practice-plan.md | 5-week hands-on study schedule |
| scenarios.md | Exam-style hands-on task scenarios |
| strategy.md | Study strategy and exam tips |
| notes/01-application-design-build.md | Application Design and Build domain notes |
| notes/02-application-deployment.md | Application Deployment domain notes |
| notes/03-observability-maintenance.md | Observability and Maintenance domain notes |
| notes/04-environment-configuration-security.md | Environment, Configuration and Security domain notes |
| notes/05-services-networking.md | Services and Networking domain notes |
| notes/06-exam-tips.md | Exam tips and kubectl speed tricks |