tjmdigital, September 4, 2020
Kubernetes has exploded in popularity since stepping onto the scene in 2014. According to Cloud Native Computing Foundation’s 2019 survey, 78% of organisations polled are using Kubernetes in production (up 20% from the year prior). And, in December 2019, there were 86,673 commits to the Kubernetes repository on Github and there are 2,390 active contributors. So there’s a lot of buzz around it, but what exactly can Kubernetes do anyways? From the official documentation:
“Kubernetes provides you with a framework to run distributed systems resiliently. It takes care of scaling and failover for your application, provides deployment patterns, and more.”
Known for its resilience, reliability and portability, it’s no surprise that developers love working with Kubernetes. But, just because it’s ever-growing in popularity doesn’t mean it’s a fit for your organisation or cloud-native goals, right?
Below are a few common concerns and misconceptions that come up with Kubernetes adoption, and solutions to overcome them.
There is a lot of hype around Kubernetes, as it’s regarded as the ‘now’ and the future of cloud computing. As mentioned above, it’s getting a lot of use and doesn’t seem to be going anywhere. But (and this goes for anything) you should never make a decision based on what’s popular at the time or, in this situation, model your cloud infrastructure on what’s working for another organisation.
It’s tough when most developers’ eyes light up at the mention of Kubernetes. K8s is a new technology in the grand scheme of things, and one that’s backed by a strong (and vocal) community, as evidenced by those GitHub contributors. Kubernetes also has the pedigree of being born from Google and big organisations like Airbnb, Reddit, Pinterest and Ebay, utilising it.
Before you get clouded (pun intended) vision by the potential of Kubernetes, and too caught up in the success stories from some of these mega-companies, think: What problem is it going to solve for us?
While there is a lot of hype, Kubernetes has proven to do container orchestration really well, giving teams the availability to deliver with speed, efficiency and at low(er) costs. The buy in from developers is largely because there’s a lot of wasted time spent taking care of infrastructure with alternative models. Time spent in ‘maintenance’ mode takes devs away from building apps, which is what they’re really out to do.
Kubernetes is, in a way, more than container orchestration. Besides the ability to allow containerised applications to easily scale, Kubernetes provides features that allow for updates with near-zero downtime, self-healing clusters and version rollback. Using Kubernetes can have a drastic time-saving impact on operational development resources.
As far as the extensive fanfare, it’s been justified as Kubernetes rises to the industry standard for container production.
It’s true, Kubernetes is complicated. It will make utilising containers much easier, but not without its own complexities added to the mix. Joe Beda is one of Kubernetes’ founders, and even he admits it’s complicated.
To take advantage of Kubernetes, developers and devops need to have knowledge around key concepts and components: network, security, portability, and resilience. To manage a cluster, they should have an understanding of its architecture, storage, API, and administrative system, and know how to integrate tools to deploy, monitor and trace services, like Helm, Istio and Prometheus.
If teams don’t get a handle on these complexities, things could go awry and you’d be left with very little benefit and, instead, a whole lot of problems to solve.
On a podcast called ‘The Podlets’ Joe Beda is asked about Kubernetes’ complexity directly. He responded with, “Kubernetes is a super, super flexible tool. It can do so many things in so many different situations. It’s used in everything from retail stores, across the tens of thousands of stores, any type of solution. People are looking at it for telco, 5G…”
The complexities of Kubernetes directly contributes to its flexibility. So, unfortunately, they’re something you’ll have to live with if you choose to go with Kubernetes. Your teams will be able to efficiently deploy and manage a significant amount of infrastructure with greater operational velocity. The key: You need specialised, knowledgeable developers on your team to be able to effectively manage the complexities as they come. If you don’t have the resource on your team, or aren’t prepared to build out the team, you can bypass the complexities of Kubernetes by using a Kubernetes management platform.
Kubernetes is often branded as ‘too expensive’, but it’s a system designed for large scale. So, small scale applications that only need one or two servers are going to feel a cost burden, and also aren’t likely to be able to truly take advantage of all of the benefits. Remember, one of the key concepts of Kubernetes is resiliency.
To get the benefit of resiliency with Kubernetes, you need more nodes than the minimum required amount. If your solution is small and you only have a few applications to host, you should consider whether the costs are worth the effort. And, Speaking of spiralling costs, Kubernetes developers cost a pretty penny. With salaries often exceeding six figures, building an average-sized team can skyrocket to a million pounds and beyond.
In September 2020, the median salary for a job that requires ‘Kubernetes skills’ was £67,500, with the 90th percentile salary being £102,500 (taken from a sample of 3,616 UK salaries from IT JobsWatch)
Another cost frustration is that it’s extremely difficult for organisations to realistically predict project costs from the infrastructure perspective, leading to unexpected, ballooning cloud costs. Pricing from the cloud providers are complex, which obscures organisations from the real costs of Cloud.
Different clouds have different pricing points, and with the complexity of those pricing schemes it is difficult to determine which cloud would be the best and the most cost effective option for a new project. Understanding those costs differences across three different clouds could take a week of research, a process that then needs to be repeated for every new project. The way you configure cloud services could go a thousand different ways, with each one ending with a different total cost. What you end up paying also depends on individual factors, like your operating system, the level of support you need and whether you pay by the hour or the month. Or, if you have any discounts to add to the mix. To add insult to injury, cloud providers switch up their pricing on a regular basis. There’s a good chance that after all of that tedious research spent on figuring out the best deal, it will no longer be the case.
It’s not easier to understand price breakdowns of existing projects either. Cloud providers charge for the entire organisation’s cloud costs under one umbrella – costs aren’t broken down into projects or, more understandably, teams. So, it’s increasingly difficult to stick to budget, manage resources and optimise spending. Decisions are delayed, and money is easily lost.
When you’re managing Kubernetes in-house, the responsibility is completely on teams to carve out that cost visibility. It puts a lot of pressure on development and devops teams, who are rightfully focused on security and delivery. Instead of managing the full load, consider using Kubernetes through a platform that has some of these time and money-saving capabilities built in. Outsourcing allows you to develop faster, access more insights and tools, troubleshoot issues, and maintain heightened security standards.
The golden question: Do the benefits of Kubernetes outweigh the complexity and potential expense? You need to consider the amount of time and resources you’re willing to devote to Kubernetes. Do you have the knowledge and expertise in your team? If not, you need to be willing to acquire it or look to a product to streamline the benefits of deploying applications with Kubernetes at scale and at a lower cost.
To take full advantage of Kubernetes, organisations need the ability to automate the work that is draining to time, budget and resources. Learn more about Kubernetes and get started with our Intro Guide to Kubernetes or get in touch to easily streamline your Kubernetes journey.