You can find plenty of people and data that will tell you Kubernetes has become a significant open source success. Those same people will extol the value of an orchestration tool like Kubernetes to help manage containerized applications at scale.
Red Hat technology evenagelists Gordon Haff and William Henry, for instance, note in their eBook, From Pots and Vats to Programs and Apps: How Software Learning to Package Itself, that an OCI-compliant container runtime is very good at managing single containers. But when single becomes plural, that’s another proposition: “When you start using more and more containers and containerized apps, broken down into hundreds of pieces, management and orchestration can get tricky.”
What you won’t find, however, are many experts – Haff and Henry among them – who will promise you that Kubernetes is “easy.” It’s a powerful platform, but there will likely be a learning curve for software teams who are increasingly shifting into containerized applications, and especially containerized microservices.
“Many of the systems that exist in the cloud today are built on abstractions that are based on physical concepts – VMs, virtual disks, etc,” says Joe Beda, cofounder and CTO at Heptio and one of Kubernetes’ original developers at Google. “Kubernetes instead introduces a set of logical abstractions: containers, images, pods, services, [and so on]. Learning these can take some time and contributes to the learning curve for this set of technologies.”
[ What will you gain from Kubernetes? See our related article, How enterprise IT uses Kubernetes to tame container complexity. ]
We collected some key advice to help you do just that - learn and plan – to set your organization up for long-term success with Kubernetes.
1. Read, watch, listen (and learn)
You’re on the right track: You’re already reading up on Kubernetes right now. Most experts recommend doing some homework before getting going in earnest. “There are a lot of good tutorials and talks out there,” Beda notes.
Nic Grange, CTO at Retriever Communications, recommends any material from Google Developer Advocate Kelsey Hightower, starting with a free Udacity course Hightower and a colleague created, Scalable Microservices with Kubernetes.
Hightower is also co-author of a both, along with Beda and fellow Kubernetes creator Brendan Burns, Kubernetes: Up and Running, which Grange also recommends.
Haff and Henry’s book offers great context for the why behind Kubernetes – as in, why orchestration is so important, as well as a great primer on software’s evolutionary path to the era of containers and microservices. Also check out this Kubernetes guide from Red Hat, including a glossary and a look at how Kubernetes fits into enterprise IT architecture.
2. Follow a plan for understanding concepts
Once you’ve got a “101”-level understanding, it’s time to dig deeper into the various concepts that make Kubernetes work. As Beda suggests above, they’re, well, different from what you might be used to. In fact, Beda advises beginning your learning process with containers themselves prior to getting up to speed with Kubernetes.
“Simply packaging up your application in a simple, immutable way is a huge step in [in learning] both how applications are first deployed and how they are monitored, upgraded, and grown over time,” Beda says.
Then, move on to Kubernetes concepts specifically. Just don’t try to tackle everything at once.
“Kubernetes has many different constructs, and a new user can easily get lost,” says Kimoon Kim, senior architect at Pepperdata. “Start with what Kubernetes Pods are, and just play with a working Kubernetes cluster for a while. (More on that in a moment.) It's OK to learn other constructs later.”
It helps, says CYBRIC CTO and co-founder Mike Kail, to have a plan or framework to follow once you tackle pods as a first concept. “I find that the best way to get started with any emerging technology such as Kubernetes is to outline the framework to then walk through in a logical manner instead of trying to drink from the firehose,” he says. Kail breaks it down this way: Kubernetes building blocks (like pods), services, (like ClusterIP), networking, volume management, and service discovery/load balancing.
3. Take Kubernetes for a test ride
“Once you have a good understanding of these core concepts, then start with a simple application deployment where you can also learn how the cluster behaves and any challenges,” Kail says.
You can use a managed cloud service for this, or take Kubernetes for a spin locally: Grange recommends the open-source project Minikube, which enables you to run a single-node cluster in a VM on your laptop as a way to get your hands dirty.
Grange adds that getting Kubernetes itself up and running is the most challenging part for some users and teams. Grange notes that, with tools like Minikube, you can temporarily skip that step to first learn how to how to deploy and manage applications with a managed instance of Kubernetes, then go back and learn how to build and manage your own clusters.
Arvind Soni, VP of product at Netsil, concurs that this is the right order: Starting with learning how to administer your own clusters may be unnecessarily painful. “You will get bogged [down in the] challenges of building and operating Kubernetes clusters rather than focusing on learning the end value that can be derived from it,” Soni says.
“Don’t worry about administering a cluster when starting out – do whatever is simple,” Beda says.
4. Start with non-critical workloads
A successful learning strategy almost always involves some trial-and-error: There’s no teacher quite like a mistake in a production environment. By anticipating those early missteps, you can limit their impacts to lower-tier apps. This is especially important as you grow from “testing and learning” mode to “managing containers in production” mode. This might also be the point when you consider an orchestration platform, such as OpenShift, for managing containers in scalable ways.
“Once you are comfortable with the concepts and the commands, you should start planning out how you are going to use [Kubernetes] with non-critical workloads,” Grange advises. “That is usually the best place to start, as it will allow you to learn, make mistakes, and be more confident when it comes to deploying more critical workloads.”
5. Shift from concepts to deeper learning
Make sure your learning curve is in fact a curve, not a flat line. Part of your hands-on learning should involve better grasping those concepts in everyday use, and continuing to develop a deeper understanding of the platform.
Once you’re building initial applications and getting comfortable, delve into “how all the ‘voodoo magic’ of Kubernetes happens,” Soni says. “How does it do routing to services? How does it enable persistent volumes and manage them as pods move? What options are available to address your needs for securing the pods? And so on. This will prepare you for both effectively using a managed Kubernetes [instance] or even building your own private Kubernetes clusters.”
[ Want to know more about securing all those containers? See this related paper: Ten layers of container security. ]