I have only been experimenting a bit with rkt, and I am very new to it, but as far as I understand it should help to address some of the points regarding the container backend, since:
1) it is just a container runtime,
2) doesn't have the client/server architecture that Docker has,
3) has a lightweight systemd starting as PID1 and reaping/adopting children, and
4) works with Kubernetes.
See also:
- https://coreos.com/rkt/docs/latest/devel/architecture.html
- https://kubernetes.io/docs/getting-started-guides/rkt/
- https://coreos.com/rkt/docs/latest/using-rkt-with-kubernetes...
Also note that `docker run` has an `--init` option based on `tini` which can help with the PID-1 hell.
See: https://docs.docker.com/engine/reference/run/#specify-an-ini...
You are in luck. Today Docker donated its low-level runtime containerd to CNCF, and a CRI implementation is on the way with the help of Google.
It fixes all three issues that you listed: it's lightweight, its API gives you complete control of the container primitives, and the PID1 bug is fixed :) It also works well with systend but doesn't require it, which is a nice plus.
Out of curiosity, what sort of cadence would you like to see?
The ecosystem is growing by the day and Kubernetes itself changes a lot very quickly. The pace of its development is sometimes crazy. You might find yourself trying to stay on top of the latest release just to notice there's a new one out of the door and that you will surely want to move to. In this regard I would say to wait a bit, hold your horses and come back to Kubernetes once its release cycle is a bit saner for production environments (my personal estimation is by the end of this year, or earlier than that).
What is missing in my opinion is a better container backend other than Docker (I just find it not enough for more complex scenarios, too bloated, there is the PID-1-hell, etc). With the new container runtime interface I am sure this won't be a problem in the long term.
Also, storage. I mean, the whole user side of setting it up is a breeze. The new release makes it even more simple apparently. However I'm still not very sure how reliable things are here. Maybe it's just me not understanding how storage works in a Kubernetes world... whatever. I know for a fact I am not the only one with this concern though.
What I can tell you is that after seeing a full deployment pipeline in Kubernetes actually working, and seeing all its load balancing and HA and rollout/rollback features, I am not going to stop using it.
My recommendation for starters: the docs are good, read about every Object type and things will eventually "click" in your head. Make sure you understand every bit that is inside a spec file, it will make things easier to understand. Get how ingress/egress work, they can be a pain in Kubernetes sometimes. Try minikube, for Darwin's sake.