logo

COSI: The Common Operating System Interface - Steven Borrelli, Mastercard & Andrew Rynhard, Talos

Authors:   Steven Borrelli, Andrew Rynhard


Summary

Cozy is a container operating system that defines modeled configurations, common RPC definitions, and plugin standards. It includes a reference implementation written in Rust and uses bi-directional gRPC for communication. Plugins are designed to be as close to the underlying operating system as possible and are responsible for mutating the system. Generators use Linux kernel eBPF infrastructure to generate kernel events and convert them to Cozy events.
  • Cozy is a container operating system that defines modeled configurations, common RPC definitions, and plugin standards
  • It includes a reference implementation written in Rust and uses bi-directional gRPC for communication
  • Plugins are designed to be as close to the underlying operating system as possible and are responsible for mutating the system
  • Generators use Linux kernel eBPF infrastructure to generate kernel events and convert them to Cozy events
The problem with this is that sometimes that just is not an option and we have to fall back to parsing unstructured text. Furthermore, getting updates comes in the form of polling. This isn't what we want in Cozy, so what if we could actually tap into when the kernel updates its own state? This is the perfect use case for eBPF. Let's see what that looks like. You can see that the disk generator picks up a kernel event when I plug in a USB stick and now an SD card. This becomes a powerful way to reflect the kernel state in real-time and with events, solving the problems that I mentioned.

Abstract

This talk introduces COSI, the Common Operating System Interface, which defines an API for the configuration of container operating systems. While there has been innovation in the development of minimal Linux distributions for running Kubernetes, the distributions diverge from each other in terms of management and API endpoints. Similar to other projects such as the Container Network Interface (CNI) , COSI has a focus on the configuration of the underlying operating system, providing Protocol Buffer definitions and a gRPC API reference implementation for configuration settings such as DNS, network, and kernel settings By utilizing a flexible plugin system, multiple backend implementations can provide a consistent API to consumers. In this talk we’ll review the configuration and APIs of popular container operating systems and Kubelet-node interactions. We will then review the COSI API, the plugin architecture, and demo node management using backend plugins written in Go and Rust.

Materials:

Tags:

Post a comment

Related work

Authors: Dawn Chen, Sergey Kanzhelev, Mrunal Patel, Derek Carr
2023-04-21

Authors: Dawn Chen, Derek Carr, Elana Hashman, Sergey Kanzhelev
2021-10-15

Authors: Elana Hashman, Sergey Kanzhelev

Authors: Dawn Chen, Derek Carr, Elana Hashman, Sergey Kanzhelev
2022-05-20


Authors: Dawn Chen, Derek Carr, Sergey Kanzhelev
2022-10-28