Kubernetes 1.6: Multi-user, Multi-workloads at Scale
blog.kubernetes.io
blog.kubernetes.io
I have found kubernetes hard to learn. There are a lot of concepts. That in itself isn't bad, but I have found that the quality of the documentation is variable. Once I get past the basics tutorial, I have the feeling that I have landed in a big information dump that require expert knowledge ala the git man pages.
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.
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 documentation definitely covers a lot, but I found myself hunting issues down for trying to get something to work like getting k8s to schedule pods across a flannel overlay network and making sure traffic is being routed properly. Of course, you don't have to worry about any of this if you use GKE or another cloud provider.
Once I got that set up, everything worked beautifully. I can just write a config and apply it to the cluster and services are deployed and scaled and whatnot. Treating your cluster as a pool of resources is pretty powerful. There are a lot of Kubernetes API objects (Deployments, Stateful Sets, Daemon Sets, ConfigMaps, Secrets), but everything has a purpose and Kubernetes makes everything come together nicely.
The Kubernetes Slack channel was really helpful for me as well, there's a lot of nice and friendly people there willing to answer your questions and help you debug your setup.
I have also found kubernetes labor hard to find. The ones I found were way too expensive for me (upwards of 150k USD).
I can also help you with Docker / Kubernetes even if you decide not to buy anything from us - happy to help. Email is in my profile.
Disclaimer: I'm the founder at Distelli.
This is why we went down the OpenShift root, but there are not shortage of people wrapping Kube in other things, which seems sensible for a lot of use cases.
On GCP, you can use the SQL Proxy [1] to avoid IP whitelisting or manual SSL setup. Postgres on GCP is still beta, so you probably don't want to run a production DB with it, but hopefully your provider has a similar option.
1: https://cloud.google.com/sql/docs/postgres/sql-proxy
(I work on Google Cloud)
Looking forward to compare that with an autoscale solution I'm working on.