Page MenuHomePhabricator

Investigate toolforge failure to schedule pods due to insufficient cpu
Closed, ResolvedPublic

Description

The issue has been reported on cloud@ and apparently sometimes toolforge / k8s fails to schedule pods due to insufficient cpu. Although AFAICS https://grafana.wmcloud.org/d/8GiwHDL4k/infra-kubernetes-cluster-overview?orgId=1&from=now-2d&to=now&timezone=utc&var-cluster=P8433460076D33992&viewPanel=panel-39 reports ~60% cpu requests, meaning there should be enough cpu available.

See also P92886 which contains kubectl output from the user

Event Timeline

I had the same thing happening again now when I tried starting another job. This one started after about half an hour, I think. It also has an event talking about "Insufficient memory":

Events:
  Type     Reason            Age                   From               Message
  ----     ------            ----                  ----               -------
  Warning  FailedScheduling  3m18s (x7 over 6m6s)  default-scheduler  0/81 nodes are available: 1 Insufficient memory, 11 node(s) didn't match Pod's node affinity/selector, 3 node(s) had untolerated taint {node-role.kubernetes.io/control-plane: }, 3 node(s) had untolerated taint {toolforge.org/gateway: true}, 64 Insufficient cpu. preemption: 0/81 nodes are available: 17 Preemption is not helpful for scheduling, 64 No preemption victims found for incoming pod.
  Warning  FailedScheduling  58s (x26 over 5m57s)  default-scheduler  0/81 nodes are available: 11 node(s) didn't match Pod's node affinity/selector, 3 node(s) had untolerated taint {node-role.kubernetes.io/control-plane: }, 3 node(s) had untolerated taint {toolforge.org/gateway: true}, 64 Insufficient cpu. preemption: 0/81 nodes are available: 17 Preemption is not helpful for scheduling, 64 No preemption victims found for incoming pod.

The whole log (relevant job at the end, named "make-declarations-wlm-2017-vc4s4"):

1tools.commonsdb-registry@tools-bastion-15:~$ kubectl describe pods
2Name: make-declarations-wle-2016-j9dks
3Namespace: tool-commonsdb-registry
4Priority: 0
5Service Account: default
6Node: tools-k8s-worker-nfs-12/172.16.5.235
7Start Time: Mon, 25 May 2026 05:49:44 +0000
8Labels: app.kubernetes.io/component=jobs
9 app.kubernetes.io/created-by=commonsdb-registry
10 app.kubernetes.io/managed-by=toolforge-jobs-framework
11 app.kubernetes.io/name=make-declarations-wle-2016
12 app.kubernetes.io/version=2
13 batch.kubernetes.io/controller-uid=6586dddb-a092-4cb2-aacd-bd3c6bef2d41
14 batch.kubernetes.io/job-name=make-declarations-wle-2016
15 controller-uid=6586dddb-a092-4cb2-aacd-bd3c6bef2d41
16 job-name=make-declarations-wle-2016
17 jobs.toolforge.org/emails=all
18 jobs.toolforge.org/filelog=yes
19 toolforge=tool
20 toolforge.org/mount-storage=all
21Annotations: cni.projectcalico.org/containerID: dffc2e83f65ca73213bcc1ab23cb7e9349d7ea4cfdd04dfaf1cc527ad1c94d52
22 cni.projectcalico.org/podIP: 192.168.204.45/32
23 cni.projectcalico.org/podIPs: 192.168.204.45/32
24Status: Running
25SeccompProfile: RuntimeDefault
26IP: 192.168.204.45
27IPs:
28 IP: 192.168.204.45
29Controlled By: Job/make-declarations-wle-2016
30Containers:
31 job:
32 Container ID: containerd://e246f1bda0c08e27a9ae01e1ea8df4aa0c7f7832e9f848b9ed3ec1fb8048198f
33 Image: tools-harbor.wmcloud.org/tool-commonsdb-registry/tool-commonsdb-registry:latest
34 Image ID: tools-harbor.wmcloud.org/tool-commonsdb-registry/tool-commonsdb-registry@sha256:31bd255332b76d23e1565c85b076b6ba04607bcd86baa5336ab9824a8c04f0ad
35 Port: <none>
36 Host Port: <none>
37 Command:
38 /bin/sh
39 -c
40 --
41 exec 1>>/data/project/commonsdb-registry/make-declarations-wle-2016.out;exec 2>>/data/project/commonsdb-registry/make-declarations-wle-2016.err;launcher env HOME=/workspace src/make_declaration.py -t mem:2.0Gi -t cpu:2.0 -t version:0.1.15 --verbose batch:category-47503701
42 State: Running
43 Started: Mon, 25 May 2026 05:49:49 +0000
44 Ready: True
45 Restart Count: 0
46 Limits:
47 cpu: 2
48 memory: 2Gi
49 Requests:
50 cpu: 2
51 memory: 1073741824
52 Environment:
53 NO_HOME: a buildservice pod does not need a home env
54 API_ENDPOINT: <set to the key 'API_ENDPOINT' in secret 'toolforge.envvar.v1.api-endpoint'> Optional: false
55 API_KEY: <set to the key 'API_KEY' in secret 'toolforge.envvar.v1.api-key'> Optional: false
56 DECLARATION_JOURNAL_URL: <set to the key 'DECLARATION_JOURNAL_URL' in secret 'toolforge.envvar.v1.declaration-journal-url'> Optional: false
57 MEMBER_CREDENTIALS_FILE: <set to the key 'MEMBER_CREDENTIALS_FILE' in secret 'toolforge.envvar.v1.member-credentials-file'> Optional: false
58 PRIVATE_KEY_FILE: <set to the key 'PRIVATE_KEY_FILE' in secret 'toolforge.envvar.v1.private-key-file'> Optional: false
59 PUBLIC_KEY_FILE: <set to the key 'PUBLIC_KEY_FILE' in secret 'toolforge.envvar.v1.public-key-file'> Optional: false
60 TOOL_REPLICA_PASSWORD: <set to the key 'TOOL_REPLICA_PASSWORD' in secret 'toolforge.envvar.v1.tool-replica-password'> Optional: false
61 TOOL_REPLICA_USER: <set to the key 'TOOL_REPLICA_USER' in secret 'toolforge.envvar.v1.tool-replica-user'> Optional: false
62 TOOL_TOOLSDB_PASSWORD: <set to the key 'TOOL_TOOLSDB_PASSWORD' in secret 'toolforge.envvar.v1.tool-toolsdb-password'> Optional: false
63 TOOL_TOOLSDB_USER: <set to the key 'TOOL_TOOLSDB_USER' in secret 'toolforge.envvar.v1.tool-toolsdb-user'> Optional: false
64 TSA_SKIP_VERIFY: <set to the key 'TSA_SKIP_VERIFY' in secret 'toolforge.envvar.v1.tsa-skip-verify'> Optional: false
65 TSA_URL: <set to the key 'TSA_URL' in secret 'toolforge.envvar.v1.tsa-url'> Optional: false
66 TOOL_TOOLFORGE_API_URL: https://api.svc.tools.eqiad1.wikimedia.cloud:30003
67 TOOL_REDIS_URI: redis://redis.svc.tools.eqiad1.wikimedia.cloud:6379
68 TOOL_ELASTICSEARCH_URL: http://elasticsearch.svc.tools.eqiad1.wikimedia.cloud:80
69 TOOL_DATA_DIR: /data/project/commonsdb-registry
70 Mounts:
71 /data/project from home (rw)
72 /data/scratch from scratch (rw)
73 /etc/ldap.conf from etcldap-conf (ro)
74 /etc/ldap.yaml from etcldap-yaml (ro)
75 /etc/novaobserver.yaml from etcnovaobserver-yaml (ro)
76 /etc/openstack/clouds.yaml from etcopenstack-clouds (ro)
77 /etc/wmcs-project from wmcs-project (ro)
78 /mnt/nfs/dumps-clouddumps1001.wikimedia.org from dumpsrc-clouddumps1001 (ro)
79 /mnt/nfs/dumps-clouddumps1002.wikimedia.org from dumpsrc-clouddumps1002 (ro)
80 /public/dumps from dumps (ro)
81 /var/lib/sss/pipes from sssd-pipes (rw)
82 /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-4ssms (ro)
83Conditions:
84 Type Status
85 PodReadyToStartContainers True
86 Initialized True
87 Ready True
88 ContainersReady True
89 PodScheduled True
90Volumes:
91 kube-api-access-4ssms:
92 Type: Projected (a volume that contains injected data from multiple sources)
93 TokenExpirationSeconds: 3607
94 ConfigMapName: kube-root-ca.crt
95 ConfigMapOptional: <nil>
96 DownwardAPI: true
97 dumps:
98 Type: HostPath (bare host directory volume)
99 Path: /public/dumps
100 HostPathType: Directory
101 dumpsrc-clouddumps1001:
102 Type: HostPath (bare host directory volume)
103 Path: /mnt/nfs/dumps-clouddumps1001.wikimedia.org
104 HostPathType: Directory
105 dumpsrc-clouddumps1002:
106 Type: HostPath (bare host directory volume)
107 Path: /mnt/nfs/dumps-clouddumps1002.wikimedia.org
108 HostPathType: Directory
109 home:
110 Type: HostPath (bare host directory volume)
111 Path: /data/project
112 HostPathType: Directory
113 wmcs-project:
114 Type: HostPath (bare host directory volume)
115 Path: /etc/wmcs-project
116 HostPathType: File
117 scratch:
118 Type: HostPath (bare host directory volume)
119 Path: /data/scratch
120 HostPathType: Directory
121 etcldap-conf:
122 Type: HostPath (bare host directory volume)
123 Path: /etc/ldap.conf
124 HostPathType: File
125 etcldap-yaml:
126 Type: HostPath (bare host directory volume)
127 Path: /etc/ldap.yaml
128 HostPathType: File
129 etcnovaobserver-yaml:
130 Type: HostPath (bare host directory volume)
131 Path: /etc/novaobserver.yaml
132 HostPathType: File
133 etcopenstack-clouds:
134 Type: HostPath (bare host directory volume)
135 Path: /etc/openstack/clouds.yaml
136 HostPathType: File
137 sssd-pipes:
138 Type: HostPath (bare host directory volume)
139 Path: /var/lib/sss/pipes
140 HostPathType: Directory
141QoS Class: Burstable
142Node-Selectors: kubernetes.wmcloud.org/nfs-mounted=true
143Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
144 node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
145Topology Spread Constraints: kubernetes.io/hostname:ScheduleAnyway when max skew 1 is exceeded for selector app.kubernetes.io/created-by=commonsdb-registry,app.kubernetes.io/managed-by=toolforge-jobs-framework,app.kubernetes.io/name=make-declarations-wle-2016,toolforge=tool
146Events: <none>
147
148
149Name: make-declarations-wlm-2016-cvdrq
150Namespace: tool-commonsdb-registry
151Priority: 0
152Service Account: default
153Node: tools-k8s-worker-nfs-10/172.16.1.214
154Start Time: Fri, 22 May 2026 07:30:56 +0000
155Labels: app.kubernetes.io/component=jobs
156 app.kubernetes.io/created-by=commonsdb-registry
157 app.kubernetes.io/managed-by=toolforge-jobs-framework
158 app.kubernetes.io/name=make-declarations-wlm-2016
159 app.kubernetes.io/version=2
160 batch.kubernetes.io/controller-uid=e3c7f92d-a942-434d-9019-21a06bc81b3b
161 batch.kubernetes.io/job-name=make-declarations-wlm-2016
162 controller-uid=e3c7f92d-a942-434d-9019-21a06bc81b3b
163 job-name=make-declarations-wlm-2016
164 jobs.toolforge.org/emails=all
165 jobs.toolforge.org/filelog=yes
166 toolforge=tool
167 toolforge.org/mount-storage=all
168Annotations: cni.projectcalico.org/containerID: 457b75b87978370cf30fb5b46258b12da7a4dd7816bcfdf21fcc0b34d0a0f0c9
169 cni.projectcalico.org/podIP: 192.168.109.113/32
170 cni.projectcalico.org/podIPs: 192.168.109.113/32
171Status: Running
172SeccompProfile: RuntimeDefault
173IP: 192.168.109.113
174IPs:
175 IP: 192.168.109.113
176Controlled By: Job/make-declarations-wlm-2016
177Containers:
178 job:
179 Container ID: containerd://1821e5911a4e2a773b4526e8f5205da4cf36424b12e1c590cfb7b4f2540970ad
180 Image: tools-harbor.wmcloud.org/tool-commonsdb-registry/tool-commonsdb-registry:latest
181 Image ID: tools-harbor.wmcloud.org/tool-commonsdb-registry/tool-commonsdb-registry@sha256:31bd255332b76d23e1565c85b076b6ba04607bcd86baa5336ab9824a8c04f0ad
182 Port: <none>
183 Host Port: <none>
184 Command:
185 /bin/sh
186 -c
187 --
188 exec 1>>/data/project/commonsdb-registry/make-declarations-wlm-2016.out;exec 2>>/data/project/commonsdb-registry/make-declarations-wlm-2016.err;launcher env HOME=/workspace src/make_declaration.py -t mem:2.0Gi -t cpu:2.0 -t version:0.1.15 --verbose batch:category-48656297
189 State: Running
190 Started: Fri, 22 May 2026 07:30:57 +0000
191 Ready: True
192 Restart Count: 0
193 Limits:
194 cpu: 2
195 memory: 2Gi
196 Requests:
197 cpu: 2
198 memory: 1073741824
199 Environment:
200 NO_HOME: a buildservice pod does not need a home env
201 API_ENDPOINT: <set to the key 'API_ENDPOINT' in secret 'toolforge.envvar.v1.api-endpoint'> Optional: false
202 API_KEY: <set to the key 'API_KEY' in secret 'toolforge.envvar.v1.api-key'> Optional: false
203 DECLARATION_JOURNAL_URL: <set to the key 'DECLARATION_JOURNAL_URL' in secret 'toolforge.envvar.v1.declaration-journal-url'> Optional: false
204 MEMBER_CREDENTIALS_FILE: <set to the key 'MEMBER_CREDENTIALS_FILE' in secret 'toolforge.envvar.v1.member-credentials-file'> Optional: false
205 PRIVATE_KEY_FILE: <set to the key 'PRIVATE_KEY_FILE' in secret 'toolforge.envvar.v1.private-key-file'> Optional: false
206 PUBLIC_KEY_FILE: <set to the key 'PUBLIC_KEY_FILE' in secret 'toolforge.envvar.v1.public-key-file'> Optional: false
207 TOOL_REPLICA_PASSWORD: <set to the key 'TOOL_REPLICA_PASSWORD' in secret 'toolforge.envvar.v1.tool-replica-password'> Optional: false
208 TOOL_REPLICA_USER: <set to the key 'TOOL_REPLICA_USER' in secret 'toolforge.envvar.v1.tool-replica-user'> Optional: false
209 TOOL_TOOLSDB_PASSWORD: <set to the key 'TOOL_TOOLSDB_PASSWORD' in secret 'toolforge.envvar.v1.tool-toolsdb-password'> Optional: false
210 TOOL_TOOLSDB_USER: <set to the key 'TOOL_TOOLSDB_USER' in secret 'toolforge.envvar.v1.tool-toolsdb-user'> Optional: false
211 TSA_SKIP_VERIFY: <set to the key 'TSA_SKIP_VERIFY' in secret 'toolforge.envvar.v1.tsa-skip-verify'> Optional: false
212 TSA_URL: <set to the key 'TSA_URL' in secret 'toolforge.envvar.v1.tsa-url'> Optional: false
213 TOOL_TOOLFORGE_API_URL: https://api.svc.tools.eqiad1.wikimedia.cloud:30003
214 TOOL_REDIS_URI: redis://redis.svc.tools.eqiad1.wikimedia.cloud:6379
215 TOOL_ELASTICSEARCH_URL: http://elasticsearch.svc.tools.eqiad1.wikimedia.cloud:80
216 TOOL_DATA_DIR: /data/project/commonsdb-registry
217 Mounts:
218 /data/project from home (rw)
219 /data/scratch from scratch (rw)
220 /etc/ldap.conf from etcldap-conf (ro)
221 /etc/ldap.yaml from etcldap-yaml (ro)
222 /etc/novaobserver.yaml from etcnovaobserver-yaml (ro)
223 /etc/openstack/clouds.yaml from etcopenstack-clouds (ro)
224 /etc/wmcs-project from wmcs-project (ro)
225 /mnt/nfs/dumps-clouddumps1001.wikimedia.org from dumpsrc-clouddumps1001 (ro)
226 /mnt/nfs/dumps-clouddumps1002.wikimedia.org from dumpsrc-clouddumps1002 (ro)
227 /public/dumps from dumps (ro)
228 /var/lib/sss/pipes from sssd-pipes (rw)
229 /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-jhrdm (ro)
230Conditions:
231 Type Status
232 PodReadyToStartContainers True
233 Initialized True
234 Ready True
235 ContainersReady True
236 PodScheduled True
237Volumes:
238 kube-api-access-jhrdm:
239 Type: Projected (a volume that contains injected data from multiple sources)
240 TokenExpirationSeconds: 3607
241 ConfigMapName: kube-root-ca.crt
242 ConfigMapOptional: <nil>
243 DownwardAPI: true
244 dumps:
245 Type: HostPath (bare host directory volume)
246 Path: /public/dumps
247 HostPathType: Directory
248 dumpsrc-clouddumps1001:
249 Type: HostPath (bare host directory volume)
250 Path: /mnt/nfs/dumps-clouddumps1001.wikimedia.org
251 HostPathType: Directory
252 dumpsrc-clouddumps1002:
253 Type: HostPath (bare host directory volume)
254 Path: /mnt/nfs/dumps-clouddumps1002.wikimedia.org
255 HostPathType: Directory
256 home:
257 Type: HostPath (bare host directory volume)
258 Path: /data/project
259 HostPathType: Directory
260 wmcs-project:
261 Type: HostPath (bare host directory volume)
262 Path: /etc/wmcs-project
263 HostPathType: File
264 scratch:
265 Type: HostPath (bare host directory volume)
266 Path: /data/scratch
267 HostPathType: Directory
268 etcldap-conf:
269 Type: HostPath (bare host directory volume)
270 Path: /etc/ldap.conf
271 HostPathType: File
272 etcldap-yaml:
273 Type: HostPath (bare host directory volume)
274 Path: /etc/ldap.yaml
275 HostPathType: File
276 etcnovaobserver-yaml:
277 Type: HostPath (bare host directory volume)
278 Path: /etc/novaobserver.yaml
279 HostPathType: File
280 etcopenstack-clouds:
281 Type: HostPath (bare host directory volume)
282 Path: /etc/openstack/clouds.yaml
283 HostPathType: File
284 sssd-pipes:
285 Type: HostPath (bare host directory volume)
286 Path: /var/lib/sss/pipes
287 HostPathType: Directory
288QoS Class: Burstable
289Node-Selectors: kubernetes.wmcloud.org/nfs-mounted=true
290Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
291 node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
292Topology Spread Constraints: kubernetes.io/hostname:ScheduleAnyway when max skew 1 is exceeded for selector app.kubernetes.io/created-by=commonsdb-registry,app.kubernetes.io/managed-by=toolforge-jobs-framework,app.kubernetes.io/name=make-declarations-wlm-2016,toolforge=tool
293Events: <none>
294
295
296Name: make-declarations-wlm-2017-vc4s4
297Namespace: tool-commonsdb-registry
298Priority: 0
299Service Account: default
300Node: <none>
301Labels: app.kubernetes.io/component=jobs
302 app.kubernetes.io/created-by=commonsdb-registry
303 app.kubernetes.io/managed-by=toolforge-jobs-framework
304 app.kubernetes.io/name=make-declarations-wlm-2017
305 app.kubernetes.io/version=2
306 batch.kubernetes.io/controller-uid=605dd132-cc39-441f-b4bc-4fabc4ebc5fd
307 batch.kubernetes.io/job-name=make-declarations-wlm-2017
308 controller-uid=605dd132-cc39-441f-b4bc-4fabc4ebc5fd
309 job-name=make-declarations-wlm-2017
310 jobs.toolforge.org/emails=all
311 jobs.toolforge.org/filelog=yes
312 toolforge=tool
313 toolforge.org/mount-storage=all
314Annotations: <none>
315Status: Pending
316SeccompProfile: RuntimeDefault
317IP:
318IPs: <none>
319Controlled By: Job/make-declarations-wlm-2017
320Containers:
321 job:
322 Image: tools-harbor.wmcloud.org/tool-commonsdb-registry/tool-commonsdb-registry:latest
323 Port: <none>
324 Host Port: <none>
325 Command:
326 /bin/sh
327 -c
328 --
329 exec 1>>/data/project/commonsdb-registry/make-declarations-wlm-2017.out;exec 2>>/data/project/commonsdb-registry/make-declarations-wlm-2017.err;launcher env HOME=/workspace src/make_declaration.py -t mem:2.0Gi -t cpu:2.0 -t version:0.1.15 --verbose batch:category-55661878
330 Limits:
331 cpu: 2
332 memory: 2Gi
333 Requests:
334 cpu: 2
335 memory: 1073741824
336 Environment:
337 NO_HOME: a buildservice pod does not need a home env
338 API_ENDPOINT: <set to the key 'API_ENDPOINT' in secret 'toolforge.envvar.v1.api-endpoint'> Optional: false
339 API_KEY: <set to the key 'API_KEY' in secret 'toolforge.envvar.v1.api-key'> Optional: false
340 DECLARATION_JOURNAL_URL: <set to the key 'DECLARATION_JOURNAL_URL' in secret 'toolforge.envvar.v1.declaration-journal-url'> Optional: false
341 MEMBER_CREDENTIALS_FILE: <set to the key 'MEMBER_CREDENTIALS_FILE' in secret 'toolforge.envvar.v1.member-credentials-file'> Optional: false
342 PRIVATE_KEY_FILE: <set to the key 'PRIVATE_KEY_FILE' in secret 'toolforge.envvar.v1.private-key-file'> Optional: false
343 PUBLIC_KEY_FILE: <set to the key 'PUBLIC_KEY_FILE' in secret 'toolforge.envvar.v1.public-key-file'> Optional: false
344 TOOL_REPLICA_PASSWORD: <set to the key 'TOOL_REPLICA_PASSWORD' in secret 'toolforge.envvar.v1.tool-replica-password'> Optional: false
345 TOOL_REPLICA_USER: <set to the key 'TOOL_REPLICA_USER' in secret 'toolforge.envvar.v1.tool-replica-user'> Optional: false
346 TOOL_TOOLSDB_PASSWORD: <set to the key 'TOOL_TOOLSDB_PASSWORD' in secret 'toolforge.envvar.v1.tool-toolsdb-password'> Optional: false
347 TOOL_TOOLSDB_USER: <set to the key 'TOOL_TOOLSDB_USER' in secret 'toolforge.envvar.v1.tool-toolsdb-user'> Optional: false
348 TSA_SKIP_VERIFY: <set to the key 'TSA_SKIP_VERIFY' in secret 'toolforge.envvar.v1.tsa-skip-verify'> Optional: false
349 TSA_URL: <set to the key 'TSA_URL' in secret 'toolforge.envvar.v1.tsa-url'> Optional: false
350 TOOL_TOOLFORGE_API_URL: https://api.svc.tools.eqiad1.wikimedia.cloud:30003
351 TOOL_REDIS_URI: redis://redis.svc.tools.eqiad1.wikimedia.cloud:6379
352 TOOL_ELASTICSEARCH_URL: http://elasticsearch.svc.tools.eqiad1.wikimedia.cloud:80
353 TOOL_DATA_DIR: /data/project/commonsdb-registry
354 Mounts:
355 /data/project from home (rw)
356 /data/scratch from scratch (rw)
357 /etc/ldap.conf from etcldap-conf (ro)
358 /etc/ldap.yaml from etcldap-yaml (ro)
359 /etc/novaobserver.yaml from etcnovaobserver-yaml (ro)
360 /etc/openstack/clouds.yaml from etcopenstack-clouds (ro)
361 /etc/wmcs-project from wmcs-project (ro)
362 /mnt/nfs/dumps-clouddumps1001.wikimedia.org from dumpsrc-clouddumps1001 (ro)
363 /mnt/nfs/dumps-clouddumps1002.wikimedia.org from dumpsrc-clouddumps1002 (ro)
364 /public/dumps from dumps (ro)
365 /var/lib/sss/pipes from sssd-pipes (rw)
366 /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-xffrc (ro)
367Conditions:
368 Type Status
369 PodScheduled False
370Volumes:
371 kube-api-access-xffrc:
372 Type: Projected (a volume that contains injected data from multiple sources)
373 TokenExpirationSeconds: 3607
374 ConfigMapName: kube-root-ca.crt
375 ConfigMapOptional: <nil>
376 DownwardAPI: true
377 dumps:
378 Type: HostPath (bare host directory volume)
379 Path: /public/dumps
380 HostPathType: Directory
381 dumpsrc-clouddumps1001:
382 Type: HostPath (bare host directory volume)
383 Path: /mnt/nfs/dumps-clouddumps1001.wikimedia.org
384 HostPathType: Directory
385 dumpsrc-clouddumps1002:
386 Type: HostPath (bare host directory volume)
387 Path: /mnt/nfs/dumps-clouddumps1002.wikimedia.org
388 HostPathType: Directory
389 home:
390 Type: HostPath (bare host directory volume)
391 Path: /data/project
392 HostPathType: Directory
393 wmcs-project:
394 Type: HostPath (bare host directory volume)
395 Path: /etc/wmcs-project
396 HostPathType: File
397 scratch:
398 Type: HostPath (bare host directory volume)
399 Path: /data/scratch
400 HostPathType: Directory
401 etcldap-conf:
402 Type: HostPath (bare host directory volume)
403 Path: /etc/ldap.conf
404 HostPathType: File
405 etcldap-yaml:
406 Type: HostPath (bare host directory volume)
407 Path: /etc/ldap.yaml
408 HostPathType: File
409 etcnovaobserver-yaml:
410 Type: HostPath (bare host directory volume)
411 Path: /etc/novaobserver.yaml
412 HostPathType: File
413 etcopenstack-clouds:
414 Type: HostPath (bare host directory volume)
415 Path: /etc/openstack/clouds.yaml
416 HostPathType: File
417 sssd-pipes:
418 Type: HostPath (bare host directory volume)
419 Path: /var/lib/sss/pipes
420 HostPathType: Directory
421QoS Class: Burstable
422Node-Selectors: kubernetes.wmcloud.org/nfs-mounted=true
423Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
424 node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
425Topology Spread Constraints: kubernetes.io/hostname:ScheduleAnyway when max skew 1 is exceeded for selector app.kubernetes.io/created-by=commonsdb-registry,app.kubernetes.io/managed-by=toolforge-jobs-framework,app.kubernetes.io/name=make-declarations-wlm-2017,toolforge=tool
426Events:
427 Type Reason Age From Message
428 ---- ------ ---- ---- -------
429 Warning FailedScheduling 3m18s (x7 over 6m6s) default-scheduler 0/81 nodes are available: 1 Insufficient memory, 11 node(s) didn't match Pod's node affinity/selector, 3 node(s) had untolerated taint {node-role.kubernetes.io/control-plane: }, 3 node(s) had untolerated taint {toolforge.org/gateway: true}, 64 Insufficient cpu. preemption: 0/81 nodes are available: 17 Preemption is not helpful for scheduling, 64 No preemption victims found for incoming pod.
430 Warning FailedScheduling 58s (x26 over 5m57s) default-scheduler 0/81 nodes are available: 11 node(s) didn't match Pod's node affinity/selector, 3 node(s) had untolerated taint {node-role.kubernetes.io/control-plane: }, 3 node(s) had untolerated taint {toolforge.org/gateway: true}, 64 Insufficient cpu. preemption: 0/81 nodes are available: 17 Preemption is not helpful for scheduling, 64 No preemption victims found for incoming pod.

Thank you for the detailed report @Sebastian_Berlin-WMSE !

I checked commonsdb-registry usage patterns here https://grafana.wmcloud.org/goto/dfn7icfiitcsgb?orgId=1 and it seems actual cpu usage is far lower than cpu requested across the whole namespace/tool; does that check out ? if that's the case then as an immediate bandaid to get your pods scheduled faster is to lower per-job cpu requests to 0.5 for example.

I'll also followup to get more kube scheduler metrics collected

That's quite possible. I haven't really checked CPU usage. I was just hoping more CPUs means more faster 🙂 I'd guess that the CPU usage fluctuates for the different steps in the process that the tool runs.

Is it possible for me to view the page that you linked to or see it somewhere else? I get "Unauthorized". It would help if I want to experiment with the resources.

That's quite possible. I haven't really checked CPU usage. I was just hoping more CPUs means more faster 🙂 I'd guess that the CPU usage fluctuates for the different steps in the process that the tool runs.

Unfortunately not that simple ! As you'll see in the link below, the sum of CPU across the whole k8s namespace (i.e. all pods) does not go over 0.5 cpu. Requesting 0.3 - 0.5 cpu per pod/job should be enough and make scheduling easier. Something else to keep in mind is that those are cpu you are requesting to get your pod to start, the actual cpu limit where your tool will get throttled is and can be higher.

Is it possible for me to view the page that you linked to or see it somewhere else? I get "Unauthorized". It would help if I want to experiment with the resources.

My bad! The dashboard is public though I linked the grafana-rw endpoint which requires authentication. Here's the panel I was referring to https://grafana.wmcloud.org/d/TJuKfnt4z/tool-dashboard?orgId=1&from=now-30d&to=now&timezone=utc&var-cluster=P8433460076D33992&var-namespace=tool-commonsdb-registry&viewPanel=panel-1

Looks like you linked to the "secret" panel again 🙂 I took a shot at removing the "-rw" at the start and that worked.

You're right, looks like the actual CPU usage is much less than what I expected. I'll keep that in mind for future jobs.

fgiunchedi claimed this task.

Looks like you linked to the "secret" panel again 🙂 I took a shot at removing the "-rw" at the start and that worked.

doh, of course!

You're right, looks like the actual CPU usage is much less than what I expected. I'll keep that in mind for future jobs.

sounds good, I'll go ahead and resolve the task, please reopen if something is amiss