
After this lecture, you will be able to describe the CKAD exam prerequisites, format, duration, scoring, and retake and certification validity policies.
After this lecture, you will be able to use Killercoda to list nodes, create an nginx deployment, view its status, scale replicas up and down, and delete the deployment.
After this lecture, you will be able to explain how the course is structured and decide whether to follow it sequentially or jump to specific topics based on your exam experience.
After this lecture, you will have an understanding of the skills measured in the CKAD exam and their respective weightage.
After this lecture, you will know the official CKAD exam curriculum, the Killer.sh exam simulator, and other resources to help you prepare for the exam.
Explore essential prerequisite tools and concepts for the CKAD exam, including Linux terminal basics, vim, YAML and JSON syntax, and kubectl fundamentals, to accelerate exam readiness.
After this lecture, you will be able to install and verify a local Kubernetes cluster using Docker Desktop, minikube, kind, or k3s, and configure kubectl aliases for faster command entry.
After this lecture, you will be able to connect to a remote host over SSH, run commands remotely, and exit an SSH session.
After this lecture, you will be able to explain the structure of a kubectl command and construct commands using the command, type, name, and flags components.
After this lecture, you will be able to check cluster and kubectl versions, list API resources, and use kubectl's built-in help and explain features.
After this lecture, you will be able to use copy-paste shortcuts, right-click menus, and a multi-terminal workflow to work efficiently in the exam environment.
After this lecture, you will be able to use essential vim commands to open, navigate, edit, and save YAML files, including indenting and searching text, during the exam.
After this lecture, you will be able to describe the Kubernetes client-server architecture and explain how a request flows from the API server through the scheduler and kubelet to a running container.
After this lecture, you will be able to identify the control plane components, kube-apiserver, kube-scheduler, etcd, kube-controller-manager, and cloud-controller-manager, and describe their roles.
After this lecture, you will be able to identify the worker node components, kubelet, container runtime, and kube-proxy, and describe how they run and network pods.
After this lecture, you will be able to distinguish between container runtimes such as Docker Engine, containerd, and CRI-O, and container tools such as Docker and Podman.
Master CKAD exam readiness by focusing on how containers work with Kubernetes, covering basic Docker knowledge: build, run, inspect, and troubleshoot containers, while avoiding advanced Docker topics.
After this lecture, you will be able to write a simple Python application and a Dockerfile that defines how to build it into a container image.
After this lecture, you will be able to build a Docker image with docker image build and list, inspect, and tag the resulting images.
After this lecture, you will be able to run, name, list, stop, start, remove, and inspect containers, and view their logs using docker container commands.
After this lecture, you will be able to log in to a registry, tag an image for it, and push and pull images to and from a remote registry such as Docker Hub.
After this lecture, you will be able to distinguish between the imperative, declarative, and hybrid approaches for managing Kubernetes objects.
After this lecture, you will be able to create, expose, and scale Kubernetes resources directly from the command line using imperative kubectl commands.
After this lecture, you will be able to create a Pod from a YAML manifest using kubectl apply and explain the last-applied-configuration annotation and the desired-versus-current state model.
After this lecture, you will be able to generate a resource manifest with --dry-run=client -o yaml, edit it, and apply it using the hybrid approach.
After this lecture, you will be able to choose the imperative, declarative, or hybrid approach based on the requirements of a given exam task.
After this lecture, you will be able to list cluster nodes, view their details, and describe the role of nodes in running workloads.
After this lecture, you will be able to explain the purpose of namespaces and identify Kubernetes' built-in namespaces and their access levels.
After this lecture, you will be able to create, list, and view details of namespaces using kubectl.
After this lecture, you will be able to create resources in a specific namespace, list resources scoped to a namespace, view resources across all namespaces, and delete a namespace along with its resources.
After this lecture, you will be able to identify common label patterns used for environment, application, version, and team classification.
After this lecture, you will be able to apply labels to existing resources, label resources at creation time, and label multiple resources at once.
After this lecture, you will be able to update, remove, and view labels on Kubernetes resources.
After this lecture, you will be able to explain the purpose of label selectors and the difference between equality-based, set-based, and manifest-based selector types.
After this lecture, you will be able to filter resources using set-based selectors with the in, notin, and exists operators, including combining them with equality-based selectors.
After this lecture, you will be able to filter resources using equality-based selectors with =, ==, and != and combine multiple conditions with AND logic.
After this lecture, you will be able to use manifest-based selectors to filter resources based on label requirements defined in a YAML file.
After this lecture, you will be able to apply the correct selector syntax and quoting rules, and use --show-labels to validate label application on exam tasks.
After this lecture, you will be able to identify common annotation patterns used for build information, ownership, and configuration hints.
After this lecture, you will be able to add annotations to existing resources and set annotations at creation time, including in bulk.
After this lecture, you will be able to update, overwrite, remove, and view annotations on Kubernetes resources.
After this lecture, you will be able to distinguish between labels and annotations by their purpose, queryability, and typical use cases.
After this lecture, you will be able to describe what a Pod is, why it's the smallest deployable unit in Kubernetes, and how containers within a Pod share network and storage.
After this lecture, you will be able to identify the key fields of a Pod manifest, apiVersion, kind, metadata, spec, and status, and write a basic Pod YAML.
After this lecture, you will be able to create a Pod imperatively with kubectl run and inspect it using get, describe, and wide output.
After this lecture, you will be able to create a Pod declaratively from a YAML manifest file using kubectl apply.
After this lecture, you will be able to generate a Pod manifest with --dry-run=client -o yaml and apply it using the hybrid approach.
After this lecture, you will be able to identify the possible Pod phases, Pending, Running, Succeeded, Unknown, and Failed, and what each phase indicates.
After this lecture, you will be able to execute commands inside a running container both from the terminal with kubectl exec and by configuring a command in the Pod manifest.
After this lecture, you will be able to recall and apply the most frequently used kubectl exec command pattern for running commands in a container during the exam.
After this lecture, you will be able to delete a Pod using both the imperative and declarative approaches, including a forced immediate deletion.
After this lecture, you will be able to explain how a ReplicaSet maintains a desired number of running Pod replicas.
After this lecture, you will be able to identify the structure of a ReplicaSet manifest, including its replicas, selector, and Pod template fields.
After this lecture, you will be able to create a ReplicaSet declaratively from a manifest and verify the Pods it creates.
After this lecture, you will be able to delete a ReplicaSet and its Pods using both the imperative and declarative approaches.
After this lecture, you will be able to explain how a Deployment manages ReplicaSets and Pods, and describe its use cases for rollout, rollback, and scaling.
After this lecture, you will be able to identify the structure of a Deployment manifest and how it combines ReplicaSet and Pod specifications.
After this lecture, you will be able to create a Deployment imperatively with kubectl create deploy and inspect the ReplicaSet and Pods it creates.
After this lecture, you will be able to generate a Deployment manifest using --dry-run=client -o yaml and apply it using the hybrid approach.
After this lecture, you will be able to add a label to an existing Deployment with kubectl label, since labels cannot be set at creation with --labels.
After this lecture, you will be able to delete a Deployment along with its ReplicaSet and Pods using both imperative and declarative approaches.
After this lecture, you will be able to explain how a StatefulSet provides stable network identity, stable storage, and ordered deployment for stateful Pods.
After this lecture, you will be able to create a StatefulSet with a volumeClaimTemplate and expose its Pods through a headless Service.
After this lecture, you will be able to compare StatefulSets and Deployments by pod identity, storage, deployment order, and typical use cases.
After this lecture, you will be able to explain how a DaemonSet ensures a copy of a Pod runs on every, or selected, node and identify its common use cases.
After this lecture, you will be able to create a DaemonSet declaratively and verify that one Pod is scheduled per node.
After this lecture, you will be able to delete a DaemonSet and confirm its Pods are removed from every node.
After this lecture, you will be able to describe a Job's manifest structure, including completions, backoffLimit, parallelism, and restartPolicy.
After this lecture, you will be able to create a Job imperatively with kubectl create job and track its completion status.
Submit a job and have the API server validate and store it, returning status. Let the job controller spawn pods, which spin up containers on nodes.
After this lecture, you will be able to generate a Job manifest with --dry-run=client -o yaml and apply it using the hybrid approach.
After this lecture, you will be able to explain the completions, backoffLimit, and parallelism attributes that control a Job's lifecycle.
After this lecture, you will be able to delete a Job using both the imperative and declarative approaches and verify its Pods are removed.
After this lecture, you will be able to explain how a CronJob creates Jobs on a repeating schedule and identify common scheduling use cases.
After this lecture, you will be able to identify the nested CronJob, Job, and Pod spec sections within a CronJob manifest.
After this lecture, you will be able to write a CronJob schedule using standard cron syntax.
After this lecture, you will be able to create a CronJob imperatively with kubectl create cronjob and observe it trigger Jobs on schedule.
Explore how Kubernetes cron jobs use a schedule managed by the cron job controller to automatically spin up new job instances, contrasting with standard job workflows.
After this lecture, you will be able to generate a CronJob manifest with --dry-run=client -o yaml and apply it using the hybrid approach.
After this lecture, you will be able to configure successfulJobsHistoryLimit and failedJobsHistoryLimit to control how many completed and failed Jobs are retained.
After this lecture, you will be able to manually create a Job from an existing CronJob using kubectl create job --from=cronjob.
After this lecture, you will be able to delete a CronJob along with its Jobs and Pods using both imperative and declarative approaches.
After this lecture, you will be able to explain why a Pod might contain more than one container and list common multi-container use cases.
After this lecture, you will be able to explain how init containers run to completion before app containers start.
Explore the pod startup workflow from API server assigning a node to scheduler and kubelet, which then starts unit containers and finally launches main containers after unit completion.
After this lecture, you will be able to identify the key properties of init containers, including ordering, completion requirement, and lack of health probe support.
After this lecture, you will be able to configure init containers to add a startup delay or wait for a dependent service before the main container starts.
Configure an init container for a main container in Kubernetes using a declarative manifest. Use a busybox init container to sleep before the main container starts in the initpod pod.
After this lecture, you will be able to target a specific container in a multi-container Pod using the --container (-c) flag with exec and logs.
Refer to the Kubernetes docs to configure init containers in a pod, review example configurations, and apply the shown command patterns that run init containers before the main container.
After this lecture, you will be able to explain how sidecar containers extend the main container's functionality without modifying it.
Explore the sidecar workflow in a pod, showing how the scheduler, kubelet, and main and sidecar containers start in parallel and share data via a shared volume.
After this lecture, you will be able to identify the key properties of sidecar containers, including shared volumes and independent lifecycles.
After this lecture, you will be able to design sidecar containers for logging and metrics use cases using shared volumes.
After this lecture, you will be able to configure a sidecar container that reads data written by the main container through a shared volume.
After this lecture, you will be able to explain how an adapter container transforms a main container's output into a format expected elsewhere.
After this lecture, you will be able to apply the adapter pattern to standardize metrics, reformat logs, or integrate legacy application interfaces.
Use the adapter pattern to standardize metrics and logs by transforming data into formats like Prometheus, and to modernize legacy apps or expose new APIs without altering the main application.
After this lecture, you will be able to explain how an ambassador container proxies communication between the main container and external services.
Explore the ambassador container workflow in Kubernetes, where the main and ambassador containers start in parallel under the kubelet, with the ambassador proxying database connections.
After this lecture, you will be able to identify ambassador container use cases including database sharding, service discovery, connection pooling, and authentication proxying.
After this lecture, you will be able to recall how init, sidecar, adapter, and ambassador containers are configured differently under initContainers versus containers in a manifest.
After this lecture, you will be able to explain why health probing matters for maintaining application availability and performance.
After this lecture, you will be able to distinguish between liveness, readiness, and startup probes and describe when each is used.
After this lecture, you will be able to explain the order in which startup, liveness, and readiness probes run relative to each other.
After this lecture, you will be able to configure exec, HTTP GET, TCP socket, and gRPC probe check mechanisms.
After this lecture, you will be able to configure common probe attributes including periodSeconds, initialDelaySeconds, timeoutSeconds, successThreshold, and failureThreshold.
Explore the liveness probe workflow using http get, covering initial delay, period seconds, success threshold, timeout seconds, and failure threshold, and how the container restarts after repeated failures.
Explain how Kubernetes system manifests configure health probing with liveness, readiness, and startup probes using HTTP GET to live-z and ready-z on port 10259, with delays, timeouts, and failure thresholds.
Configure a readiness probe with an exec command in a Kubernetes nginx pod, defining initial delay, period, retry, and timeout, then validate the YAML with a dry-run before applying.
After this lecture, you will be able to configure a liveness probe using the HTTP GET mechanism and verify its status with kubectl describe.
After this lecture, you will be able to list the deployment strategies available for a Deployment, including rolling update, blue/green, canary, and scaling.
After this lecture, you will be able to explain how Kubernetes controls pod availability and surge during a rolling update using maxUnavailable and maxSurge.
After this lecture, you will be able to use kubectl rollout commands to view history, pause, resume, restart, and check the status of a Deployment rollout.
After this lecture, you will be able to use kubectl rollout commands to view history, pause, resume, restart, and check the status of a Deployment rollout.
After this lecture, you will be able to use kubectl rollout commands to view history, pause, resume, restart, and check the status of a Deployment rollout.
After this lecture, you will be able to use kubectl rollout commands to view history, pause, resume, restart, and check the status of a Deployment rollout.
After this lecture, you will be able to explain the blue-green deployment model, including its two environments and traffic-switching process.
After this lecture, you will be able to explain the workflow of a blue-green deployment.
After this lecture, you will be able to weigh the pros and cons of blue-green deployments, including zero-downtime switching against double resource cost.
After this lecture, you will be able to set up the initial environment for a blue-green deployment.
After this lecture, you will be able to configure the service routes for a blue-green deployment.
After this lecture, you will be able to implement the new version for a blue-green deployment.
After this lecture, you will be able to implement the traffic migration strategy for a blue-green deployment.
Verify the green deployment by accessing the nginx service from a temporary pod, then scale the blue deployment to zero to clean up and route traffic to green pods.
After this lecture, you will be able to cleanup and verify the blue-green deployment.
After this lecture, you will be able to explain the canary deployment model, including gradual traffic shifting from the old to the new version.
After this lecture, you will be able to weigh the pros and cons of canary deployments, including reduced risk against added complexity.
After this lecture, you will be able to set up the production environment for a canary deployment.
After this lecture, you will be able to configure the service distribution for a canary deployment.
After this lecture, you will be able to introduce the test version for a canary deployment.
After this lecture, you will be able to implement the progressive traffic shifting for a canary deployment.
After this lecture, you will be able to compare blue-green and canary deployments by traffic distribution, resource usage, rollout speed, risk, and complexity.
After this lecture, you will be able to manually scale up a deployment.
After this lecture, you will be able to manually scale down a deployment.
After this lecture, you will be able to implement the HorizontalPodAutoscaler for a deployment.
After this lecture, you will be able to explain Helm's repository, chart, and release concepts and identify ways to install Helm.
After this lecture, you will be able to manage the repositories for a Helm release.
After this lecture, you will be able to install and uninstall a Helm release.
After this lecture, you will be able to upgrade a Helm release with custom values or a specific chart version, view its history, and roll it back to a prior revision.
After this lecture, you will be able to explain how Kustomize composes, generates, and customizes Kubernetes resources without templating.
After this lecture, you will be able to compose resources for a Kustomize release.
After this lecture, you will be able to generate resources for a Kustomize release.
After this lecture, you will be able to set the cross-cutting fields for a Kustomize release.
After this lecture, you will be able to remove the resources for a Kustomize release.
After this lecture, you will be able to explain how ConfigMaps and Secrets decouple configuration data from a Pod's lifecycle.
After this lecture, you will be able to identify the structure of a ConfigMap manifest and its key-value data format.
After this lecture, you will be able to create a ConfigMap imperatively from literal key-value pairs using --from-literal.
After this lecture, you will be able to create a ConfigMap imperatively from an environment file using --from-env-file.
After this lecture, you will be able to create a ConfigMap imperatively from a configuration file using --from-file, storing the whole file under one key.
After this lecture, you will be able to create a ConfigMap imperatively from all files in a directory using --from-file.
After this lecture, you will be able to create a ConfigMap declaratively from a YAML manifest containing both property-like and file-like keys.
After this lecture, you will be able to identify the three ways to consume a ConfigMap in a Pod: as environment variables via envFrom or env, or as a mounted volume.
After this lecture, you will be able to consume a ConfigMap as an environment variable.
After this lecture, you will be able to consume a ConfigMap as a volume.
After this lecture, you will be able to explain how Secrets store sensitive data, describe their manifest structure, and list the imperative and declarative ways to create them.
After this lecture, you will be able to create a Secret imperatively from literal key-value pairs using --from-literal.
Create Kubernetes secrets imperatively from an environment file, encoding values automatically, by kubectl create secret generic secret-from-environment-file with app.config.environment, containing username and password, and view data in YAML format.
After this lecture, you will be able to create a Secret imperatively from a configuration file using --from-file.
After this lecture, you will be able to compare Secrets and ConfigMaps by sensitivity, node distribution, and pod access restrictions.
After this lecture, you will be able to create a Secret declaratively from a YAML manifest containing both property-like and file-like keys.
After this lecture, you will be able to consume a Secret as an environment variable.
After this lecture, you will be able to consume a Secret as a volume.
After this lecture, you will be able to compare Secrets and ConfigMaps by sensitivity, node distribution, and pod access restrictions.
After this lecture, you will be able to explain why Services are needed to provide stable access to ephemeral Pods.
After this lecture, you will be able to describe the container-to-container, Pod-to-Pod, Pod-to-Service, and external-to-Service communication models.
After this lecture, you will be able to identify the selector, ports, and type fields that configure a Service.
After this lecture, you will be able to distinguish between ClusterIP, NodePort, LoadBalancer, and ExternalName Service types and their use cases.
After this lecture, you will be able to expose an existing Deployment as a ClusterIP Service using kubectl expose.
After this lecture, you will be able to create a Pod and expose it as a Service simultaneously using kubectl run with --expose and --port.
After this lecture, you will be able to create a Service from scratch imperatively using kubectl create service.
After this lecture, you will be able to create a Service declaratively from a YAML manifest.
After this lecture, you will be able to update the configuration of a Service.
After this lecture, you will be able to inspect Endpoints and EndpointSlices to see how a Service maps to backing Pod IPs and ports.
After this lecture, you will be able to delete the resources for a Service.
After this lecture, you will be able to explain the current status of the Ingress API and why the Gateway API is emerging as its successor.
After this lecture, you will be able to describe Ingress path types, rules, and the role of an Ingress controller in fulfilling Ingress resources.
After this lecture, you will be able to create and manage Ingress resources.
After this lecture, you will be able to explain how NetworkPolicies restrict traffic between Pods, namespaces, and IP addresses.
After this lecture, you will be able to identify the podSelector, policyTypes, ingress, and egress fields of a NetworkPolicy manifest.
After this lecture, you will be able to select traffic sources and destinations using podSelector, namespaceSelector, and ipBlock in a NetworkPolicy.
After this lecture, you will be able to write NetworkPolicies for common patterns including default-deny, allow-all, and combined ingress/egress rules.
After this lecture, you will be able to implement a NetworkPolicy for a deployment.
After this lecture, you will be able to explain how volumes let containers in a Pod share and persist data beyond a single container's lifetime.
After this lecture, you will be able to distinguish ephemeral volume types like emptyDir, configMap, and secret from persistent types like hostPath, local, nfs, and csi.
After this lecture, you will be able to configure volumes in system components.
After this lecture, you will be able to configure a Pod with two containers sharing data through an emptyDir volume.
After this lecture, you will be able to explain how the PersistentVolume subsystem abstracts storage provisioning from storage consumption.
After this lecture, you will be able to describe a PersistentVolume's characteristics and the difference between static and dynamic provisioning.
After this lecture, you will be able to configure a PersistentVolume's storage class name, capacity, and volume mode.
After this lecture, you will be able to distinguish between ReadWriteOnce, ReadOnlyMany, ReadWriteMany, and ReadWriteOncePod access modes.
After this lecture, you will be able to configure a hostPath volume and its access modes.
After this lecture, you will be able to distinguish between the Retain and Delete reclaim policies for a PersistentVolume.
After this lecture, you will be able to explain how a PersistentVolumeClaim requests storage and how its storageClassName affects PV binding.
After this lecture, you will be able to describe the provisioning, binding, using, and reclaiming stages of a PersistentVolume's lifecycle.
After this lecture, you will be able to create a PersistentVolume from a manifest and verify its status is Available.
After this lecture, you will be able to create a PersistentVolumeClaim that binds to a matching PersistentVolume and verify its status is Bound.
After this lecture, you will be able to mount a PersistentVolumeClaim into a Deployment and verify data persists across Pod recreation.
Upgrade the resource limits of persistent volumes by updating the manifest, then wait a few seconds and recheck kubectl output to confirm the changes for the CKAD exam.
Welcome to the CKAD (Certified Kubernetes Application Developer) course! This comprehensive course is designed to prepare you for the CKAD certification exam, which focuses on developing, deploying, and debugging cloud-native applications for Kubernetes.
Whether you're a developer looking to build applications on Kubernetes or an IT professional seeking to enhance your container orchestration skills, this course will equip you with the practical knowledge and hands-on experience needed to pass the certification exam.
CKAD Exam Domains Covered In This Course:
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 (e.g., sidecar, init, and others)
Utilize persistent and ephemeral volumes
Application Deployment (20%)
Use Kubernetes primitives to implement common deployment strategies (e.g., blue/green or canary)
Understand Deployments and how to perform rolling updates
Use the Helm package manager to deploy existing packages
Kustomize
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
Application Environment, Configuration, and Security (25%)
Discover and use resources that extend Kubernetes (CRD, Operators)
Understand authentication, authorization, and admission control
Understand requests, limits, and quotas
Understand ConfigMaps
Define resource requirements
Create & consume Secrets
Understand ServiceAccounts
Understand Application Security (SecurityContexts, Capabilities, etc.)
Services and Networking (20%)
Demonstrate basic understanding of NetworkPolicies
Provide and troubleshoot access to applications via services
Use Ingress rules to expose applications
What You'll Achieve
Practical Kubernetes Skills: Develop real-world applications that run on Kubernetes clusters.
Exam Readiness: Master all CKAD exam domains with hands-on practice.
Industry Recognition: Earn the globally recognized CKAD certification.
Career Advancement: Position yourself for roles in cloud-native development.
Course Features
Exam-focused Content: Aligned with current CKAD exam objectives.
Exam Tips: Quick tips to help you perform better in the exam.
Practical Examples: Real-world scenarios and use cases.
CKAD Exam Info
Duration: 2 hours
Format: Performance-based (hands-on)
Questions: 15-20 tasks to complete
Passing Score: 66%
By the end of this course:
You'll have a solid foundation in developing, deploying, and debugging cloud-native applications for Kubernetes.
You will gain the necessary knowledge to pass the CKAD exam and earn the Certified Kubernetes Application Developer certification.
Enroll now and start your journey toward becoming a Certified Kubernetes Application Developer!