此外,這些KaoGuTi CKAD考試題庫的部分內容現在是免費的:https://drive.google.com/open?id=1zH9chTodAlyz4_OEeRG5H-ctbzl7iRHf
看著這麼多種IT認證考試和這麼多考試資料,你是否感到頭疼了呢?到底要怎麼辦才好呢?要選擇哪種考試哪種資料呢?如果你不知道應該怎麼選擇,那麼我來替你選擇吧。你可以選擇參加最近很有人氣的Linux Foundation的CKAD認證考試。得到這個考試的認證資格,你可以得到很大的好處。另外,為了更有效率地準備考試,你可以選擇KaoGuTi的CKAD考古題。這是你輕鬆通過考試的最好的方法。
| Section | Objectives |
|---|---|
| Application Design and Build | - Understand multi-container Pod design patterns - Understand Jobs and CronJobs - Define, build and modify container images |
| Application Environment, Configuration and Security | - Security contexts and service accounts - ConfigMaps and Secrets usage |
| Application Observability and Maintenance | - Monitor and troubleshoot applications - Understand probes and health checks |
| State Persistence | - PersistentVolumes and PersistentVolumeClaims - Storage classes and volume mounting |
| Application Deployment | - Understand rolling updates and rollbacks - Use Kubernetes primitives to implement deployments |
| Services and Networking | - Services (ClusterIP, NodePort) - Pod networking concepts - Ingress basics |
KaoGuTi的CKAD考古題有著讓你難以置信的命中率。這個考古題包含實際考試中可能出現的一切問題。因此,只要你好好學習這個考古題,通過CKAD考試就會非常容易。作為Linux Foundation的一項重要的考試,CKAD考試的認證資格可以給你帶來很大的好處。所以你絕對不能因為失去這次可以成功通過考試的機會。KaoGuTi承諾如果考試失敗就全額退款。為了你能順利通過CKAD考試,趕緊去KaoGuTi的網站瞭解更多的資訊吧。
問題 #165
You need to configure a Kubernetes deployment to use a secret stored in a different namespace. How can you access the secret in a different namespace, and how can you mount it as a file in your deployment's container?
答案:
解題說明:
See the solution below with Step by Step Explanation.
Explanation:
Solution (Step by Step) :
I). Ensure Access to the Secret:
- The service account used by your deployment needs to have read access to the secret in the other namespace. This can be done using a Role and RoleBinding. If the service account already has access, skip to step 2.
- Create a role in the secret's namespace:
- Create a RoleBinding in the secret's namespace:
- Apply the Role and RoleBinding using: bash kubectl apply -f role-yaml kubectl apply -f rolebinding.yaml 2. Modify your Deployment - Update your Deployment YAML file to mount the secret as a file, specifying the namespace:
- Replace 'my-secret with the actual name of the secret and 'secret-namespace with the namespace where the secret is stored. 3. Apply the Updated Deployment: - Apply the updated deployment using: bash kubectl apply -f my-deployment.yaml 4. Access Secret Data: - The secret's data is now mounted in the container at the specified 'mountPatm. You can access the secret's data using the mounted file.]
問題 #166
Context
Context
Your application's namespace requires a specific service account to be used.
Task
Update the app-a deployment in the production namespace to run as the restrictedservice service account. The service account has already been created.
答案:
解題說明:
Solution:
問題 #167 
Context
A pod is running on the cluster but it is not responding.
Task
The desired behavior is to have Kubemetes restart the pod when an endpoint returns an HTTP 500 on the
/healthz endpoint. The service, probe-pod, should never send traffic to the pod while it is failing. Please complete the following:
* The application has an endpoint, /started, that will indicate if it can accept traffic by returning an HTTP 200.
If the endpoint returns an HTTP 500, the application has not yet finished initialization.
* The application has another endpoint /healthz that will indicate if the application is still working as expected by returning an HTTP 200. If the endpoint returns an HTTP 500 the application is no longer responsive.
* Configure the probe-pod pod provided to use these endpoints
* The probes should use port 8080
答案:
解題說明:
See the solution below.
Explanation
Solution:
apiVersion: v1
kind: Pod
metadata:
labels:
test: liveness
name: liveness-exec
spec:
containers:
- name: liveness
image: k8s.gcr.io/busybox
args:
- /bin/sh
- -c
- touch /tmp/healthy; sleep 30; rm -rf /tmp/healthy; sleep 600
livenessProbe:
exec:
command:
- cat
- /tmp/healthy
initialDelaySeconds: 5
periodSeconds: 5
In the configuration file, you can see that the Pod has a single Container. The periodSeconds field specifies that the kubelet should perform a liveness probe every 5 seconds. The initialDelaySeconds field tells the kubelet that it should wait 5 seconds before performing the first probe. To perform a probe, the kubelet executes the command cat /tmp/healthy in the target container. If the command succeeds, it returns 0, and the kubelet considers the container to be alive and healthy. If the command returns a non-zero value, the kubelet kills the container and restarts it.
When the container starts, it executes this command:
/bin/sh -c "touch /tmp/healthy; sleep 30; rm -rf /tmp/healthy; sleep 600" For the first 30 seconds of the container's life, there is a /tmp/healthy file. So during the first 30 seconds, the command cat /tmp/healthy returns a success code. After 30 seconds, cat /tmp/healthy returns a failure code.
Create the Pod:
kubectl apply -f https://k8s.io/examples/pods/probe/exec-liveness.yaml
Within 30 seconds, view the Pod events:
kubectl describe pod liveness-exec
The output indicates that no liveness probes have failed yet:
FirstSeen LastSeen Count From SubobjectPath Type Reason Message
--------- -------- ----- ---- ------------- -------- ------ -------
24s 24s 1 {default-scheduler } Normal Scheduled Successfully assigned liveness-exec to worker0
23s 23s 1 {kubelet worker0} spec.containers{liveness} Normal Pulling pulling image "k8s.gcr.io/busybox"
23s 23s 1 {kubelet worker0} spec.containers{liveness} Normal Pulled Successfully pulled image
"k8s.gcr.io/busybox"
23s 23s 1 {kubelet worker0} spec.containers{liveness} Normal Created Created container with docker id
86849c15382e; Security:[seccomp=unconfined]
23s 23s 1 {kubelet worker0} spec.containers{liveness} Normal Started Started container with docker id
86849c15382e
After 35 seconds, view the Pod events again:
kubectl describe pod liveness-exec
At the bottom of the output, there are messages indicating that the liveness probes have failed, and the containers have been killed and recreated.
FirstSeen LastSeen Count From SubobjectPath Type Reason Message
--------- -------- ----- ---- ------------- -------- ------ -------
37s 37s 1 {default-scheduler } Normal Scheduled Successfully assigned liveness-exec to worker0
36s 36s 1 {kubelet worker0} spec.containers{liveness} Normal Pulling pulling image "k8s.gcr.io/busybox"
36s 36s 1 {kubelet worker0} spec.containers{liveness} Normal Pulled Successfully pulled image
"k8s.gcr.io/busybox"
36s 36s 1 {kubelet worker0} spec.containers{liveness} Normal Created Created container with docker id
86849c15382e; Security:[seccomp=unconfined]
36s 36s 1 {kubelet worker0} spec.containers{liveness} Normal Started Started container with docker id
86849c15382e
2s 2s 1 {kubelet worker0} spec.containers{liveness} Warning Unhealthy Liveness probe failed: cat: can't open
'/tmp/healthy': No such file or directory
Wait another 30 seconds, and verify that the container has been restarted:
kubectl get pod liveness-exec
The output shows that RESTARTS has been incremented:
NAME READY STATUS RESTARTS AGE
liveness-exec 1/1 Running 1 1m
問題 #168
Refer to Exhibit.
Context
Developers occasionally need to submit pods that run periodically.
Task
Follow the steps below to create a pod that will start at a predetermined time and]which runs to completion only once each time it is started:
* Create a YAML formatted Kubernetes manifest /opt/KDPD00301/periodic.yaml that runs the following shell command: date in a single busybox container. The command should run every minute and must complete within 22 seconds or be terminated oy Kubernetes. The Cronjob namp and container name should both be hello
* Create the resource in the above manifest and verify that the job executes successfully at least once
答案:
解題說明:
Solution:


問題 #169
Context
You are asked to allow a Pod to communicate with two other Pods but nothing else.
You must connect to the correct host . Failure to do so may result
in a zero score.
!
[candidate@base] $ ssh ckad000
18
charming-macaw namespace to use a NetworkPolicy allowing the Pod to send and receive traffic only to and from the Pods front and db.
All required NetworkPolicies have already been created.
You must not create, modify or delete any NetworkPolicy while working on this task. You may only use existing NetworkPolicies .
答案:
解題說明:
See the Explanation below for complete solution.
Explanation:
ssh ckad00018
You cannot create/modify/delete any NetworkPolicy.
So the only way to make the existing policies "take effect" is to ensure the right Pods have the labels
/selectors those policies expect.
The task: in namespace charming-macaw, configure things so the target Pod can send + receive traffic ONLY to/from Pods front and db.
1) Inspect what NetworkPolicies already exist (don't change them)
kubectl -n charming-macaw get netpol
kubectl -n charming-macaw get netpol -o wide
Dump them to see the selectors they use:
kubectl -n charming-macaw get netpol -o yaml
You are looking for policies that:
* select the restricted pod via spec.podSelector
* and allow ingress/egress only with selectors that match front and db
* often there's also a "default deny" policy.
2) Identify the Pods and their current labels
kubectl -n charming-macaw get pods -o wide
kubectl -n charming-macaw get pods --show-labels
Specifically inspect labels for front and db:
kubectl -n charming-macaw get pod front --show-labels
kubectl -n charming-macaw get pod db --show-labels
(If they're Deployments instead of single Pods, do:)
kubectl -n charming-macaw get deploy --show-labels
kubectl -n charming-macaw get pods -l app=front --show-labels
kubectl -n charming-macaw get pods -l app=db --show-labels
3) Figure out which pod is "the Pod" to restrict
Usually there's a third pod (e.g., backend, api, app) besides front and db.
List pods again and identify the "other" one:
kubectl -n charming-macaw get pods
Let's assume the pod to restrict is called app (replace as needed):
TARGET=<pod-to-restrict>
4) Match the existing NetworkPolicy selectors by labeling pods (allowed) Because you can't edit NetworkPolicies, you must make labels on Pods (or their controllers) match the policies' selectors.
4.1 Determine the label required on the TARGET pod
From the YAML, find the policy that selects the restricted pod, e.g.:
spec:
podSelector:
matchLabels:
role: restricted
Extract podSelector from each policy quickly:
kubectl -n charming-macaw get netpol -o jsonpath='{range .items[*]}{.metadata.name}{" => "}{.spec.
podSelector}{"\n"}{end}'
Pick the selector that is meant for the restricted pod, then apply it to the TARGET pod (example:
role=restricted):
kubectl -n charming-macaw label pod $TARGET role=restricted --overwrite Best practice (if the pod is managed by a Deployment): label the Deployment template instead, so it persists.
Find the owner:
kubectl -n charming-macaw get pod $TARGET -o jsonpath='{.metadata.ownerReferences[0].kind}{" "}{.
metadata.ownerReferences[0].name}{"\n"}'
If it's a ReplicaSet, find its Deployment:
RS=$(kubectl -n charming-macaw get pod $TARGET -o jsonpath='{.metadata.ownerReferences[0].name}') kubectl -n charming-macaw get rs $RS -o jsonpath='{.metadata.ownerReferences[0].kind}{" "}{.metadata.
ownerReferences[0].name}{"\n"}'
Then label the Deployment (example):
kubectl -n charming-macaw label deploy <DEPLOYMENT_NAME> role=restricted --overwrite
4.2 Ensure front and db match what the allow-rules reference
Look inside the allow policy ingress.from / egress.to. You might see something like:
from:
- podSelector:
matchLabels:
name: front
- podSelector:
matchLabels:
name: db
So you must ensure:
* front pod has name=front
* db pod has name=db
Apply labels (examples-use what the policy expects):
kubectl -n charming-macaw label pod front name=front --overwrite
kubectl -n charming-macaw label pod db name=db --overwrite
Again, if they're Deployments, label the Deployment instead:
kubectl -n charming-macaw label deploy front name=front --overwrite
kubectl -n charming-macaw label deploy db name=db --overwrite
5) Verify the NetworkPolicies now "select" the right pods
Check which labels each pod has now:
kubectl -n charming-macaw get pods --show-labels
Confirm the restricted pod matches the NetPol podSelector:
kubectl -n charming-macaw get netpol <POLICY_NAME> -o jsonpath='{.spec.podSelector}{"\n"}' kubectl -n charming-macaw get pod $TARGET --show-labels
6) Functional verification (quick network tests)
Exec into the restricted pod and try to reach:
* front # allowed
* db # allowed
* anything else # blocked
If busybox has wget:
kubectl -n charming-macaw exec -it $TARGET -- sh -c 'wget
-qO- http://front 2
>/dev/null || true'
kubectl -n charming-macaw exec -it $TARGET -- sh -c 'wget
-qO- http://db 2
>/dev/null || true'
Test something that should be blocked (example: kubernetes service DNS name):
kubectl -n charming-macaw exec -it $TARGET -- sh -c 'wget -qO- https://kubernetes.default.svc 2>/dev/null
|| echo "blocked"'
Also test inbound (from front to target, and from db to target) if the target listens on a port; otherwise inbound testing may be limited.
What you're doing conceptually
* Existing NetPols are already correct.
* Your job is to make pod labels match the NetPol selectors so:
* default deny applies to the target
* allow rules apply only between target # front and target # db
問題 #170
......
在我們網站,您可以先免費嘗試下載我們的題庫DEMO,體驗我們的Linux Foundation CKAD考古題的品質,相信在您使用之后會很滿意我們的產品。成千上萬的IT考生通過我們的產品成功通過考試,該CKAD考古題的品質已被廣大考生檢驗。我們的Linux Foundation CKAD題庫根據實際考試的動態變化而更新,以確保CKAD考古題覆蓋率始終最高于99%。保證大家通過CKAD認證考試,如果您失敗,可以享受 100%的退款保證。
最新CKAD題庫: https://www.kaoguti.com/CKAD_exam-pdf.html
順便提一下,可以從雲存儲中下載KaoGuTi CKAD考試題庫的完整版:https://drive.google.com/open?id=1zH9chTodAlyz4_OEeRG5H-ctbzl7iRHf