Sarah Zelechoski, VP of engineering at Fairwinds, still remembers a conversation she had with a database administrator years ago. She was calling the set of rows and columns in front of them a “table,” he was calling it a “view,” and neither realized they were talking about the same thing.
Today, the hand-in-hand shift to DevOps and cloud-native applications means fewer confusing moments between developers and operations professionals. Kubernetes, a management system for containerized applications, is one tool that supports easier communication and better visibility. It gives organizations one interface to automatically deploy and scale applications, managing their load across clusters of virtual machines, physical machines or cloud environments.
But Kubernetes is tough to master — and therefore intimidating — to plenty of teams and developers, especially those moving applications to the cloud for the first time.
“Everybody throws everything on Kubernetes.”
“It’s kind of the butt of the joke in the tech community: Everybody throws everything on Kubernetes,” Zelechoski said. “I think there’s a lot of resistance to fads, but it’s not as scary and faddish as people like to say it is.”
Despite its complexities, Kubernetes knowledge makes developers more desirable, and it can turn a jumbled node nightmare into a manageable cloud transition, Oracle cloud native developer advocate Karthik Gaekwad said.
“We have a lot of WebLogic customers who are trying to modernize their applications, and they’re like, ‘Oh, I can modernize in an easy way?’ So it’s kind of a win-win,” he said.
If you want to introduce Kubernetes to your developers and organization — or simply get familiar with it for your own sake — here are some tips to start on the right track.
The checklist for your Kubernetes transition:
- Lock in your development workflow. It doesn’t have to be a perfect CI/CD pipeline, but it has to be clearly defined.
- Check for legacy processes that slow you down. If your teams are clinging to Waterfall methodologies, the switch to cloud hosting will be much harder.
- Evaluate how many resources you can dedicate to Kubernetes. Consider third-party management services if Kubernetes is going to devour your bandwidth.
- Consider your company size. Does container cluster management actually make sense for you?
- Think twice about staying on premise. Or risk getting stuck with low scalability.
- Get ready to learn on the fly. Kubernetes has a steep learning curve, but your existing skills are transferable.
- Perfect your pitch. Gain executive buy-in by focusing on security, reliability and scalability.
Lock in Your Team’s Development Workflow
Kubernetes will keep your containerized applications healthy and running. But you have to know exactly what you want your deployments to look like.
Organizations using Kubernetes need a highly organized practice around developing, building, testing and shipping, Zelechoski said.
“It doesn’t mean you have to have a CI pipeline that’s bulletproof and you’ve got integration testing that’s all set,” she added. “It just means that you and your team need to know: ‘This is how we write code. This is how we push code. This is how we review it. This is how we build it. This is how we ship it.’”
Before launching a Kubernetes program, set aside time for some retrospectives on workflow. Formalize your pipeline, and make sure all your team members are in the know. And while a pristine CI/CD pipeline isn’t a prerequisite, it’s advisable for teams to move in that direction, Gaekwad said.
“Probably the first question to ask is how automateable your deployment process is. Do you use continuous integration? It’s kind of a basic thing you want in order to be on board,” he said.
Check for Legacy Processes That Slow You Down
For more traditional companies looking to transition to containers and the cloud, the biggest obstacle could be an aversion to failure, Zelechoski said.
Kubernetes supports fast fixes, frequent shipping and easy scalability. For companies that wring their hands over every change, a switch to that type of system could feel impossible. Before deploying with Kubernetes, make the necessary culture updates to work more nimbly, and shake off some risk aversion.
“Putting things into review for months at a time is not super compatible with containers and cloud and Kubernetes.”
“I hate to say agile, because I think it’s overly weighted, but putting things into review for months at a time is not super compatible with containers and cloud and Kubernetes,” Zelechoski said. “You need to be able to iterate quickly. And that’s a general mindset from the top of the organization all the way down, this mindset of being able to fail.”
Evaluate How Many Resources You Can Dedicate to Kubernetes
Kubernetes will help you manage your containerized application clusters, as well as automatically deploy and scale, but anything beyond that — like application security — requires extra work and expertise: “If you are running a vulnerable application in your infrastructure, and you put that on Kubernetes, Kubernetes is not going to help you out,” Gaekwad said.
So, if you want to manage your Kubernetes program in-house, consider the costs and benefits.
The costs: Kubnetes isn’t kind to generalists. There are a lot of facets to manage — from security to monitoring to data storage — and new features pop up all the time. Managing Kubernetes in-house could require a team dedicated entirely to it, which means people-hours diverted away from business cases and toward managing clusters.
“If you’re trying to ship robot pizzas, your Kubernetes team is not going to be worrying about pizzas or robots. They’re going to be working on Kubernetes,” Zelechoski said. “So if you want to spend your resources there and DIY it, that’s great. But it doesn’t always make sense.”
“One thing I learned is you can’t understand all the facets of Kubernetes.”
The benefits: Companies that choose to devote resources to an in-house Kubernetes team can go far deeper fine-tuning their clusters. Some large brands, Zelechoski said, have full Kubernetes teams dedicated to one use case. For them, it’s worth it.
In the future, Gaekwad said he hopes Kubernetes becomes more modularized so users can better understand the different functions of the system and specialize their skills. Until then, outsourcing Kubernetes management — or even just investing in particular managed services like monitoring or alerting — makes sense for most companies. It’s tough to understand the system from all sides, and relying on people with expertise can ensure things go smoothly.
“One thing I learned is you can’t understand all the facets of Kubernetes, from control plane data to authentication to authorization,” Gaekwad said. “You can be an expert in one of those areas.”
Consider Your Company Size
So, what about small companies or startups?
According to Zelechoski, Kubernetes still makes sense. It creates a common language for developers and operations teams and lays a strong foundation for scalability. Even if you’ll never need a large, multi-cluster infrastructure, you can always pare down your use of Kubernetes to fit your organization’s needs.
“All of these managed Kubernetes options out there are giving you 95 percent of the same defaults that you need, and you can deploy your app and be successful,” she said. “I think it’s really valuable for startups to start on a platform where everybody understands what’s going on.”
Gaekwad suggested small companies consider serverless set-ups instead. Startups, especially, may not have the person-power — or the need — to spend time managing nodes when they could be working on the applications themselves. Serverless helps teams ship faster, a boon for scrappy startups that don’t need to own their own infrastructures. For companies that might need to scale nodes quickly, however, Kubernetes — or a mix of Kubernetes and serverless — is still the way to go, he said.
“I think we’ll start seeing things become simpler, or Kubernetes fade into the background a little as people build a better experience for developers, like a platform built on top of Kubernetes, like Istio or something like that,” he said. “That way, you’re managing your applications more than managing this cluster management tool.”
Think Twice About Staying on Premise
There’s been a lot of talk about Kuberentes and the cloud so far, but some companies use Kubernetes for containerized applications hosted on premise.
“It may make sense for you to be on premise because of security needs, because you already have a data side, you already have equipment, whatever. But you have to take into account those things that are honestly harder when you don’t have the built-in managed services provided by places like AWS. That elasticity won’t exist,” Zelechoski said.
For instance: If a celebrity posts your product on Instagram, and you immediately need 300 times your normal traffic capacity, can you scale quickly enough, Zelechoski asked? For companies with nodes on premise, that answer is no. They’d need more physical hardware, as well as people who understand that hardware and how to support Kubernetes installs.
With Kubernetes in the cloud, however, load balancing can happen with the push of a button.
“When you’re running a Kubernetes cluster, a three-node cluster is relatively the same as scaling it out to a thousand nodes,” Gaekwad said. “It’s trivial to do.”
Get Ready to Learn on the Fly
If you want to learn Kubernetes, a Google search might not be the best place to start. The system is so new — and evolving so rapidly — that a lot of information online is outdated, Gaekwad said.
“The bad thing about SEO is the older articles still come up as number one in Google, so a lot of people find the wrong things,” he said.
Instead, Zelechoski tells developers to focus on “expansion learning,” or pinning down a skill you want, identifying the relevant skills you already have, defining the differences between those skill sets, and then forming one or two daily habits to bridge the gap. For example, if you want to get familiar with containers, build a basic container and use it as your command line for 30 days, and keep a log of the lessons you learn.
Otherwise, the best way to learn is by jumping in the deep end.
“The only way that you’re going to get really good at Kubernetes is by working on a problem.”
“The only way that you’re going to get really good at Kubernetes is by working on a problem. Which means you work for a company, and every day you come in and you learn how Kubernetes deals with that problem, and you get smarter,” Zelechoski said. “So the way that engineers are out there getting good at Kubernetes right now is by working at a place that just happens to be using it or by introducing it into the workplace where they are.”
One other option for training is to get a Certified Kubernetes Administrator certification from the Cloud Native Computing Foundation, which has maintained Kubernetes since Google released the system as an open-source project. Some tech certifications are useful while others are a cash grab, but this one is worthwhile, Zelechoski and Gaekwad said. If multiple applicants for a Kubernetes-focused position have similar qualifications, she’ll hire the one with the certification, Zelechoski added.
No matter what training tact you take, be ready to dedicate some time and learn as you go. Even experienced developers end up scratching their heads over some basic elements of Kubernetes, like the constructs of services and how to shape traffic to applications, Gaekwad said. For front-end developers who rarely touch ops, the learning curve can be even steeper.
But the climb is worth it, Zelechoski said.
“At the end of the day, it’s making you a more powerful developer. You are going to gain future-proof skills,” she said. “I think there are a lot of engineers out there who have a very limited runway on what’s left for their tech career if they don’t move into containers and cloud native.”
Perfect Your Pitch
A transition to the cloud requires executive buy-in. But if higher-ups don’t have experience with development and operations, you’ll need a clear, compelling pitch to explain why the move is beneficial.
Zelechoski recommended starting with a proof of concept in the cloud. It doesn’t require expensive hardware — you can buy a couple of hours’ worth of virtual machine time from a cloud provider. That’s a good jumping off point to show cloud native as a viable option.
Next, she said, focus your pitch on three areas: security, reliability and scalability.
In terms of security, running containerized applications in the cloud is tough to beat. Large cloud providers have dedicated a lot of brain power to cracking tough security concerns, and they’re running infrastructure for a lot of companies. Their default security posture is going to be better than the one you have on premise, Zelechoski said.
Cloud-based infrastructures are also more reliable. During her days in operations, Zelechoski would get pinged “seven times a night” to deal with “weird code” developers pushed. Similarly, Gaekwad spent lots of time early in his career wondering why applications weren’t responding properly or which node was causing issues. With managed Kubernetes in the cloud, teams can just kill problematic nodes and replace them with new ones.
“You’re able to treat your servers and computers like cattle, instead of like pets,” Zelechoski said.
Lastly, cloud hosting is more efficient. If a company is paying for 50 servers in a data center but not using them all, it’s wasting money. In the cloud, that company can use a 10th — or a 100th — of a machine. It only pays for what is uses, which saves money.
With some pre-planning, up-skilling and targeted pitching, companies can improve their software’s competitiveness by transitioning to the cloud. Kubernetes, with its visibility and scalability, will help them get there and stay there, Zelechoski and Gaekwad said.
“I liken Kubernetes to the next VMware,” Zelechoski said. “This is working toward being the standard way for people to deploy and manage and orchestrate containers. And I still think we’re on the very front edge of the wave.”