Skip to content

docs: fix stale URLs (gcr.io, k8s.gcr.io), misleading solutions, and typos#394

Open
dashitongzhi wants to merge 1 commit into
dgkanatsios:mainfrom
dashitongzhi:feat/docs-20260604092814
Open

docs: fix stale URLs (gcr.io, k8s.gcr.io), misleading solutions, and typos#394
dashitongzhi wants to merge 1 commit into
dgkanatsios:mainfrom
dashitongzhi:feat/docs-20260604092814

Conversation

@dashitongzhi

Copy link
Copy Markdown

Addresses 5 separate student-facing issues in this CKAD practice repo.

Stale image references

  • c.pod_design.md: replace gcr.io/google-containers/busybox (read-only since 2022) with the official busybox in both canary/blue-green exercise solutions.
  • c.pod_design.md: replace k8s.gcr.io/cuda-vector-add (deprecated in 2022) with registry.k8s.io/cuda-vector-add in the GPU exercise.

Misleading / confusing instructions

  • c.pod_design.md: the canary while … curl … line must run inside a cluster pod, not on the host shell, because the Service ClusterIP is only reachable in-cluster. Replaced with a kubectl run curl --image=curlimages/curl one-liner plus an explanatory comment. (refs Not clear suggestion in deployment canary exercise #281)
  • d.configuration.md: rephrased the LimitRange exercise question from the ambiguous "Describe the namespace limitrange" to "Describe the limitrange in the namespace limitrange" so it matches the actual kubectl describe limitrange -n limitrange solution. (refs LimitRange task seems to not match with the provided answer #374)
  • f.services.md: in the wget service-reachability example the host-side $IP and the in-pod $IP were the same variable name. Renamed the in-pod env to $SVC_IP and added a comment. (refs Misleading solution in 'hitting IP with wget'? #231)

Typos

Refs #231, #281, #295, #342, #374.

…e wording

Fixes 5 separate student-facing issues that have been open for a while:

- c.pod_design.md: replace the deprecated 'gcr.io/google-containers/busybox'
  image with the official 'busybox' from Docker Hub in the canary /
  blue-green exercise solutions (gcr.io/google-containers/* is
  read-only since 2022 and any contributor following these
  instructions today gets a pull failure).
- c.pod_design.md: in the same exercise, the 'while … curl …' step
  must run inside a cluster pod, not on the host shell, because
  the Service ClusterIP is only reachable in-cluster. The new
  solution uses 'kubectl run curl --image=curlimages/curl' to
  spin up a throwaway curl pod and adds a comment explaining why.
- c.pod_design.md: replace the deprecated 'k8s.gcr.io/cuda-vector-add'
  image with 'registry.k8s.io/cuda-vector-add' (k8s.gcr.io was
  deprecated in 2022).
- d.configuration.md: rewrite the LimitRange exercise question
  from the ambiguous 'Describe the namespace limitrange' to
  'Describe the limitrange in the namespace `limitrange`' —
  matches the actual kubectl command in the solution.
- f.services.md: in the wget service-reachability example the
  host-side $IP and the in-pod $IP were the same variable name,
  which causes confusion in shell quoting. Rename the in-pod env
  to $SVC_IP and add a comment.
- README.md: two typos — 'excercise' → 'exercise' and
  'checkout out' → 'check out'.

Refs dgkanatsios#231, dgkanatsios#281, dgkanatsios#295, dgkanatsios#342, dgkanatsios#374.
Copilot AI review requested due to automatic review settings June 4, 2026 01:33

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Note

Copilot was unable to run its full agentic suite in this review.

Documentation refresh to improve Kubernetes exercise accuracy and clarity, including updated container image registries and correcting command examples/typos.

Changes:

  • Updated deprecated Kubernetes image registry references (k8s.gcr.io / gcr.io/google-containers) to current equivalents.
  • Clarified in-cluster vs host execution for Service ClusterIP access and improved command readability.
  • Fixed minor typos/wording in README and headings.

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 2 comments.

File Description
f.services.md Clarifies env var usage in kubectl run + wget example.
d.configuration.md Improves wording of a section heading for clarity.
c.pod_design.md Updates deprecated image registries and adjusts service test commands.
README.md Fixes typos and improves phrasing in project intro.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread c.pod_design.md
# Note: this `curl` must be executed from inside a Pod in the cluster (see issue #281),
# not from the host shell, since the Service ClusterIP is only reachable in-cluster.
# A simple way to do that is to spin up a throwaway curl pod:
kubectl run curl --image=curlimages/curl --rm -it --restart=Never -- sh -c 'while sleep 0.1; do curl $(kubectl get svc my-app-svc -o jsonpath="{.spec.clusterIP}"); done'
Comment thread f.services.md
kubectl run busybox --rm --image=busybox -it --restart=Never --env="IP=$IP" -- wget -O- $IP:80 --timeout 2
# Note: the env var name passed to the pod is intentionally different from the host-side $IP
# so that the variable inside the container is unambiguous (see issue #231)
kubectl run busybox --rm --image=busybox -it --restart=Never --env="SVC_IP=$IP" -- sh -c 'wget -O- $SVC_IP:80 --timeout 2'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants