<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Subodh D</title>
    <description>The latest articles on Forem by Subodh D (@subodev).</description>
    <link>https://forem.com/subodev</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F263772%2F74545b81-0e8b-4649-a8bc-5f36eb602bd5.png</url>
      <title>Forem: Subodh D</title>
      <link>https://forem.com/subodev</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/subodev"/>
    <language>en</language>
    <item>
      <title>50 Questions for CKAD and CKA exam</title>
      <dc:creator>Subodh D</dc:creator>
      <pubDate>Tue, 02 Feb 2021 17:37:24 +0000</pubDate>
      <link>https://forem.com/subodev/50-questions-for-ckad-and-cka-exam-3bjm</link>
      <guid>https://forem.com/subodev/50-questions-for-ckad-and-cka-exam-3bjm</guid>
      <description>&lt;p&gt;This a list of questions you can practice for CKAD/CKA exams. These questions will cover most of the concepts in the CNCF curriculum for CKAD/CKA exams.&lt;/p&gt;

&lt;p&gt;You can check out my other blog post where I have listed the resources where you can practice these questions and some educative material for exam preparations:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://dev.to/subodev/how-to-prepare-for-the-ckad-exam-4oa3"&gt;How to prepare for the CKAD exam&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You can also follow this repository for further updates: &lt;br&gt;
&lt;a href="https://github.com/subodh-dharma/ckad"&gt;https://github.com/subodh-dharma/ckad&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Questions
&lt;/h2&gt;

&lt;p&gt;You can time yourself when practicing these questions. Here is a &lt;a href="https://www.google.com/search?q=google+timer"&gt;timer&lt;/a&gt; for you.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Create a new pod with the &lt;code&gt;nginx&lt;/code&gt; image.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create a new pod with the name &lt;code&gt;redis&lt;/code&gt; and with the image &lt;code&gt;redis:1.99&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Identify the problem with the pod.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Rectify the problem with the pod and wait until the pod is ready and healthy.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create a new replicaset &lt;code&gt;rs-1&lt;/code&gt; using image &lt;code&gt;nginx&lt;/code&gt; with labels &lt;code&gt;tier:frontend&lt;/code&gt; and selectors as &lt;code&gt;tier:frontend&lt;/code&gt;. Create 3 replicas for the same.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Scale the above replicaset to 5 replicas.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Update the image of the above replicaset to use &lt;code&gt;nginx:alpine&lt;/code&gt; image.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Scale down the replicaset to 2 replicas.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create a new deployment &lt;code&gt;deploy-1&lt;/code&gt; using image &lt;code&gt;busybox&lt;/code&gt; with 3 replicas and command &lt;code&gt;sleep 3600&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Update the image of the above deployment with image &lt;code&gt;ubuntu&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create a namespace &lt;code&gt;finance&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create a pod &lt;code&gt;redis01&lt;/code&gt; using image redis in the &lt;code&gt;finance&lt;/code&gt; namespace.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Deploy a &lt;code&gt;redis02&lt;/code&gt; pod using the &lt;code&gt;redis:alpine&lt;/code&gt; image with the labels set to &lt;code&gt;tier=db&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create a service &lt;code&gt;redis-service&lt;/code&gt; to expose the &lt;code&gt;redis02&lt;/code&gt; application within the cluster on port 6379.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create a new pod called &lt;code&gt;custom-nginx&lt;/code&gt; using the &lt;code&gt;nginx&lt;/code&gt; image and expose it on container port 8080.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create a pod called &lt;code&gt;httpd&lt;/code&gt; using the image &lt;code&gt;httpd:alpine&lt;/code&gt; in the default namespace. Next, create a service of type ClusterIP by the same name (httpd). The target port for the service should be 80.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create a pod with the &lt;code&gt;ubuntu&lt;/code&gt; image to run a container to sleep for 5000 seconds.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create a new ConfigMap for the &lt;code&gt;webapp-color&lt;/code&gt; pod. Set key-value pairs as &lt;code&gt;COLOR=blue&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create a deployment &lt;code&gt;nginx01&lt;/code&gt; using nginx image, which has environment variable CREATED_BY with value &lt;code&gt;octocat&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Verify the environment variable in the containers of the above deployment.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create a new config map &lt;code&gt;db-config&lt;/code&gt; with key-value pairs as:&lt;br&gt;
a] db-host = "localhost.example.com"&lt;br&gt;
b] db-port = 3306&lt;br&gt;
c] db-name = "kubernetes-objects"&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Mount the config map &lt;code&gt;db-config&lt;/code&gt; in the deployment &lt;code&gt;ubuntu01&lt;/code&gt; with image &lt;code&gt;ubuntu&lt;/code&gt; which has 2 replicas.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Create a deployment named &lt;code&gt;multi-con-01&lt;/code&gt;, which has two containers, one container uses &lt;code&gt;nginx&lt;/code&gt; image and has port 80 exposed. Mount the config map &lt;code&gt;db-config&lt;/code&gt; as environment variable. Create the second container in the same deployment with image &lt;code&gt;ubuntu&lt;/code&gt;, keep the container alive using the command &lt;code&gt;sleep 5000&lt;/code&gt; and mount the config map in &lt;code&gt;db-config&lt;/code&gt; with different keys where the new keys are mapped as: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;db-host --&amp;gt; DB_URL&lt;/li&gt;
&lt;li&gt;db-port --&amp;gt; DB_PORT&lt;/li&gt;
&lt;li&gt;db-name --&amp;gt; DB_NAME&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Create an opaque secret named &lt;code&gt;db-creds&lt;/code&gt; with following key value pairs: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;db_user=root&lt;/li&gt;
&lt;li&gt;db_password=pass404&lt;/li&gt;
&lt;li&gt;db_role=admin&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Mount the secret &lt;code&gt;db-creds&lt;/code&gt; in the deployment &lt;code&gt;multi-con-01&lt;/code&gt; [created in (23)] as environment variables in the ubuntu container with the same keys as mentioned in the secret.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create a pod &lt;code&gt;ubuntu02&lt;/code&gt; with image &lt;code&gt;ubuntu&lt;/code&gt; and run the command &lt;code&gt;sleep 3400&lt;/code&gt; as user 1001.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create a pod &lt;code&gt;ubuntu03&lt;/code&gt; with image &lt;code&gt;ubuntu&lt;/code&gt; and add capabilities for &lt;strong&gt;SYS_TIME&lt;/strong&gt; to each container. Run the command &lt;code&gt;date -s '01JAN 2020 10:00:00&lt;/code&gt; to verify if it is successful.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Taint one of the worker nodes in your cluster with the following property, &lt;code&gt;mode=maintainance:NoSchedule&lt;/code&gt;. Create a pod &lt;code&gt;nginx02&lt;/code&gt; with image &lt;code&gt;nginx:alpine&lt;/code&gt; and ensure the pod runs on the tainted node as above.&lt;br&gt;
&lt;em&gt;Hint: You might want to use tolerations and nodeselectors both in case you have multiple worker nodes.&lt;/em&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create a pod &lt;code&gt;box0&lt;/code&gt; with image &lt;code&gt;busybox&lt;/code&gt; and command &lt;code&gt;sleep 30; touch /tmp/debug; sleep 30; rm /tmp/debug&lt;/code&gt;. The pod should not be ready until the file /tmp/debug is available in the pod. If the file doesn't exist, the pod must restart.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create a pod &lt;code&gt;nginx03&lt;/code&gt; with image &lt;code&gt;nginx&lt;/code&gt;, make sure the server is up and running every 10 seconds. The nginx server ideally takes 30 seconds to warm up so ensure that there are no false negatives when reporting the health of the pod.&lt;br&gt;
&lt;em&gt;Note: Nginx runs on port 80.&lt;/em&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;This is a multistage problem:&lt;br&gt;
a] Create a deployment &lt;code&gt;deploy01&lt;/code&gt; with image &lt;code&gt;nginx&lt;/code&gt; with port 80 exposed.&lt;br&gt;
b] Update the deployment with image &lt;code&gt;nginx:dev&lt;/code&gt; and make sure you record the execution of this action.&lt;br&gt;
c] If the deployment in step b is unsuccessful, rollback the deployment to the previous state by setting any fields explicitly.&lt;br&gt;
d] If the nginx deployment is in a healthy state, scale the deployment to run 3 replicas, also record this execution for audit-keeping.&lt;br&gt;
e] Display the history of deployment &lt;code&gt;deploy-01&lt;/code&gt; and store it in file /opt/answers/31.txt.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create a job that will roll a dice using image &lt;code&gt;kodekloud/throw-dice&lt;/code&gt;. The image generates a random number between 1 and 6 and exits. It is a success only if it is a 6 else it is a failure. Check how many times it takes the job to trigger to get a successful outcome.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create a job with the above image to generate 8 successful outcomes. Also, ensure that the job will attempt no more than 15 attempts and see if the job is successful. You can add an element of 3 parallel executions if required.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create a scheduled job such that it runs every minute. Use the image &lt;code&gt;kodekloud/throw-dice&lt;/code&gt; to check the outcome.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create a Persistent Volume &lt;code&gt;deploy-history&lt;/code&gt; which makes the storage available on each worker nodes at /tmp/deployment. Make sure it has the default provisioner of your cluster assigned. Label the Persistent Volume with &lt;code&gt;audit: true&lt;/code&gt;, &lt;code&gt;tier: middleware&lt;/code&gt;. The persistent volume must have a capacity of 2 GB.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create a Persistent Volume &lt;code&gt;persistent-data&lt;/code&gt; which uses a storage class name &lt;code&gt;persistent&lt;/code&gt; and is of type hostPath which stores the data on /tmp/persistent on worker nodes. The persistent volume must have a capacity of 2 GB.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create a Persistent Volume &lt;code&gt;my-personal-data&lt;/code&gt; which uses a storage class name &lt;code&gt;persistent&lt;/code&gt; and is of type hostPath which stores the data on /tmp/pii on worker nodes. The persistent volume must have a capacity of 2 GB. Since this will store personal data, make sure you can identify the persistent volume using the labels &lt;code&gt;security: high&lt;/code&gt;, &lt;code&gt;type: pii&lt;/code&gt;, &lt;code&gt;audit: true&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create a Persistent Volume Claim to bind to persistent volume which uses storage class &lt;code&gt;persistent&lt;/code&gt; and requests 2 GB capacity.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create a Persistent Volume Claim to bind to a PV which ensures that the personal and private data is secure. Ensure that this PVC will bind to a PV of type &lt;code&gt;pii&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create a PVC such that it will bind to a PV that is qualified for middleware applications.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create a deployment &lt;code&gt;deploy02&lt;/code&gt; with image busybox, mount one of the PVC from above such that it will store logs in the &lt;code&gt;/tmp/deployment&lt;/code&gt; directory. The containers of the deployment must:&lt;br&gt;
a] Create a file in /tmp/deployment with the same name as the pod name with .txt extension.&lt;br&gt;
b] Run the command &lt;code&gt;i=0; while true; do; echo "$i $(date)" &amp;gt;&amp;gt; /tmp/deployment/&amp;lt;podname&amp;gt;.txt &amp;amp;&amp;amp; sleep 60 ; done&lt;/code&gt; to the log file.&lt;br&gt;
&lt;em&gt;Hint: You can use init-containers, environment variables to achieve this&lt;/em&gt;.&lt;br&gt;
c] Ensure there are 5 replicas of the deployment.&lt;br&gt;
d] Ensure you can see the log files created and populated with data in /tmp/deployment directory on the scheduled &lt;strong&gt;worker nodes&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create two deployments i.e. &lt;code&gt;nginx04&lt;/code&gt; and &lt;code&gt;redis04&lt;/code&gt; using images nginx and redis respectively with 3 replicas. Your goal is to ensure that:&lt;br&gt;
a] each worker node must not have 2 or more nginx04 pods.&lt;br&gt;
b] each worker node that has a nginx04 pod must have a redis04 pod scheduled on the same node.&lt;br&gt;
&lt;em&gt;Hint: Use pod affinity and anti-affinity to ensure the above scneario&lt;/em&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Create 3 pods &lt;code&gt;nginx05&lt;/code&gt;, &lt;code&gt;redis05&lt;/code&gt;, and &lt;code&gt;httpd05&lt;/code&gt; with images &lt;code&gt;nginx&lt;/code&gt;, &lt;code&gt;redis&lt;/code&gt;, and &lt;code&gt;httpd&lt;/code&gt; respectively. Attach a &lt;em&gt;sidecar&lt;/em&gt; debug container of image &lt;code&gt;busybox&lt;/code&gt; to each of them. The security team has enforced the application team to limit the communication between unnecessary pods. Ensure that only the following communication is allowed between pods:&lt;br&gt;
a] Allow:&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    1. nginx05 &amp;lt;--&amp;gt; redis05
    2. nginx05 &amp;lt;--&amp;gt; httpd05
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;b] Deny: &lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    1. httpd05 &amp;lt;-/-&amp;gt; redis05
    2. redis05 &amp;lt;-/-&amp;gt; rest of the world
    3. nginx05 &amp;lt;-/-&amp;gt; the rest of the world
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Identify a possible information flow in this system. Write the information flow in the format &lt;code&gt;End-User::Pod1::Pod2::Pod3&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create an application stack from this source &lt;a href="https://raw.githubusercontent.com/subodh-dharma/ckad/master/resources/network-policy/apps.yaml"&gt;link&lt;/a&gt;. Apply the network policy from this source &lt;a href="https://raw.githubusercontent.com/subodh-dharma/ckad/master/resources/network-policy/policy.yaml"&gt;link&lt;/a&gt;. Identify whether the network policy applied is correct or not. If not, update the desired network policy. If any network policy was updated, write the updated policy in /opt/44_netpol.yaml.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A developer started a pod &lt;code&gt;calculus&lt;/code&gt; with image &lt;code&gt;busybox&lt;/code&gt; which performs the calculation &lt;code&gt;i=0; while true; do a=$(( i*i+i )); echo $a; i=$(( i+1 )); done&lt;/code&gt;. But later realized that this is not a reliable way to start a calculation-intensive pod. The developer decided to use a replicaset instead. But with the current pod running it would ruin all the calculations done so far. Can you help the developer to ensure that a replicaset can be created and the existing pod can become a part of this replicaset without any downtime. Store the manifest file of the replica set in /opt/45_rs.yaml and at the beginning add a comment describing in one line what strategy was implemented to achieve this.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create a deployment &lt;code&gt;deploy03&lt;/code&gt; that uses image &lt;code&gt;nginx:v2&lt;/code&gt;. The container name must be &lt;code&gt;nginx&lt;/code&gt;. Check if the deployment is successful. Now delete the  deployment. Get the events associated with the deployment &lt;code&gt;deploy03&lt;/code&gt; and pods created by the deployment and store them in a file located at /opt/answers/46_events.txt&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Create a configmap &lt;code&gt;devconfig&lt;/code&gt; that has configuration data as follows:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;sdk.cfg:&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight plaintext"&gt;&lt;code&gt;path: /etc/sdk/
version: v2
auth: token
&lt;/code&gt;&lt;/pre&gt;




&lt;/li&gt;
&lt;li&gt;&lt;p&gt;language: &lt;code&gt;golang:1.15&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Create a pod &lt;code&gt;devbox&lt;/code&gt; with image &lt;code&gt;busybox&lt;/code&gt; such that it projects the contents in &lt;code&gt;devconfig&lt;/code&gt;. Project sdk.cfg on path &lt;code&gt;/var/dev-sdk/config/sdk.cfg&lt;/code&gt; and language on path &lt;code&gt;/var/dev-sdk/lang/golang/version/value.txt&lt;/code&gt;.&lt;/p&gt;


&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create a pod &lt;code&gt;pod01&lt;/code&gt; with image &lt;code&gt;busybox&lt;/code&gt; such that it requests for 100m of cpu and 50Mi of memory and the resources allocated are expandable to a limit of 200m of cpu and 250 Mi of memory. Try to create a pod using imperative command only. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A stateful-set problem:&lt;br&gt;&lt;br&gt;
a. Create a stateful set for a middleware application named &lt;code&gt;middleware&lt;/code&gt; that uses image &lt;code&gt;nginx&lt;/code&gt;. Ensure that the stateful set has 3 replicas and has a persistent storage such that it uses PVC with a storage of 1 Gi mounted on worker nodes host path at /tmp/middleware/storage. Mount the storage on &lt;code&gt;/var/www/html&lt;/code&gt;. Create a init-container in the stateful set with image &lt;code&gt;busybox&lt;/code&gt; to create an index.html at /var/www/html. The contents of the index.html can be generated using the command &lt;code&gt;echo "From middleware application" &amp;gt; /var/www/html/index.html&lt;/code&gt;. Expose the stateful set through a headless service &lt;code&gt;middleware-svc&lt;/code&gt;.&lt;br&gt;&lt;br&gt;
b. Create a temporary pod with image &lt;code&gt;busybox&lt;/code&gt; to check if you can access nginx service. Try accessing the service with the headless service and pod names (not ips).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create a deployment &lt;code&gt;stressor&lt;/code&gt; with image &lt;code&gt;polinux/stress&lt;/code&gt;. Execute the deployment with command &lt;em&gt;stress&lt;/em&gt; and arguments &lt;code&gt;--cpu 4 --timeout 180&lt;/code&gt;. Enable autoscaling for this deployment with a cpu limit of 75%. Get the autoscale management object and store it in /opt/answers/50_autoscale.yaml file&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Delete all the resources. 😉 &lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I am hoping to come up with a document with solutions to these questions. If you need a solution for any specific problem or encounter a problem with any question feel free to reach out to me in the comments or open an issue in this GitHub repo: &lt;a href="https://github.com/subodh-dharma/ckad"&gt;https://github.com/subodh-dharma/ckad&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;All the best for your exams!&lt;/p&gt;

&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;p&gt;Some of the questions are inspired from&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Mumshad Mannambeth's Udemy Course -- &lt;a href="https://www.udemy.com/course/certified-kubernetes-application-developer/"&gt;Course Link&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Cover Image: &lt;span&gt;Photo by &lt;a href="https://unsplash.com/@andrewtneel?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText"&gt;Andrew Neel&lt;/a&gt; on &lt;a href="https://unsplash.com/s/photos/exams-online?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText"&gt;Unsplash&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;

</description>
      <category>kubernetes</category>
      <category>certification</category>
      <category>ckad</category>
      <category>mockexam</category>
    </item>
    <item>
      <title>How to prepare for the CKAD exam?</title>
      <dc:creator>Subodh D</dc:creator>
      <pubDate>Mon, 25 Jan 2021 02:36:13 +0000</pubDate>
      <link>https://forem.com/subodev/how-to-prepare-for-the-ckad-exam-4oa3</link>
      <guid>https://forem.com/subodev/how-to-prepare-for-the-ckad-exam-4oa3</guid>
      <description>&lt;h1&gt;
  
  
  How to prepare for the CKAD exam?
&lt;/h1&gt;

&lt;h2&gt;
  
  
  About Me
&lt;/h2&gt;

&lt;p&gt;I have been working on Kubernetes applications for the last two years. So, I decided to attempt CNCF sponsored CKAD exam to test my knowledge and experience that I gained over the period. I am delighted that I scored 98% in the exam and would like to share the resources and platforms I used to practice for the exam. If you have spent a year developing Kubernetes applications, I am sure you do not need the basics of what Kubernetes is. So this blog post lists various resources you can harness to get exam ready and brush up on your core Kubernetes domain knowledge. I hope these resources are helpful to you.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to prepare for the CKAD exam?
&lt;/h2&gt;

&lt;p&gt;How to prepare for the CKAD exam? Only one answer – &lt;strong&gt;PRACTICE! PRACTICE! PRACTICE!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;CKAD: Certified Kubernetes Application Developer Exam is one of the most hands-on exam I have attempted to test your day to day skills required as a Kubernetes application developer.&lt;/p&gt;

&lt;p&gt;You can use the CKAD’s curriculum to sharpen your skills to more efficiently manage your cluster resources and manage any applications deployed on the clusters.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where can I practice for the CKAD exam?
&lt;/h2&gt;

&lt;p&gt;CKAD exam keeps getting updated every time a new Kubernetes release is available. Some of the fastest ways to get a practice cluster up with the same Kubernetes version as the exam are:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://minikube.sigs.k8s.io/docs/start/"&gt;Minikube&lt;/a&gt; - You can always download the latest version of Minikube, which has the latest Kubernetes version support available in a few weeks.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://docs.docker.com/docker-for-mac/kubernetes/"&gt;Docker-for-Mac&lt;/a&gt; - Recently, docker-for-mac has been updating quite regularly to keep up with the latest Kubernetes versions. You can use docker-for-mac to practice locally on your workstation.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://azure.microsoft.com/en-us/services/kubernetes-service/"&gt;Microsoft Azure Kubernetes Service&lt;/a&gt; - In my experience AKS is one of the public cloud providers with the latest Kubernetes version available earlier than the other public cloud providers. Sometimes within few weeks.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://kodekloud.com/"&gt;KodeKloud&lt;/a&gt; - It offers a set of courses specially designed for CKA/CKAD exams. All these courses offered are practical oriented. They offer scenario-based lab sessions and use these clusters for your practice. &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.katacoda.com/courses/kubernetes/playground"&gt;KataKoda&lt;/a&gt; - Although this has free environments to run, they might have older versions. But you can still use them to get started with the basics&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  What is the syllabus for the CKAD exam?
&lt;/h2&gt;

&lt;p&gt;The CNCF foundation releases the curriculum for the CKAD exam from time to time for each Kubernetes version. You can find the CKAD Curriculum on &lt;a href="https://github.com/cncf/curriculum"&gt;Github&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Note: The curriculum for the CKAD exam has been the same for the past few versions.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Practice questions for CKAD
&lt;/h2&gt;

&lt;p&gt;Following is a list of some GitHub repositories that have a set of questions that you can refer to practice your skills. &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://github.com/subodh-dharma/ckad"&gt;subodh-dharma/ckad&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/dgkanatsios/CKAD-exercises#contents"&gt;dgkanatsios/CKAD-exercise&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/bmuschko/ckad-prep#demos"&gt;bmuschko/ckad-prep&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/bbachi/CKAD-Practice-Questions#table-of-contents"&gt;bbachi/CKAD-Practice-Questions&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Is there any online course for CKAD preparation?
&lt;/h2&gt;

&lt;p&gt;Yes, there are a bunch of them. In my experience, I came across a couple of courses that I will list below. The courses below explain the concepts required for the curriculum so you can register for any of them and practice more with them. &lt;/p&gt;

&lt;p&gt;In my experience, I highly recommend Udemy’s CKAD course by Mumshad Mannambeth. The advantage of this course is that you get an interactive in-browser environment to practice the questions.&lt;/p&gt;

&lt;p&gt;Here is the list of online course that I came across:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://www.cncf.io/certification/training/"&gt;CNCF CKAD Training&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.udemy.com/course/certified-kubernetes-application-developer/"&gt;Kubernetes Certified Application Developer (CKAD) with Tests&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.udemy.com/course/mastering-certified-kubernetes-application-developer/"&gt;CKAD Course by Zeal Vora&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Are there any mock tests available for CKAD?
&lt;/h2&gt;

&lt;p&gt;Yes, of course there are! There are two platforms where you can practice for the tests.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://kodekloud.com/"&gt;KodeKloud&lt;/a&gt; - If you register for the CKAD course by Mumshad Mannambeth you will get free access to this platform. You can subscribe to it monthly for $19 monthly.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://killer.sh/"&gt;Killer.sh&lt;/a&gt; - This is a CKAD/CKA/CKS exam simulator and is very close to simulating the actual exam environment. A one time subscription offers two sessions when you register the first time. Each session lasts 36 hours. You can start the exam anytime you want that lasts for 2 hours. You can use the rest of the time to practice questions from any of the above sources.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Practice hard and All the Best for your exams!&lt;/p&gt;

</description>
      <category>kubernetes</category>
      <category>ckad</category>
      <category>cncf</category>
      <category>certification</category>
    </item>
  </channel>
</rss>
