KubeCon 2018: Kubernetes is the New OS, So What?
KubeCon + CloudNativeCon, the annual conference for Kubernetes, doubled in size this year as the industry matures. Much has happened since last year’s event: IBM acquired RedHat, VMware picked up Heptio and Cisco partnered with Amazon — all in an attempt to deliver “commercial” or “multicloud” Kubernetes distributions to on-prem IT organizations.
But while Kubernetes is being widely considered the new operating system, we shouldn’t forget most users now don’t care about the OS, they are looking to consume applications or managed services deployed over such OS and we haven’t seen many of those at KubeCon.
The show floor at KubeCon was packed with “managed Kubernetes” offerings and various logging, monitoring, service meshing and automation tools which will help build the ultimate Kubernetes cluster. A major theme was Knative, a set of libraries that can help me build my own serverless platform. But just two weeks earlier at re:Invent, the focus of both vendors and AWS product announcements was far more about providing readymade solutions, software, database, or AI-as-a-service. That and turn-key “serverless” platforms which are to be consumed by the end developer.
The motivation is clear, IT infrastructure players are evolving from shipping virtual machines and hyper-converged infrastructure to something cloudier, and the market does exist since IT teams want to progress. But before rolling your own Kubernetes with containers, pods and YAML configuration files, let’s take a moment to ask ourselves whether this is the end result we all had in mind? Is Kubernetes a solution or just the new OS? Should everyone take on the tedious integrations of mingled infrastructure and middleware?
The desire of the less tech-savvy users is to consume higher-level services and make Kubernetes plumbing invisible so they can focus on their business applications.
From the Borg
Kubernetes is a cluster orchestration and management software for cloud native workloads which is based on a Google technology called Borg. In this cloud-native approach, software is broken into smaller micro-services and packaged as (Docker) containers. Those containers are scheduled on a cluster and automatically scale to fit the desired load. All cloud providers now offer Kubernetes as a managed service with practically the same APIs. Software vendors can build their cloud service on Kubernetes and mobilize it to other clouds with minimal overhead (although they may still be tied to other cloud services such as databases and various APIs).
The benefits of this cloud-native approach include simpler deployment, elastic scaling and live version upgrades, which is why Kubernetes is now the de-facto standard for cloud software providers and internet startups. But the ability to fully benefit from Kubernetes requires an application designed with a cloud native approach in mind:
- Familiarity with various technologies, from containers to service mesh
- New development practices
- Integration and maintenance of a long list of open-source projects
- CI/CD pipelines
- Deployment of storage and scale-out databases
- A bespoke security layer on top the disjointed pieces selected
And all this is before we even wrote a single line of application code!
Cloud Moved to a Service Consumption Model
Enterprises struggle with technology adoption as they transform and adapt to the digital age. The need to support millions of online users, work with large-scale data and adopt modern analytics and AI technologies is forcing them to pick their battles: instead of spending time and money on re-inventing infrastructure layers, they seek best in class pre-integrated cloud services which can be glued together to build modern applications.
This has led cloud and software providers to move up in the stack. Instead of delivering programmable infrastructure, or virtual machines, they deliver pre-integrated software services, such as:
- A variety of database and messaging services,
- API gateways and networking services,
- AI and Machine learning services,
- Serverless functions (automating code deployment),
- Logging and monitoring services.
Most cloud users or small technology providers innovate quickly as they focus on unique applications instead of underlying infrastructure, data or middleware — which are outsourced to cloud and SaaS providers. They use serverless functions as a quick way to integrate between managed services and add custom code.
Traditional infrastructure providers such as Cisco, VMware, HPE, Dell and Nutanix have always sold infrastructure solutions to IT departments. They never dealt with the application layer and lack the intellectual property and experience.
Unfortunately, until now this level of service abstraction has been limited to the public cloud. Private cloud offerings from traditional IT vendors are focused on infrastructure automation and IT teams must build services from individual products or open-source projects. This requires many skilled developers which aren’t at the disposal of most enterprise shops.
Kubernetes, the First Step Towards Hybrid-Cloud
For true hybrid clouds to exist, the same service abstraction levels must be provided in both public and private clouds. But by the time on-prem IT organizations finish the integration of a new stack, an even newer one clearly emerges to be better… That will continue to be an inevitable outcome, and they will never catch up with the public cloud service consumption model of managed databases, AI, APIs and serverless unless they find a way to deploy pre-baked services on a common “OS” (aka Kubernetes).
Traditional infrastructure providers such as Cisco, VMware, HPE, Dell and Nutanix have always sold infrastructure solutions to IT departments. They never dealt with the application layer and lack the intellectual property and experience. On the other hand, cloud providers built databases, AI middleware and cloud-native frameworks for internal consumption at scale and now make those available to the cloud user community. IT vendors, therefore, prefer to settle for adopting the next infrastructure technology — “managed” Kubernetes — sell it and declare victory!
So a true hybrid cloud exists, but only if based on software stacks which ride on commodity hardware and are potentially pre-integrated with Kubernetes. They deliver the same high-level services abstractions found in the cloud for on-prem or edge deployments. This software may come from the cloud providers (Amazon Outposts, Google GKE on-prem and Microsoft Azure Stack) or from newcomers who think like a cloud provider and have the relevant system and software experience.
Most users will eventually just wander their way to the public cloud if they don’t have good reasons to stay on-prem for data locality or regulatory reasons.
On the Horizon
The emergence of IoT, smart mobility and retail is placing compute close to data sources to eliminate the effects of bandwidth, latency or unreliable internet connections. This is fueling the hybrid deployment model with many “edge” clusters, overseeing local data processing, real-time events and AI, while heavy machine learning tasks, data archiving and the control plane are running in a central (public) cloud.
The current on-prem IT model is heavy on local infrastructure management and DevOps. It will be replaced by a distributed cloud appliance model with a simpler, more integrated and remotely controlled stack. Application software, in the form of serverless functions or machine learning models, is developed and tested in the cloud and then pushed automatically to an unattended edge. Data and metrics collected at the edge are processed, downsampled and propagated automatically to the cloud, all without manual intervention.
This is not science fiction; at KubeCon, my company Iguazio in collaboration with Google Cloud introduced a fully integrated cloud-to-edge solution which is already being evaluated by leading retail and IoT partners.
I hope the Cloud Native Computing Foundation will place more of an emphasis on higher-level services in future KubeCon events, to address the needs of end users and enterprise shops which are not in the bleeding edge of technology.
Kubernetes is the new OS, and a great way to standardize across clouds and vendors. Most people usually just consume applications and let someone else worry about the OS.