McAfee Secure

CNCF CKA Bundle

Exam Code: CKA

Exam Name Certified Kubernetes Administrator

Certification Provider: CNCF

Corresponding Certification: CKA

CNCF CKA Bundle $44.99

100% CNCF CKA Guaranteed Success With Testking Training Materials

Get Real CKA Exam Questions & Expert Verified Answers as Experienced on the Real Exam!

  • Questions & Answers

    CKA Questions & Answers

    58 Questions & Answers

    The ultimate exam preparation tool, Questions & Answers mirrors the actual CKA exam while allowing you to hone and measure every aspect of your test-taking ability.

  • CKA Video Course

    CKA Training Course

    138 Video Lectures

    CKA Video Course is developed by CNCF Professionals to help you pass the CKA exam.

    Description

    This course will improve your knowledge and skills required to pass Certified Kubernetes Administrator exam.
  • Study Guide

    CKA Study Guide

    268 PDF Pages

    Developed by industry experts, this 268-page guide spells out in painstaking detail all of the information you need to ace CKA exam.

Certified Kubernetes Administrator (CKA) Practice Tests

Satisfaction Guaranteed

Money Back Guarantee

Testking provides hassle-free money back guarantee with our products. That is because we have 100% trust in the abilities of our professional and experience product team, and our record is a proof of that.

99.6% PASS RATE
Total Cost: $194.97
Bundle Price: $149.98

Purchase Individually

  • Questions & Answers

    Questions & Answers

    58 Questions

    $124.99
  • CKA Video Course

    Training Course

    138 Video Lectures

    $39.99
  • Study Guide

    Study Guide

    268 PDF Pages

    $29.99

CNCF CKA Practice Test 89

Question 880

At Northstar finance, in an isolated training cluster during a scheduled maintenance rehearsal: Pod invoice-api in namespace ledger stays Pending with scheduler events stating Insufficient cpu. Work only within the stated target and verify before declaring success. Which operational control most directly prevents this failure or configuration drift?

  1. Monitor control-plane scheduler health and validate static Pod manifest changes.
  2. Keep cleanup controllers healthy and document controlled escalation for stuck finalizers.
  3. Review sizing and autoscaling headroom against known resource requests.
  4. Test DNS policy and search domains during application Pod template changes.

Explanation

Correct Answer

C:

Review sizing and autoscaling headroom against known resource requests. This reduces recurrence of the specific operational failure. It reinforces the action: Run kubectl -n ledger describe pod invoice-api and compare CPU requests with kubectl describe node worker-a allocatable resources. The relevant mechanism is: The scheduler places Pods by requested resources and constraints, not the current shell's observed free CPU alone.

Incorrect Answers

A:

That safeguard is relevant to: The scheduler assigns unscheduled Pods to nodes; a broken scheduler differs from per-Pod placement constraints. The current failure instead follows from: The scheduler places Pods by requested resources and constraints, not the current shell's observed free CPU alone. Its prevention measure is “Review sizing and autoscaling headroom against known resource requests”.

B:

This routine guards against another mechanism: Finalizers protect cleanup work; forcibly removing them without identifying failing controllers can orphan resources and leak infrastructure. The recurring exposure in the current case is: The scheduler places Pods by requested resources and constraints, not the current shell's observed free CPU alone. The matching preventive check is “Review sizing and autoscaling headroom against known resource requests”.

D:

That safeguard is relevant to: Cluster DNS search domains and dnsPolicy control short-name resolution; resolving a public hostname is not proof of Kubernetes Service resolution. The current failure instead follows from: The scheduler places Pods by requested resources and constraints, not the current shell's observed free CPU alone. Its prevention measure is “Review sizing and autoscaling headroom against known resource requests”.

Question 881

At Horizon observability, in a disposable simulated environment during a monitored release window: Pod metrics-api in namespace observability stays Pending with scheduler events stating Insufficient cpu. Work only within the stated target and verify before declaring success. Which command or initial safe diagnostic step best addresses the stated lab task?

  1. Run kubectl -n observability describe pod metrics-api and compare CPU requests with kubectl describe node worker-b allocatable resources.
  2. Run kubectl -n observability describe pod metrics-api and compare Pod tolerations with kubectl describe node worker-b taints.
  3. Run kubectl -n observability logs pod/metrics-api --previous and inspect Pod events before changing the workload.
  4. Run kubectl get namespace observability -o yaml and inspect namespace conditions and remaining API resources before considering finalizer changes.

Explanation

Correct Answer

A:

Run kubectl -n observability describe pod metrics-api and compare CPU requests with kubectl describe node worker-b allocatable resources. This is the appropriate command-line action or first safe diagnostic. The technical reason is: The scheduler places Pods by requested resources and constraints, not the current shell's observed free CPU alone. Validate the result with: Confirm the scheduler events clear and the Pod is assigned after capacity or request adjustments. Execute changes only in an authorized disposable lab or after normal production change controls.

Incorrect Answers

B:

The proposed action belongs to the mechanism: A NoSchedule taint excludes Pods lacking a matching toleration even if the Node has free resources. Here the stated fault follows a different mechanism: The scheduler places Pods by requested resources and constraints, not the current shell's observed free CPU alone. The corrective choice is “Run kubectl -n observability describe pod metrics-api and compare CPU requests with kubectl describe node worker-b allocatable resources”.

C:

The offered action targets: CrashLoopBackOff is a restart backoff symptom, not a root cause; the preceding container logs often preserve the terminating process error. The case facts point instead to: The scheduler places Pods by requested resources and constraints, not the current shell's observed free CPU alone. Implement “Run kubectl -n observability describe pod metrics-api and compare CPU requests with kubectl describe node worker-b allocatable resources” to address that specific condition.

D:

This alternative is a response to another technical cause: Finalizers protect cleanup work; forcibly removing them without identifying failing controllers can orphan resources and leak infrastructure. The reported case instead depends on: The scheduler places Pods by requested resources and constraints, not the current shell's observed free CPU alone. The action that directly addresses it is “Run kubectl -n observability describe pod metrics-api and compare CPU requests with kubectl describe node worker-b allocatable resources”.

Question 882

At Horizon observability, in a disposable simulated environment during a monitored release window: Pod metrics-api in namespace observability stays Pending with scheduler events stating Insufficient cpu. Work only within the stated target and verify before declaring success. Which Kubernetes behavior best explains the required change or diagnosis?

  1. Node memory pressure can cause evictions and scheduling instability independent of one container's OOMKilled status.
  2. The scheduler places Pods by requested resources and constraints, not the current shell's observed free CPU alone.
  3. Liveness failure triggers restarts, while startup and readiness probes serve different lifecycle purposes.
  4. Cluster DNS search domains and dnsPolicy control short-name resolution; resolving a public hostname is not proof of Kubernetes Service resolution.

Explanation

Correct Answer

B:

The scheduler places Pods by requested resources and constraints, not the current shell's observed free CPU alone. This explains the stated condition. The corresponding action is: Run kubectl -n observability describe pod metrics-api and compare CPU requests with kubectl describe node worker-b allocatable resources. The direct acceptance evidence is: Confirm the scheduler events clear and the Pod is assigned after capacity or request adjustments.

Incorrect Answers

A:

Node memory pressure can cause evictions and scheduling instability independent of one container's OOMKilled status. That explanation applies to a different technical failure. Here the controlling principle is: The scheduler places Pods by requested resources and constraints, not the current shell's observed free CPU alone.

C:

This principle describes a separate cause: Liveness failure triggers restarts, while startup and readiness probes serve different lifecycle purposes. The reported condition is governed by: The scheduler places Pods by requested resources and constraints, not the current shell's observed free CPU alone. The two mechanisms should not be conflated.

D:

Cluster DNS search domains and dnsPolicy control short-name resolution; resolving a public hostname is not proof of Kubernetes Service resolution. That explanation applies to a different technical failure. Here the controlling principle is: The scheduler places Pods by requested resources and constraints, not the current shell's observed free CPU alone.

Question 883

At Horizon observability, in a disposable simulated environment during a monitored release window: Pod metrics-api in namespace observability stays Pending with scheduler events stating Insufficient cpu. Work only within the stated target and verify before declaring success. Which observation best verifies the requested outcome rather than an unrelated state?

  1. Run kubectl -n observability get pod metrics-api and confirm the image pulls and containers reach Running after the specific failure is corrected.
  2. Run kubectl -n observability get pvc metrics-data and confirm Bound with capacity and the intended StorageClass after correction.
  3. Confirm the scheduler events clear and the Pod is assigned after capacity or request adjustments.
  4. Confirm endpoint addresses appear for healthy selected Pods and test a request through metrics-svc.

Explanation

Correct Answer

C:

Confirm the scheduler events clear and the Pod is assigned after capacity or request adjustments. This validates the affected object or control path, rather than only showing a command completed. The underlying reason is: The scheduler places Pods by requested resources and constraints, not the current shell's observed free CPU alone. The intended action is: Run kubectl -n observability describe pod metrics-api and compare CPU requests with kubectl describe node worker-b allocatable resources.

Incorrect Answers

A:

That test belongs to another control with this basis: ImagePullBackOff indicates failed image retrieval; cluster DNS, credentials, registry availability and image names are distinct potential causes. In the current case, the governing reason is: The scheduler places Pods by requested resources and constraints, not the current shell's observed free CPU alone. The direct verification is “Confirm the scheduler events clear and the Pod is assigned after capacity or request adjustments”.

B:

This observation would test a different technical dependency: A PVC binds only to compatible available storage or successful dynamic provisioning; absent provisioners, quotas or delayed binding can leave it Pending. The current issue is governed by: The scheduler places Pods by requested resources and constraints, not the current shell's observed free CPU alone. Its decisive check is “Confirm the scheduler events clear and the Pod is assigned after capacity or request adjustments”.

D:

That test belongs to another control with this basis: A Service may exist without usable backends because labels or Pod readiness do not match expected routing. In the current case, the governing reason is: The scheduler places Pods by requested resources and constraints, not the current shell's observed free CPU alone. The direct verification is “Confirm the scheduler events clear and the Pod is assigned after capacity or request adjustments”.

Question 884

At Horizon observability, in a disposable simulated environment during a monitored release window: Pod metrics-api in namespace observability stays Pending with scheduler events stating Insufficient cpu. Work only within the stated target and verify before declaring success. Which operational control most directly prevents this failure or configuration drift?

  1. Validate selector and template-label consistency before initial resource creation.
  2. Monitor metrics-server availability and required resource requests when enabling autoscaling.
  3. Validate DaemonSet coverage whenever node labels, pools or taints change.
  4. Review sizing and autoscaling headroom against known resource requests.

Explanation

Correct Answer

D:

Review sizing and autoscaling headroom against known resource requests. This reduces recurrence of the specific operational failure. It reinforces the action: Run kubectl -n observability describe pod metrics-api and compare CPU requests with kubectl describe node worker-b allocatable resources. The relevant mechanism is: The scheduler places Pods by requested resources and constraints, not the current shell's observed free CPU alone.

Incorrect Answers

A:

This routine guards against another mechanism: A Deployment selector identifies Pods it owns and is generally immutable after creation; patching Service selectors alone does not repair ownership. The recurring exposure in the current case is: The scheduler places Pods by requested resources and constraints, not the current shell's observed free CPU alone. The matching preventive check is “Review sizing and autoscaling headroom against known resource requests”.

B:

The suggested review tracks a different technical risk: HPA CPU utilization is computed from reported metrics relative to requests; missing metrics or requests can prevent scaling decisions. Here the sustained control must address: The scheduler places Pods by requested resources and constraints, not the current shell's observed free CPU alone. Choose “Review sizing and autoscaling headroom against known resource requests”.

C:

That safeguard is relevant to: DaemonSets schedule according to node selection and toleration rules; unavailable node agents can break networking or logging on selected workers. The current failure instead follows from: The scheduler places Pods by requested resources and constraints, not the current shell's observed free CPU alone. Its prevention measure is “Review sizing and autoscaling headroom against known resource requests”.

Question 885

At Pinecrest logistics, in a sandbox Kubernetes cluster during a recovery tabletop exercise: Pod dispatch-api in namespace fulfillment stays Pending with scheduler events stating Insufficient cpu. Work only within the stated target and verify before declaring success. Which command or initial safe diagnostic step best addresses the stated lab task?

  1. Run kubectl -n fulfillment get networkpolicy -o yaml and compare podSelector, peers, ports and CNI policy support.
  2. Run kubectl -n fulfillment describe pod dispatch-api and compare CPU requests with kubectl describe node worker-c allocatable resources.
  3. Run kubectl -n kube-system get pods -l component=kube-scheduler and inspect scheduler static Pod logs where available.
  4. Run kubectl -n fulfillment exec dispatch-api -- cat /etc/resolv.conf and query dispatch-svc.fulfillment.svc.cluster.local from that Pod.

Explanation

Correct Answer

B:

Run kubectl -n fulfillment describe pod dispatch-api and compare CPU requests with kubectl describe node worker-c allocatable resources. This is the appropriate command-line action or first safe diagnostic. The technical reason is: The scheduler places Pods by requested resources and constraints, not the current shell's observed free CPU alone. Validate the result with: Confirm the scheduler events clear and the Pod is assigned after capacity or request adjustments. Execute changes only in an authorized disposable lab or after normal production change controls.

Incorrect Answers

A:

The proposed action belongs to the mechanism: NetworkPolicy allows only explicitly selected paths once Pod ingress or egress isolation applies, and both directions may matter. Here the stated fault follows a different mechanism: The scheduler places Pods by requested resources and constraints, not the current shell's observed free CPU alone. The corrective choice is “Run kubectl -n fulfillment describe pod dispatch-api and compare CPU requests with kubectl describe node worker-c allocatable resources”.

C:

This alternative is a response to another technical cause: The scheduler assigns unscheduled Pods to nodes; a broken scheduler differs from per-Pod placement constraints. The reported case instead depends on: The scheduler places Pods by requested resources and constraints, not the current shell's observed free CPU alone. The action that directly addresses it is “Run kubectl -n fulfillment describe pod dispatch-api and compare CPU requests with kubectl describe node worker-c allocatable resources”.

D:

The proposed action belongs to the mechanism: Cluster DNS search domains and dnsPolicy control short-name resolution; resolving a public hostname is not proof of Kubernetes Service resolution. Here the stated fault follows a different mechanism: The scheduler places Pods by requested resources and constraints, not the current shell's observed free CPU alone. The corrective choice is “Run kubectl -n fulfillment describe pod dispatch-api and compare CPU requests with kubectl describe node worker-c allocatable resources”.

Question 886

At Pinecrest logistics, in a sandbox Kubernetes cluster during a recovery tabletop exercise: Pod dispatch-api in namespace fulfillment stays Pending with scheduler events stating Insufficient cpu. Work only within the stated target and verify before declaring success. Which Kubernetes behavior best explains the required change or diagnosis?

  1. Cluster DNS search domains and dnsPolicy control short-name resolution; resolving a public hostname is not proof of Kubernetes Service resolution.
  2. A PVC binds only to compatible available storage or successful dynamic provisioning; absent provisioners, quotas or delayed binding can leave it Pending.
  3. The scheduler places Pods by requested resources and constraints, not the current shell's observed free CPU alone.
  4. A Deployment selector identifies Pods it owns and is generally immutable after creation; patching Service selectors alone does not repair ownership.

Explanation

Correct Answer

C:

The scheduler places Pods by requested resources and constraints, not the current shell's observed free CPU alone. This explains the stated condition. The corresponding action is: Run kubectl -n fulfillment describe pod dispatch-api and compare CPU requests with kubectl describe node worker-c allocatable resources. The direct acceptance evidence is: Confirm the scheduler events clear and the Pod is assigned after capacity or request adjustments.

Incorrect Answers

A:

The offered statement is true for this other mechanism: Cluster DNS search domains and dnsPolicy control short-name resolution; resolving a public hostname is not proof of Kubernetes Service resolution. It does not explain the facts described here, which follow from: The scheduler places Pods by requested resources and constraints, not the current shell's observed free CPU alone.

B:

This principle describes a separate cause: A PVC binds only to compatible available storage or successful dynamic provisioning; absent provisioners, quotas or delayed binding can leave it Pending. The reported condition is governed by: The scheduler places Pods by requested resources and constraints, not the current shell's observed free CPU alone. The two mechanisms should not be conflated.

D:

The offered statement is true for this other mechanism: A Deployment selector identifies Pods it owns and is generally immutable after creation; patching Service selectors alone does not repair ownership. It does not explain the facts described here, which follow from: The scheduler places Pods by requested resources and constraints, not the current shell's observed free CPU alone.

Question 887

At Pinecrest logistics, in a sandbox Kubernetes cluster during a recovery tabletop exercise: Pod dispatch-api in namespace fulfillment stays Pending with scheduler events stating Insufficient cpu. Work only within the stated target and verify before declaring success. Which observation best verifies the requested outcome rather than an unrelated state?

  1. Verify the exact toleration or deliberate taint removal and confirm that the Pod schedules to an eligible node.
  2. Confirm endpoint addresses appear for healthy selected Pods and test a request through dispatch-svc.
  3. Run kubectl -n fulfillment get daemonset dispatch-api and inspect desired/ready counts after the specific node issue is fixed.
  4. Confirm the scheduler events clear and the Pod is assigned after capacity or request adjustments.

Explanation

Correct Answer

D:

Confirm the scheduler events clear and the Pod is assigned after capacity or request adjustments. This validates the affected object or control path, rather than only showing a command completed. The underlying reason is: The scheduler places Pods by requested resources and constraints, not the current shell's observed free CPU alone. The intended action is: Run kubectl -n fulfillment describe pod dispatch-api and compare CPU requests with kubectl describe node worker-c allocatable resources.

Incorrect Answers

A:

This observation would test a different technical dependency: A NoSchedule taint excludes Pods lacking a matching toleration even if the Node has free resources. The current issue is governed by: The scheduler places Pods by requested resources and constraints, not the current shell's observed free CPU alone. Its decisive check is “Confirm the scheduler events clear and the Pod is assigned after capacity or request adjustments”.

B:

The alternative verifies a different condition: A Service may exist without usable backends because labels or Pod readiness do not match expected routing. The current case instead depends on: The scheduler places Pods by requested resources and constraints, not the current shell's observed free CPU alone. Confirm that “Confirm the scheduler events clear and the Pod is assigned after capacity or request adjustments”.

C:

That test belongs to another control with this basis: DaemonSets schedule according to node selection and toleration rules; unavailable node agents can break networking or logging on selected workers. In the current case, the governing reason is: The scheduler places Pods by requested resources and constraints, not the current shell's observed free CPU alone. The direct verification is “Confirm the scheduler events clear and the Pod is assigned after capacity or request adjustments”.

Question 888

At Pinecrest logistics, in a sandbox Kubernetes cluster during a recovery tabletop exercise: Pod dispatch-api in namespace fulfillment stays Pending with scheduler events stating Insufficient cpu. Work only within the stated target and verify before declaring success. Which operational control most directly prevents this failure or configuration drift?

  1. Review sizing and autoscaling headroom against known resource requests.
  2. Validate selector and template-label consistency before initial resource creation.
  3. Monitor control-plane scheduler health and validate static Pod manifest changes.
  4. Baseline memory requests and track node allocatable resources and eviction signals.

Explanation

Correct Answer

A:

Review sizing and autoscaling headroom against known resource requests. This reduces recurrence of the specific operational failure. It reinforces the action: Run kubectl -n fulfillment describe pod dispatch-api and compare CPU requests with kubectl describe node worker-c allocatable resources. The relevant mechanism is: The scheduler places Pods by requested resources and constraints, not the current shell's observed free CPU alone.

Incorrect Answers

B:

That safeguard is relevant to: A Deployment selector identifies Pods it owns and is generally immutable after creation; patching Service selectors alone does not repair ownership. The current failure instead follows from: The scheduler places Pods by requested resources and constraints, not the current shell's observed free CPU alone. Its prevention measure is “Review sizing and autoscaling headroom against known resource requests”.

C:

This routine guards against another mechanism: The scheduler assigns unscheduled Pods to nodes; a broken scheduler differs from per-Pod placement constraints. The recurring exposure in the current case is: The scheduler places Pods by requested resources and constraints, not the current shell's observed free CPU alone. The matching preventive check is “Review sizing and autoscaling headroom against known resource requests”.

D:

The suggested review tracks a different technical risk: Node memory pressure can cause evictions and scheduling instability independent of one container's OOMKilled status. Here the sustained control must address: The scheduler places Pods by requested resources and constraints, not the current shell's observed free CPU alone. Choose “Review sizing and autoscaling headroom against known resource requests”.

Question 889

At Northstar finance, in an isolated training cluster during a scheduled maintenance rehearsal: Pod invoice-api in ledger is Pending because it requires workload=restricted and no eligible Ready nodes carry that label. Work only within the stated target and verify before declaring success. Which command or initial safe diagnostic step best addresses the stated lab task?

  1. Run kubectl -n ledger get networkpolicy -o yaml and compare podSelector, peers, ports and CNI policy support.
  2. Run kubectl auth can-i list pods -n ledger --as=system:serviceaccount:ledger:release-bot and inspect its RoleBindings.
  3. Run kubectl get nodes -l workload=restricted and compare with kubectl -n ledger describe pod invoice-api before changing node labels.
  4. Run kubectl -n ledger get deployment invoice-api -o yaml and inspect immutable selector and Pod-template labels before planning controlled replacement.

Explanation

Correct Answer

C:

Run kubectl get nodes -l workload=restricted and compare with kubectl -n ledger describe pod invoice-api before changing node labels. This is the appropriate command-line action or first safe diagnostic. The technical reason is: A hard nodeSelector must match a Node's actual labels; tolerations or Service routing cannot bypass the unmatched selector. Validate the result with: Run kubectl -n ledger get pod invoice-api -o wide after an approved matching label or selector correction and confirm a suitable node. Execute changes only in an authorized disposable lab or after normal production change controls.

Incorrect Answers

A:

The offered action targets: NetworkPolicy allows only explicitly selected paths once Pod ingress or egress isolation applies, and both directions may matter. The case facts point instead to: A hard nodeSelector must match a Node's actual labels; tolerations or Service routing cannot bypass the unmatched selector. Implement “Run kubectl get nodes -l workload=restricted and compare with kubectl -n ledger describe pod invoice-api before changing node labels” to address that specific condition.

B:

This alternative is a response to another technical cause: Authentication establishes identity but authorization still requires permitted verbs, resources and scope in matching RBAC bindings. The reported case instead depends on: A hard nodeSelector must match a Node's actual labels; tolerations or Service routing cannot bypass the unmatched selector. The action that directly addresses it is “Run kubectl get nodes -l workload=restricted and compare with kubectl -n ledger describe pod invoice-api before changing node labels”.

D:

The offered action targets: A Deployment selector identifies Pods it owns and is generally immutable after creation; patching Service selectors alone does not repair ownership. The case facts point instead to: A hard nodeSelector must match a Node's actual labels; tolerations or Service routing cannot bypass the unmatched selector. Implement “Run kubectl get nodes -l workload=restricted and compare with kubectl -n ledger describe pod invoice-api before changing node labels” to address that specific condition.

Question 890

At Northstar finance, in an isolated training cluster during a scheduled maintenance rehearsal: Pod invoice-api in ledger is Pending because it requires workload=restricted and no eligible Ready nodes carry that label. Work only within the stated target and verify before declaring success. Which Kubernetes behavior best explains the required change or diagnosis?

  1. A running container is not necessarily Ready; failing readiness can remove a Pod from ready Service endpoints.
  2. A NoSchedule taint excludes Pods lacking a matching toleration even if the Node has free resources.
  3. The scheduler places Pods by requested resources and constraints, not the current shell's observed free CPU alone.
  4. A hard nodeSelector must match a Node's actual labels; tolerations or Service routing cannot bypass the unmatched selector.

Explanation

Correct Answer

D:

A hard nodeSelector must match a Node's actual labels; tolerations or Service routing cannot bypass the unmatched selector. This explains the stated condition. The corresponding action is: Run kubectl get nodes -l workload=restricted and compare with kubectl -n ledger describe pod invoice-api before changing node labels. The direct acceptance evidence is: Run kubectl -n ledger get pod invoice-api -o wide after an approved matching label or selector correction and confirm a suitable node.

Incorrect Answers

A:

This principle describes a separate cause: A running container is not necessarily Ready; failing readiness can remove a Pod from ready Service endpoints. The reported condition is governed by: A hard nodeSelector must match a Node's actual labels; tolerations or Service routing cannot bypass the unmatched selector. The two mechanisms should not be conflated.

B:

A NoSchedule taint excludes Pods lacking a matching toleration even if the Node has free resources. That explanation applies to a different technical failure. Here the controlling principle is: A hard nodeSelector must match a Node's actual labels; tolerations or Service routing cannot bypass the unmatched selector.

C:

The offered statement is true for this other mechanism: The scheduler places Pods by requested resources and constraints, not the current shell's observed free CPU alone. It does not explain the facts described here, which follow from: A hard nodeSelector must match a Node's actual labels; tolerations or Service routing cannot bypass the unmatched selector.