What Kubernetes users should know about the rkt container engine
coreos.com
coreos.com
This integration is about 90% complete and will completed going into 2017.
While layers are codified into the OCI specification, the manifest system is flexible and allows for future extension. The main goal of OCI is to provide a specification for what is already widely deployed without introducing too many new concepts.
[0]: https://github.com/appc/spec/blob/master/spec/aci.md#image-m...
Disclosure: OCI Maintainer, Docker Employee
Some techinical explanation here: https://groups.google.com/forum/#!topic/kubernetes-users/jVj...
So,a normal Kubernetes user will never know about rkt pod sandboxes and Kubernetes pods will just work as expected. Only you won't have all of these weird "pause" containers everywhere.
Unfortunately, the orchestration formats are all over the place. Kubernetes, DC/OS and Docker-compose all have their own json schema. DC/OS doesn't even support docker container volumes. Rancher can take docker-compose, and it looks like it can deploy those apps on K8s/DCOS, however I haven't messed with it enough to see if that actually works.
Rkt just adds even another container format. What once seemed like a nice one-stop isolated application that you could run anywhere is becoming more complicated and more tightly coupled to the underlying container engine and orchestration system you chose to use.
For users using rkt + Kubernetes they can execute Docker Images just like normal.
https://coreos.com/rkt/docs/latest/running-docker-images.htm...
for example, the mucking about SELinux on fedora is a recipe for disaster.
my request would be to package it better. its not a bad idea to use the new snap package (like docker).
and a page with docker cmd <-> rkt cmd would be very welcome!
"In parallel to the image format, OCI is developing the so-called runtime-spec for describing the runtime execution environment that container engines should provide."
I thought the run-time spec was formalized and that we were waiting on the OCI image format to be standardized. Is that not the case? This was from a recent conversation I had with someone at CoreOS.
We've been hit by to many regressions docker versions and issues with docker daemon that required us to restart docker and all the containers on a host. One systemd unit -> rkt container -> our service is just such a better failure domain.
We're currently running containers outside of explicit container orchestration like k8 or docker compose. But in the future we'll be moving some of our elastic workloads to k8 and in the long term almost everything but services that rely on persistent data on lock disk (where network block device doesn't cut it).
1. Create Dockerfile like equivalents for Rkt images
2. Share and publish Rkt images.
3. Consume Rkt images in a Kube cluster that already supports Docker on AWS.
Although the idea is to have an endless chain of dependent images with small Dockerfiles on each step, the reality is different.
I recently needed a monolithic image of having Nginx, Node.js, and Phusion Passenger, just merging the Dockerfiles doesn't work as each has a cleanup step that ruins things for the next one.
I know it's great to have everything self-contained (pun intended) in a single Dockerfile - it's much easier to diff and display on Docker Hub, but this promotes bad practices without a doubt!
[1] https://github.com/coreos/rkt/blob/master/Documentation/tryi...
- Laptop Kubernetes, minikube, can use rkt with a single flag https://github.com/kubernetes/minikube#using-rkt-container-e...
- BlaBlaCar rkt in prod and moving to Kubernetes
- Container Linux by CoreOS services like kubelet and etcd now run using rkt and download docker images from quay.io
- GKE ContainerVM is looking to use rkt for Kubelet mount management