Commit adb8116
Roy Lin
fix(shim): kubectl exec works end-to-end on RuntimeClass=a3s-box
Makes the containerd-shim-a3s-box-v2 path actually serve `kubectl exec`
against libkrun MicroVMs, plus the v2.6.0 network/block-IO stats feature.
containerd shim:
- Stage container env in a rootfs file (BOX_EXEC_ENV_FILE) instead of
inlining it: Kubernetes injects ~150 service env vars per pod, which
overflow the guest kernel cmdline (COMMAND_LINE_SIZE) and silently
break boot. Only a small pointer rides the cmdline now.
- Gate Task.wait()'s inspect-poll on the box being confirmed running:
containerd calls Wait() concurrently with (and before) Start finishes,
during which `inspect` returns "No such container"; treating that as a
terminal exit made containerd kill the box it was still starting.
- Launch the box as a transient systemd unit so it runs under a clean
rlimit/memlock context (libkrun must mlock guest RAM for KVM).
- Hold the CRI stdout/stderr FIFO write ends open so the task persists.
Also includes the network + block-IO stats feature for
`a3s-box stats/top/ps` (net_stats_path threaded through vmm/netproxy/passt).
Validated: kubectl exec end-to-end 4/4 on the production cluster; full
`src` workspace lib tests green (cargo test --workspace --lib).1 parent 8036c89 commit adb8116
16 files changed
Lines changed: 1328 additions & 185 deletions
File tree
- containerd-shim
- src
- src
- cli/src/commands
- core/src
- guest/init/src
- netproxy
- src
- runtime/src
- network
- vm
- shim/src
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
21 | 21 | | |
22 | 22 | | |
23 | 23 | | |
| 24 | + | |
24 | 25 | | |
25 | 26 | | |
26 | 27 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
39 | 39 | | |
40 | 40 | | |
41 | 41 | | |
42 | | - | |
43 | | - | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
44 | 46 | | |
45 | 47 | | |
46 | 48 | | |
47 | 49 | | |
48 | | - | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
49 | 58 | | |
50 | 59 | | |
51 | 60 | | |
52 | 61 | | |
53 | | - | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
54 | 67 | | |
55 | 68 | | |
56 | 69 | | |
| |||
63 | 76 | | |
64 | 77 | | |
65 | 78 | | |
66 | | - | |
67 | | - | |
68 | | - | |
69 | | - | |
70 | | - | |
71 | | - | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
72 | 85 | | |
73 | 86 | | |
74 | 87 | | |
| |||
120 | 133 | | |
121 | 134 | | |
122 | 135 | | |
123 | | - | |
124 | | - | |
125 | | - | |
126 | | - | |
127 | | - | |
128 | | - | |
129 | | - | |
130 | | - | |
131 | | - | |
132 | | - | |
133 | | - | |
134 | | - | |
135 | | - | |
136 | | - | |
137 | | - | |
138 | 136 | | |
139 | 137 | | |
140 | 138 | | |
| |||
199 | 197 | | |
200 | 198 | | |
201 | 199 | | |
202 | | - | |
| 200 | + | |
203 | 201 | | |
204 | 202 | | |
205 | 203 | | |
| |||
216 | 214 | | |
217 | 215 | | |
218 | 216 | | |
219 | | - | |
220 | | - | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
221 | 231 | | |
222 | 232 | | |
223 | 233 | | |
| |||
247 | 257 | | |
248 | 258 | | |
249 | 259 | | |
250 | | - | |
251 | | - | |
252 | | - | |
253 | | - | |
254 | | - | |
255 | | - | |
256 | | - | |
257 | | - | |
258 | | - | |
259 | | - | |
260 | | - | |
261 | | - | |
262 | | - | |
263 | | - | |
264 | | - | |
265 | | - | |
266 | | - | |
267 | 260 | | |
268 | 261 | | |
269 | 262 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
21 | 21 | | |
22 | 22 | | |
23 | 23 | | |
24 | | - | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
25 | 37 | | |
0 commit comments