1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
| ~/gitFolders/build-breaking-fixing-kubernetes master* ⇡
❯ k get pod hello-world --namespace default
NAME READY STATUS RESTARTS AGE
hello-world 0/1 ErrImagePull 0 32s
~/gitFolders/build-breaking-fixing-kubernetes master* ⇡
❯ k get pod hello-world --namespace default
NAME READY STATUS RESTARTS AGE
hello-world 0/1 ImagePullBackOff 0 44s
~/gitFolders/build-breaking-fixing-kubernetes master* ⇡
❯ k describe pod hello-world --namespace default
Name: hello-world
Namespace: default
Priority: 0
Service Account: default
Node: kind-control-plane/172.20.0.2
Start Time: Wed, 26 Nov 2025 21:53:30 +0900
Labels: app=hello-world
Annotations: <none>
Status: Pending
IP: 10.244.0.10
IPs:
IP: 10.244.0.10
Containers:
hello-server:
Container ID:
Image: hello-server:1.1.0
Image ID:
Port: 8080/TCP
Host Port: 0/TCP
State: Waiting
Reason: ErrImagePull
Ready: False
Restart Count: 0
Environment: <none>
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-wpdqn (ro)
Conditions:
Type Status
PodReadyToStartContainers True
Initialized True
Ready False
ContainersReady False
PodScheduled True
Volumes:
kube-api-access-wpdqn:
Type: Projected (a volume that contains injected data from multiple sources)
TokenExpirationSeconds: 3607
ConfigMapName: kube-root-ca.crt
Optional: false
DownwardAPI: true
QoS Class: BestEffort
Node-Selectors: <none>
Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 60s default-scheduler Successfully assigned default/hello-world to kind-control-plane
Normal Pulling 16s (x3 over 60s) kubelet Pulling image "hello-server:1.1.0"
Warning Failed 15s (x3 over 58s) kubelet Failed to pull image "hello-server:1.1.0": failed to pull and unpack image "docker.io/library/hello-server:1.1.0": failed to resolve reference "docker.io/library/hello-server:1.1.0": pull access denied, repository does not exist or may require authorization: server message: insufficient_scope: authorization failed
Warning Failed 15s (x3 over 58s) kubelet Error: ErrImagePull
Normal BackOff 0s (x3 over 58s) kubelet Back-off pulling image "hello-server:1.1.0"
Warning Failed 0s (x3 over 58s) kubelet Error: ImagePullBackOff
~/gitFolders/build-breaking-fixing-kubernetes master* ⇡
❯ k edit pod hello-world --
-- completions --
--allow-missing-template-keys -- If true, ignore any errors in templates wh
--as -- Username to impersonate for the operation.
--as-group -- Group to impersonate for the operation, th
--as-uid -- UID to impersonate for the operation.
--cache-dir -- Default cache directory
--certificate-authority -- Path to a cert file for the certificate au
--client-certificate -- Path to a client certificate file for TLS
--client-key -- Path to a client key file for TLS
--cluster -- The name of the kubeconfig cluster to use
--context -- The name of the kubeconfig context to use
--disable-compression -- If true, opt-out of response compression f
--field-manager -- Name of the manager used to track field ow
--filename -- Filename, directory, or URL to files to us
--help -- help for edit
--insecure-skip-tls-verify -- If true, the server's certificate will not
--kubeconfig -- Path to the kubeconfig file to use for CLI
--kuberc -- Path to the kuberc file to use for prefere
--kustomize -- Process the kustomization directory. This
--log-flush-frequency -- Maximum number of seconds between log flus
--match-server-version -- Require server version to match client ver
--namespace -- If present, the namespace scope for this C
--output -- Output format. One of: (json, yaml, name,
--output-patch -- Output the patch if the resource is edited
--password -- Password for basic authentication to the A
--profile -- Name of profile to capture. One of (none|c
--profile-output -- Name of the file to write the profile to
--recursive -- Process the directory used in -f, --filena
--request-timeout -- The length of time to wait before giving u
--save-config -- If true, the configuration of current obje
--server -- The address and port of the Kubernetes API
--show-managed-fields -- If true, keep the managedFields when print
--subresource -- If specified, edit will operate on the sub
--template -- Template string or path to template file t
--tls-server-name -- Server name to use for server certificate
--token -- Bearer token for authentication to the API
--user -- The name of the kubeconfig user to use
--username -- Username for basic authentication to the A
--v -- number for the log level verbosity
--validate -- Must be one of: strict (or true), warn, ig
--vmodule -- comma-separated list of pattern=N settings
--warnings-as-errors -- Treat warnings received from the server as
--windows-line-endings -- Defaults to the line ending native to your
~/gitFolders/build-breaking-fixing-kubernetes master* ⇡
❯ k edit pod hello-world --namespace default
pod/hello-world edited
~/gitFolders/build-breaking-fixing-kubernetes master* ⇡ 16s
❯ k get pod hello-world --namespace default
NAME READY STATUS RESTARTS AGE
hello-world 1/1 Running 0 2m1s
~/gitFolders/build-breaking-fixing-kubernetes master* ⇡
❯ k delete --filename chapter-05/pod-destruction.yaml --namespace default
pod "hello-world" deleted from default namespace
~/gitFolders/build-breaking-fixing-kubernetes master* ⇡
❯ k get pod --namespace default
No resources found in default namespace.
|