---
# System prepended metadata

title: Container Plumbing Days 2023 CfP Draft

---

# Container Plumbing Days 2023 CfP Draft

## Introduction to NRI

The Node Resource Interface allows one to plug custom logic into NRI-enabled OCI-compatible runtimes and adjust the configuration of containers managed by that runtime. The recently released 0.2.0 version reworks how plugins communicate with the runtime, how plugins adjust container configuration, and what configuration parameters plugins can adjust through. 0.2.0 is also the first version which is supported by the most commonly used container runtime implementations in Kubernetes: CRI-O and containerd.

While NRI is still experimental, this latest release already allows one to plug some interesting and useful functionality into runtimes. In our talk, we briefly discuss how NRI works and what kind of controls it provides over containers. Then we'll demonstrate some of NRI's current capabilities in practice using existing NRI plugins.

## Talk Content / Outline

First a few slides showing the essence of NRI:
  - how it hooks into the CRI pod/container processing pipeline
  - where it hooks into that pipeline (IOW, what events it provides)
  - what one can control through NRI

Then a demo of a few NRI plugins. I was thinking of:
  - cri-o+OCI-hook: works
  - containerd+OCI hook: look Ma', no OCI hooks
  - containerd+OCI hook+NRI OCI hook injector: working OCI hooks
  - cri-o+(annotation-based) device injector plugin: you can inject devices
  - cri-o+some of our experimental resource assignment plugin: you can now experiment with out of kubelet resource management

## Comments

For cri-o, ideally we could/should have something more useful/interesting as the first demo... I'm thinking specifically of high-performance-hooks implemented as an NRI plugin. But I wouldn't dare to promise it, mostly because on our side we have plenty of work in our hands for Q1/23. So I tried to outline something that I think should be possible to deliver/demonstrate without really having to do too much extra/write any new code. Just pulling together the talk slides mostly from existing material and then the demo plugins, which we already have.

What do you think ?