Adopting Kubernetes? These guidelines make the transition easier
When it comes to container orchestration, Kubernetes is close to the kind of market domination once experienced by Microsoft Windows. But Kubernetes is far from a ready-to-go, do-it-all container orchestration tool. Before any business can adopt Kubernetes, IT professionals must consider many issues. At the Red Hat Summit in Boston, some of Red Hat's top Kubernetes experts—including Josh Berkus, Kubernetes community lead; Brian Gracely, OpenShift director of product strategy; and Joe Beda, Heptio CTO and one of Kubernetes’s creators—shared insights and set expectations.
The initial step, of course, is to understand the advantages. To grok Kubernetes, said Beda, "first you have to understand why everyone got so excited about Docker and containers.” Docker, and the technologies it is built upon, allowed people to test a server program on a laptop. Then you could port it to the production environment with few changes and a high degree of predictability.
With Kubernetes, Beda said, you can improve automation, efficiency, and workflow. Doing so “can change the way people start thinking about deploying, building, and operating software," he said.
Worth the effort
The reasons to use Kubernetes are straightforward. It goes like this:
- Kubernetes makes it easier to run and manage containers;
- which makes it easier to build new applications;
- which enables you to run them on a hybrid cloud; and
- transforms the way you run your business.
But to do that, you must get your developers and operations staff on board with Kubernetes. Make certain each team can deploy faster and easier to Kubernetes than to their old environments, the experts said.
Specifically, that means not asking "your developers to do packaging," said Berkus. "You don't ask your programmers to be Kubernetes managers. Instead, you have to let programmers be programmers."
As the IT staff starts using a Kubernetes-based environment, "make sure their tools are familiar, easy to use, integrate with their workflow, and support teamwork," noted Berkus. Integrating tools like Ansible, GitHub, and Eclipse Che into your new Kubernetes-based structure. Only by doing this can you get developer buy-in, which is a key part of your Kubernetes deployment plan, he added.
One element that leads to success is to recognize that Linux is fundamental to modern containers, particularly for managing resources. True, there are Docker-compatible Windows containers, but they are not used much outside of a few Windows shops. For most practical purposes, "Linux is in every single container, and the Linux OS host spans every container," Beda pointed out.
In short, if you plan to use Kubernetes to manage your containers, your system administrators and DevOps need to know Linux like the back of their hands, said the experts. Kubernetes is Linux-based. No Linux, no Kubernetes.
Not quite out of the box
Adopting Kubernetes requires planning. Your first choice is whether to use a do-it-yourself approach or a commercial distribution. While Linux has a long DIY tradition, in this case, the conference panelists said, even Kubernetes geeks use commercial distributions.
That’s because the Kubernetes “box" includes the API server, default controller, default scheduler, the Kubelet node agent, and the Kubectl command-line-based client. Sounds more like tools and parts rather than a ready-to-run program, doesn't it? That's exactly right. It’s best to think of Kubernetes as a stack definition, not an application.
Twenty years ago, Linux was the same way. The OS was a collection of components and tools, and turning it into a usable system required experts.
To gain a deep understanding, the conference panelists recommended Kelsey Hightower's "Kubernetes: The Hard Way." This well-regarded resource, the panelists agreed, is not for people who want an automated approach to bringing up a Kubernetes cluster. “It's optimized for learning, so it takes the long road to ensure you understand every task required to bootstrap a Kubernetes cluster," Gracely said.
Kubeadm makes it (relatively) easy to bootstrap a minimum-viable Kubernetes cluster. The resulting cluster is useful for learning Kubernetes, but it's not really meant for creating a production system. Kubespray, on the other hand, uses the Ansible DevOps program to create a small production Kubernetes cluster on most popular clouds. Finally, Kops creates and manages production-grade Kubernetes clusters on Amazon Web Services; it's currently being ported to other clouds.
Expect to update regularly
No matter which approach you take, you need to deal with Kubernetes' high-velocity development. Or, as the Red Hat conference panelists put it, "The good part: You get all the new stuff, right away. The bad part: You get all the new stuff, right away."
You see, there's a new Kubernetes release every three months. Let me repeat that: There's a new version every three months. Oh, and there are no long-term support editions. There's only patch support for nine months. Not to mention that alpha and beta features can break compatibility.
Scary, isn't it?
Quick iterations may be fine for development and for learning Kubernetes, but it's clearly not an operations-friendly approach. For production, you really need a distribution. Picking the right Kubernetes blend for your company is essential.
Red Hat, of course, recommends its own OpenShift. While that is a good choice, there are many other options.
First, look at the cloud-specific Kubernetes distributions. These include Amazon EKS, Azure Kubernetes Service, and Google Kubernetes Engine. Note that if you use these, it may be harder to use Kubernetes as the foundation for a hybrid cloud.
Among the popular vendor-specific Kubernetes distros, which can be used on any cloud, are Canonical Distribution of Kubernetes; Docker Enterprise 3.0 with Docker Kubernetes Service; Mirantis Cloud Platform; Pivotal Container Service; Rancher 2.0; and SUSE Container as a Service. Each comes with its own take on Kubernetes. For example, SUSE's offering works over any existing cloud-specific Kubernetes, and PKS works hand in glove with VMware services.
Kubernetes is not a miracle worker. It's just a piece of your platform. That said, when deployed correctly, "Kubernetes will simplify complexity while enabling your company to automate your operations and application deployment on a hybrid cloud," Gracely said.
Once you have the right Kubernetes mix in place, though, your company can deploy applications faster, manage your workflow more efficiently, and run a more efficient IT shop.
Adopting Kubernetes: Lessons for leaders
- Deploying Kubernetes from scratch is probably not a good plan.
- Give developers the tools they need to make the most from shifting to a Kubernetes-based workflow and deployment model.
- Kubernetes is not a miracle worker. It's just a piece of your platform.
This article/content was written by the individual writer identified and does not necessarily reflect the view of Hewlett Packard Enterprise Company.