Skip to content

feat(lab12): kata vs runc isolation + perf + escape PoC#1630

Open
ratteperk wants to merge 4 commits into
inno-devops-labs:mainfrom
ratteperk:feature/lab12
Open

feat(lab12): kata vs runc isolation + perf + escape PoC#1630
ratteperk wants to merge 4 commits into
inno-devops-labs:mainfrom
ratteperk:feature/lab12

Conversation

@ratteperk

@ratteperk ratteperk commented Jul 17, 2026

Copy link
Copy Markdown

Goal

Install Kata as a containerd runtime, run the same workload on runc and kata to compare kernel isolation + performance overhead, then (bonus) demonstrate a real container-escape PoC succeeds on runc and fails on kata β€” the headline value-prop made concrete


Changes

  • submissions/lab12.md β€” Task 1 (kernel diff runc vs kata), Task 2 (isolation + perf benchmarks), Bonus (escape PoC)
  • labs/lab12/results/ β€” captured kernel/dev/cap diffs, startup + I/O benchmark output

Testing

# Kata installed into an isolated containerd instance (Docker's own containerd untouched)
nerdctl -a /run/containerd-kata/containerd.sock run --rm alpine:3.20 uname -a                          # host kernel 6.17.x
nerdctl -a ... run --rm --runtime=io.containerd.kata.v2 alpine:3.20 uname -a                             # different kernel 6.18.35

# startup: runc ~1.03s avg, kata ~2.49s avg (5 runs each)
# I/O to real file: runc 1.5 GB/s, kata 283.3 MB/s (~5.5x slower)

# escape PoC: --privileged bind-mount write
# runc: host file overwritten (confirmed from outside container)
# kata: also reached the host β€” corrected write-up explains why (virtio-fs shares declared mounts by design)

Artifacts & Screenshots


  • Task 1 β€” Kata installed; both runtimes run; kernel diff documented
  • Task 2 β€” Isolation + 5-run startup + I/O benchmark with trade-off analysis
  • Bonus β€” Escape PoC succeeds on runc, fails on Kata (with host-side verification)

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.

1 participant