Ever since it emerged out of the halls of Google five years ago, Kubernetes has quickly become one of the hot technologies of the decade.
Simply put, Kubernetes is now the undisputed platform of choice for composing and running applications comprised of microservices - small, independently deployable services that run in containers and work together to function as a larger application that can be ported across various types of infrastructure.
Kubernetes is an orchestration tool, which in this case means it enables developers to view, coordinate, and manage containerised workloads and services with the goal of running resilient distributed systems.
According to the latest figures from the Cloud Native Computing Foundation (CNCF), published in August 2018, 40 per cent of respondents from enterprise companies (over 5000 firms) are already running Kubernetes in production.
While that’s good progress for the open source project, it’s important to note that the vast majority of these organisations are running only a handful of applications with Kubernetes as they get to grips with the technology.
But the direction of travel is clear: Container-based microservices applications are the future and Kubernetes is their platform.
That’s why the big three cloud providers have all launched managed versions of Kubernetes - and Cisco, HPE, IBM/Red Hat, Microsoft, VMware/Pivotal, and others have incorporated Kubernetes into their core software offerings.
Kubernetes is enabling enterprises of all sizes to improve their developer velocity, nimbly deploy and scale applications, and modernise their technology stacks.
For example, the online retailer Ocado, which has been delivering fresh groceries to UK households since 2000, has built its own technology platform to manage logistics and warehouses. In 2017, the company decided to start migrating its Docker containers to Kubernetes, taking its first application into production in the summer of 2017 on its own private cloud.
The big benefits of this shift for Ocado and others have been much quicker time-to-market and more efficient use of computing resources.
At the same time, Kubernetes adopters also tend to cite the same drawback: The learning curve is steep, and although the technology makes life easier for developers in the long run, it doesn’t make life less complex.
Here are some examples of large global companies running Kubernetes in production, how they got there, and what they have learned along the way.
Bloomberg reaps the benefits of early adoption
Financial data specialist Bloomberg turned to Kubernetes in 2015, when the tool was still in alpha, before moving into production in 2017 once the necessary continuous integration, monitoring, and testing was proved out.
Bloomberg processes hundreds of billions of financial data points every day, with 14,000 different applications powering its ubiquitous Terminal product alone. The IT organization wanted to boost the speed at which it could bring new applications and services to users and free up developers from operational tasks.
After assessing various orchestration platforms, such as Cloud Foundry, Mesosphere Marathon, and various Docker offerings, Bloomberg opted for Kubernetes because it “had a good foundation and it was clear they were confronting the right problems. You could see a vision and roadmap as to how it would evolve that were aligned with what we were thinking,” explains Andrey Rybka, head of the compute infrastructure team at Bloomberg.
Over time Bloomberg has worked on a homegrown platform-as-a-service layer on top of Kubernetes to give developers the right level of abstraction to work effectively with the technology. This self-service web portal is essentially a command-line interface and REST API which integrates with a Git-based version control system, CI build system, and central artifact repository.
One of the key goals for Bloomberg was to make better use of existing hardware investments using the autoscaling capabilities of Kubernetes, along with the ability to self-provision and flex virtual compute, networking, and storage without having to issue tickets.
“With Kubernetes, we’re able to very efficiently use our hardware to the point where we can get close to 90 to 95 percent utilisation rates” at times of peak demand, Rybka said as part of a CNCF case study. Much of that efficiency comes from the ability to constrain resources for a given workload, so it doesn’t starve other workloads.
As is the case with most enterprises adopting Kubernetes in production, the main challenges arose around the use of YAML to write manifests, which specify how Kubernetes allocates resources. “These are powerful concepts in Kubernetes that require a steep learning curve,” Rybka said.
As Bower put it: “Kubernetes makes a lot of things easier but not necessarily simpler.”
As a result, Bloomberg started with basic manifests, limited to a small subset of criteria from which developers could scale up their usage as they got more comfortable with the technology, as well as running plenty of internal training programs.
“We have a lot of existing infrastructure and there is zero chance that will miraculously move to Kubernetes off big iron [mainframes],” he said. Instead the orchestration platform is being targeted at web-based applications and net-new systems.
In the data and analytics Infrastructure team, where Bower works, the initial approach was to stand up a new data science compute platform for the machine learning engineers to run complex workloads using tools like Spark and TensorFlow.
As his parting piece of advice, Rybka talked about the importance of building expertise. “You really have to have an expert team that is in touch with upstream Kubernetes and the CNCF and the whole ecosystem to have that in-house knowledge. You can’t just rely on a vendor and need to understand all the complexities around this,” he said.
News UK taps Kubernetes to scale on demand
The UK arm of media giant News Corp has been dabbling with Kubernetes since 2017, moving from their own custom Kubernetes clusters to the managed Elastic Kubernetes Service (EKS) from Amazon Web Services in 2018.
This makes up part of a stack that also includes a bunch of AWS services, including Elastic Container Service, the Fargate compute engine, AWS Batch, and Elastic Beanstalk.
Read more on the next page...