KubeCon EU 2016: Using Traffic Control to Test Apps in Kubernetes
KubeCon EU 2016: Bringing an open source Containerized Container Platform to Kubernetes
-
Upload
kubeacademy -
Category
Technology
-
view
260 -
download
0
Transcript of KubeCon EU 2016: Bringing an open source Containerized Container Platform to Kubernetes
Instance ManagerState Machine Apocalypse
● Started out simple, but naive about the future● Few small libraries…● … but all integration logic was central
● 8 states● 53 function handlers
A New ModelKurma
● Minimize host dependencies● Everything is a container● Simple notions that could be easily extended● Simple, well defined APIs
What is Kurma made of?
Existing● Go + C
● App Container (AppC)
● Apcera’s existing instrumentation
Coming soon● Go + C
● AppC
● libcontainer based
● CNI for networking
What is Kurma made of?
Existing● Go + C
● App Container (AppC)
● Apcera’s existing instrumentation
Coming soon● Go + C
● AppC
● libcontainer based
● CNI for networking
Delivery
kurmad● Existing host
● Download and run
● Immediately benefit
● Depends on host kernel and libc
kurmaOS● Minimalist distro
● Services as containers
● A/B partition model
● Console is just a container
Delivery
kurmad● Existing host
● Download and run
● Immediately benefit
● Depends on host kernel and libc
kurmaOS● Minimalist distro
● Services as containers
● A/B partition model
● Console is just a container
StagerPluggable Process Orchestration
● Responsible for instrumenting the pod● Packaged as a signed, trusted ACI image● Gets own mount and network namespace
Stager API
● Simplest unit of work: an executable● Setup via image ‘Exec’ setting● Other calls through expected executables
– /opt/stager/run
– /opt/stager/status
– /opt/stager/logs
– ...
Networking API
● ACI image● Passes along JSON configuration● Executes commands to setup networking on
other containers– /opt/network/add <ns> <container-id>
– /opt/network/del <ns> <container-id>
Why?
● Kurma usage outside Apcera● Increased platform flexibility● Integrating with broader community
Kubelet
● Has existing Runtime interface● Rich interface for engine communication● Kubelet is a bit of a leaky abstraction● Workarounds for Dockerisms
Codebase
● Godep pains● “hack” directory?● Documentation gaps● Interface movement
Runtime.ConvertPodStatusToAPIPodStatus()
Kurmanetes
● Maturing Kurma based on Kubernetes needs– Pods
– Networking
– Image management
● Runtime abstraction nearly complete
Kurmanetes
● Done– Pod management
– Image retrieval and management
● Remaining– Landing Kurma’s pod/stager branch
– cAdvisor integration
– Integration testing
– Work towards improving the abstraction leaks
Resources
Kurmakurma.io
github.com/apcera/kurma
@krobertson
We’re hiring for the Kurma team.