BOSH is also used to deploy Cloud Foundry and a bunch of data services (RabbitMQ, Redis etc). It has the advantage of having been under continuous development for 7 years, with backends (CPIs) for most IaaSes being provided by the IaaSes themselves.
I work for Pivotal, we sponsor most of the work done on BOSH. As it happens, SAP released an experimental BOSH CPI for Kubernetes[1] and there is work underway to make that experience smoother[2].
That's all nice. The issue though is that BOSH has been completely leapfrogged by Kubernetes with its extensible API. Nowhere will BOSH ever get to the community reach and acceptance of the level of Kubernetes. That Boat has sailed. And with implementations of the machine specs [0,1,2,3] you get rid of the "media break" that you deem BOSH is filling (it is not). Maybe you could implement BOSH as implementation of the machine spec and integrate into K8s, the other way round than KuBo?
As for the bunch of data services, I guess it's only a matter of time until you see a cambrian explosion of productive operators. I mean this non-comprehensive list [4] is already impressive.
SAP works in many projects where obligations with long term commitments have to be kept. And that is ok. BOSH CPI is one experiment to get CF on K8s. Have a look at the one which seems more attainable [6]. But these activities are an indicator of the elephant in the room, namely CF & K8s: Will it blend? [5]
I work for SAP in the inter-junction of SaaS, PaaS & IaaS and K8s.
It may surprise you to learn that I disagree about your core thesis. My qualifications are working for Pivotal at the inter-junction of PaaS, CaaS and FaaS. IaaS is just a hobby.
> Maybe you could implement BOSH as implementation of the machine spec and integrate into K8s, the other way round than KuBo?
This is being investigated too. The main difficulty (as Brendan Burns has noted for virtual kubelet) has been that Kubernetes, ostensibly providing a smooth abstraction away from machines, actually has layer-breaking assumptions about the existence machines after all.
Cloud Foundry always had BOSH to insulate it from that concern. But BOSH-on-K8s was not super pretty in the early days, because they had overlapping concerns (mostly disks, I believe).
Kubernetes-on-BOSH is a natural fit. Standing up large distributed systems on IaaSes is BOSH's bread and butter. More to the point, that is its sole focus. Its mission is not spread amongst a cambrian explosion of alternatives (almost all of whom, you may recall, went extinct).
But in any case, it's doable. Which has the nice property that as the cluster API matures, BOSH will happily take workloads that run on VMs and run them on pods. The same experience we have today -- run an upgrade, everything is upgraded, nobody bats an eye -- will be exactly the same.
> But these activities are an indicator of the elephant in the room, namely CF & K8s: Will it blend?
If you look at the community activity, the answer is pretty clearly yes: Diego can be placed behind an OPI (Project Eirini) and CF itself can run control-plane components in containers instead of VMs. Personally I am all for it.
But as you pointed out, enterprise vendors need to keep their word. Adopting Kubernetes isn't a button-press operation. We need to prove that CF-on-K8s is at least as safe and performant as CF-on-Diego has been. Your customers, and Pivotal's customers, and IBM's customers, and SUSE's customers, expect all of us to provide the roadmap and prove that it is something they can bet a company on.
the first time I heard BOSH in a CF related youtube video. There I thought it would mean the company Bosch and was quite surprised how advanced this company was in container technology.
As a 2y+ Bosh user and short to 2y Kubernetes user, I can only second here, that Kubernetes has outpaced Bosh. Don't get me wrong, while I would always prefer Bosh over Chef or Ansible, Kubernetes is simply the better deployment underlay.
I mean, either I have to deploy Bosh or Kubernetes (to deploy more Kubernetes clusters, because that's what we are speaking of here). Kubernetes is now commodity. The idea is to place Kubernetes control planes into Kubernetes clusters (like it became good practice to deploy the OpenStack control planes) and benefit from all the advantages Kubernetes brings along. No need to go for another tool, but there are more points:
- First off, Bosh is no thing in the Kubernetes community – it is primarily a tool used in the context of Cloud Foundry.
- By using Kubernetes to manage itself you have less components, less learning. It is there already and everybody who works with Kubernetes doesn’t need to pick up yet another technology.
- Bosh provisions VMs, which are slow to provision. What takes minutes with Bosh, takes seconds with Kubernetes.
- VMs lead to massive fragmentation as they are mostly under-utilized and in the worst case over-utilized.
- Bosh can’t scale processes as it commandeers only VMs, while in Kubernetes everything is a pod/container that can scale up or out automatically using the VPA/HPA.
- Using the Bosh Kubernetes CPI has other disadvantages we can discuss in breadth, but I don't think we should, because its experimental at best and I know no installation actually running on it.
- Bosh can’s scale VMs automatically, while Kubernetes can. If the cluster is nearing saturation, the cluster-autoscaler provisions more VMs on-the-fly (or shrinks the cluster back).
- Bosh uses outdated Monit to watch over single processes, while Kubernetes pods are managed by the container engine on the lower level and by Kubernetes itself on the higher level.
- Bosh depends on rather large Ubuntu-based or CentOS Pivotal stemcells (with the Bosh agent) and Pivotal updating them, while there are much light-weighter options like CoreOS Container Linux and no lock-in (you can take almost any OS).
- Bosh packages all software into proprietary Bosh Releases and doesn’t isolate the VM processes, while with Kubernetes you create individual images and run them as isolated containers.
The list goes on and on and it is unlikely that Bosh can catch up again (the Pivotal IPO statement seems to indicate the same as major risk [1]). Kubernetes is the new virtualization layer and is made to run software reliably with minimal TCO. I have seen this in practice - Kubernetes is absolutely amazing - also/especially for these types of workloads.
As a 4 year BOSH user and 1 year Kubernetes user, I have to pick some nits.
> By using Kubernetes to manage itself you have less components, less learning. It is there already and everybody who works with Kubernetes doesn’t need to pick up yet another technology.
If you're running Kubernetes on-prem, you still need to solve how to manage the Kubernetes control plane. Kubernetes-on-Kubernetes doesn't make that vanish.
> Bosh provisions VMs, which are slow to provision. What takes minutes with Bosh, takes seconds with Kubernetes.
BOSH provisions anything for which there is a CPI. Virtual machines, hardware, Kubernetes containers.
Some folks will go directly to virtual kubelets. A lot of folks won't. For on-prem they will need to solve the bootstrapping problem to get to the first install of Kubernetes. Even GKE, pretty much the gold standard public service, is still creating VMs for you.
> VMs lead to massive fragmentation as they are mostly under-utilized and in the worst case over-utilized.
And you've never over or under provisioned a container?
> Bosh can’t scale processes as it commandeers only VMs, while in Kubernetes everything is a pod/container that can scale up or out automatically using the VPA/HPA
BOSH is a purely operator tool. Kubernetes is not very clear about where it wants to draw the boundaries. At CF Summit a consistent theme was "we ought to use Kubernetes under the hood". At Kubecon a consistent theme was "hmmm ... maybe we should have a hood".
Scaling apps is up to whomever cares about them. On Kubernetes that's HPA or VPA or another autoscaler (I happen to work on an autoscaler that is for Kubernetes). On Cloud Foundry it's one of the several app autoscalers you can install.
> Using the Bosh Kubernetes CPI has other disadvantages we can discuss in breadth, but I don't think we should, because its experimental at best and I know no installation actually running on it.
Nobody wanted it, to be frank. Now they do and folks from Pivotal, IBM and I think SAP are working on it (as well as the cluster API).
> Bosh can’s scale VMs automatically, while Kubernetes can. If the cluster is nearing saturation, the cluster-autoscaler provisions more VMs on-the-fly (or shrinks the cluster back).
Kubernetes cannot scale its components. It needs an outside tool to manage its own components. A tool like BOSH, for example.
Or, in GKE, the cluster autoscaler. Which, again, spins up VMs, not containers.
> Bosh uses outdated Monit to watch over single processes, while Kubernetes pods are managed by the container engine on the lower level and by Kubernetes itself on the higher level.
BOSH monitors both processes and VMs. Monit is being aggressively retired in favour of BOSH Process Manager.
> Bosh depends on rather large Ubuntu-based or CentOS Pivotal stemcells (with the Bosh agent) and Pivotal updating them, while there are much light-weighter options like CoreOS Container Linux and no lock-in (you can take almost any OS)
This goes back to my point that Kubernetes has to run on something, and that it would be nice if that something is easy to manage. One way to do that is to totally relieve the operator of unnecessary toil.
The only way to ensure you have a consistent machine image is to ... have a consistent machine. Red Hat agree, which is why OpenShift has always run on RHEL. So if "lockin" means "totally opensource Linux distribution with profitable vendors who rapidly backport fixes for years in very short timeframes", you're locked in by everyone.
Our experience is that operators like the stemcell system. It's been a competitive advantage for us. Red Hat's purchase of CoreOS -- which is much more BOSH-like than Ansible -- is not a coincidence.
> Bosh packages all software into proprietary Bosh Releases
This is flatly wrong.
Releases are opensource. By default they're published to bosh.io and rely on having a public git repository.
> and doesn’t isolate the VM processes, while with Kubernetes you create individual images and run them as isolated containers.
Or you tell your deployment to spread them across machines. On IaaSes that means different VMs. On Kubernetes it will mean different containers.
> The list goes on and on and it is unlikely that Bosh can catch up again
BOSH isn't trying to be Kubernetes, so there's no "catching up". It's a different tool that serves a different audience with laser focus. I might as well claim that Kubernetes "can't catch up" with BOSH.
It's because we listen to our customers that Pivotal has PKS. It's also because we listen to our customers that PKS uses BOSH for the compute, network and storage substrate. They are different tools and they solve different problems.
As I see the trends, Kubernetes will take over most of the workloads which BOSH is used for now. It's much easier to package a Helm chart than to construct a BOSH release, so it's only sensible to target the Helm chart. An increasing amount of control-plane components will be able to hoist themselves into containers, which reduces the things BOSH will supervise. At some point virtual kubelets will become the de facto compute API, which means that CPIs are no longer the primary abstraction layer.