tgoodwin / sleeveless

sieve + serverless experiments

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

sleeveless

simulation-based testing framework for kubernetes control plane components

Getting Started

First install some tools.

  1. Install Kind (Kubernetes in Docker)

    brew install kind
    

    With Kind, you can do things like kind create cluster that will run a Kubernetes cluster in a collection of docker containers on your machine.

  2. K9s

    brew install derailed/k9s/k9s
    

    Great shell-based tool for managing clusters on your laptop.

  3. Kubectl

  4. Golang

  5. Python3

Next, let's install some prior art that we will be extending / modifying.

Install Sieve:

git clone https://github.com/sieve-project/sieve.git
cd sieve
pip3 install -r requirements.txt

Background Readings

Concepts

Blog Posts

Papers

  • Reasoning about modern datacenter infrastructures using partial histories (HotOS '21)

    • a short workshop paper on why Kubernetes is hard. The 3 articles in the "Blog Posts" section above describe in more detail the programming environment that this paper is talking about.
  • Automatic Reliability Testing for Cluster Management Controllers (OSDI '22)

    • This is the paper for the tool "Sieve" that has inspired my current research a great amount. You can think of it as a sort of fault injection testing tool that automatically finds fault tolerance bugs in individual Kubernetes controllers.
  • What goes wrong in serverless runtimes? A survey of bugs in Knative Serving (SESAME '23)

    • paper that I wrote earlier this year with Andrew and Lindsey studying the Knative platform, which is a serverless platform built on top of Kubernetes. "Serverless" is a somewhat overloaded word these days, but I like to think of "serverless platforms" as platforms that are able to decouple computation from storage or networking resources such that the platform can manage these independently. By doing so, you can support "serverless functions" or services that only spin up when a request to them is made, and can go away when they aren't in use. To achieve this decoupling, your infrastructure has to have a lot of dynamic moving parts. Knative does this by implementing a variety of controller components that coordinate with eachother in complex ways. Of course, there have been bugs in the ways these controllers interact, and we talk more about them in this paper. These types of bugs are what we're trying to build a tool to detect!

Simulation

SimKube Where we’re going, we don’t need threads: Simulating Distributed Systems

About

sieve + serverless experiments


Languages

Language:Jinja 71.8%Language:HCL 11.9%Language:Shell 6.4%Language:Python 5.8%Language:Go 2.9%Language:Dockerfile 0.3%Language:Makefile 0.3%Language:Groovy 0.2%Language:Ruby 0.1%Language:Smarty 0.1%Language:HTML 0.1%