Since its version 1.0 release in 2015, Kubernetes has captured the imagination of DevOps. As per the CNCF cloud native survey in 2019, 78% of the respondents were using Kubernetes in production. Gartner predicts that by 2023, more than 70 percent of global organizations will be running more than two containerized applications in production, up from less than 20 percent in 2019.
Top three use cases for Kubernetes as per the survey are
1. DevOps & CI/ CD Automation
2. Modernizing legacy applications
3. Automating of app operations
I am sure like many other CTOs, VPs, Head of Technologies, you must be wondering whether Kubernetes is for you or not? What are the costs and advantages of migrating to Kubernetes, from your current system which has taken years to perfect. What kind of tactical and strategic business advantage will you get out of Kubernetes?
In this article I have collated information from across the various surveys and reports. By the end of this article you will have good graps on the benefits and challenges of adopting Kubernetes.
TLDR;
Kubernetes can fasten your release cycle and help you lower your cost of infrastructure but it will be a long ride and would require continuous investment in skill upgrade and building DevOps and SRE tools and practices for Kubernetes.
To start off let’s look at some of the benefits you can get out of Kubernetes.
Shorter development cycle
53% of the respondents said Kubernetes has helped them shorten their development life cycle. Kubernetes exposes a powerful set of APIs which can be extended to serve specific use cases.
This has resulted in an explosion of better defined DevOps products which enhance the productivity of the DevOps and development team. As per the Accelerate State of Devops Report 2019, highest performing engineers are 1.5 more likely to use easy-to-use tools. (Do reach out to our team to know how superior user experience of our product has helped teams triple their productivity)
Modernizing legacy applications
50.4% of those surveyed believe Kubernetes will help them in modernizing their monolithic applications. In a separate survey 50% of the respondents said they moved their monolithic application to Kubernetes successfully.
Unlike popular myth, that one needs to have 12 factor application-slash-micro-services to take advantage of Kubernetes, as a matter of fact, the pace of converting monolithic applications to micro-services increases substantially once on Kubernetes. Kubernetes has inbuilt features like internal dns, pod restart which are basic requirements for micro-services.
Better resource utilization
56% of those surveyed chose improved resource utilization as one of the top benefits of adopting Kubernetes. This improvement is primarily because of the use of containers as containers allow fine grained specification of resources driving better utilization.
33% of the respondents also saw cost reduction as a positive side effect of moving to Kubernetes because of better resource utilization.
Kubernetes provides VPA (Vertical Pod Autoscaler) which can be used for optimization of resources to a certain degree but it cannot be used with HPA (Horizontal Pod Autoscaler) therefore it requires manual intervention and technical know how. ( contact us if you want to test out our beta tool for continuously optimizing resource utilization)
Multi cloud portability
34.96% of those surveyed cited multi cloud portability as one of the important use cases for adoption of Kubernetes. With a uniform set of API’s which work across cloud providers whether Amazon (AWS), Google (GCP), Azure, Alibaba or on-prem, Kubernetes makes multi cloud as real as multi cloud, hybrid cloud can be.
If we divide different parts of applications including datastore, cache, queuing systems, application etc into stateless and stateful, then with Kubernetes, multi cloud strategy for stateless applications has become trivial. Stateful applications still pose substantial challenges to multi cloud, hybrid cloud strategy.
Now that we know what benefits we can get out of Kubernetes, let me walk you through the common gotchas for using Kubernetes.
Skill gap
Kubernetes is a newer technology and much different from what we have been used to. Instead of working with OS now we are dealing with micro-services with a lot of moving parts. It has a steep learning curve and requires unlearning and relearning of the ways in which we manage applications.
Kubernetes is a newer technology and much different from what we have been used to. Instead of working with OS now we are dealing with micro-services with a lot of moving parts. It has a steep learning curve and requires unlearning and relearning of the ways in which we manage applications.
With a continuously growing list of addons, it is imperative for companies to invest in reskilling people continuously. The availability of IT professionals and an acute scarcity of container skills can adversely affect day 2 operations of your company. Kubernetes skills are in high demand, a quick search on Indeed.com shows over 9000 Kubernetes jobs!
Operational complexity
Kubernetes is the most popular container orchestration but it’s only one part of a container platform. In addition to a container scheduler, a complete container platform needs products for cluster management, deployment, disaster recovery, alerting, monitoring, observability, cost monitoring. This requires deep kubernetes knowledge.
While it may be relatively easy to deploy Kubernetes initially for experimentation and Proof of Concepts, it’s very different when you have to operate it at scale. 70% of the respondents cited lack of experience and expertise as the biggest challenge to deployment and management of Kubernetes.
Operating Kubernetes clusters at scale in production requires security hardening, right configuration, right policies so that only whitelisted objects run, audit log of every mutable action, monitoring and alerting, maintaining high availability, and achieving non-disruptive upgrades, deployment through canary and blue-green, providing right tools for teams to debug errors and failures and much more… which is enormously challenging.
It can become a multi-year process for large organizations and can also become a divisive internal issue for companies as it requires multiple stakeholders to come together. How you champion it within the organization will decide its benefits.
Security Challenges
The biggest reason for breach of Kubernetes based infrastructure is the flaw in design and architecture of Kubernetes implementation in the organization. Container compromise is the second biggest reason for breach. Hence it’s important to pay attention to them particularly.
Kubernetes by itself is very robust, even though as Kubernetes adoption has grown so has the hackers interest but it is true for the OS distributions also. Kubernetes takes these concerns very seriously and keeps fixing security issues from time to time.
Whats next?
Like any other set of technologies, Kubernetes also has its own set of challenges and rewards but only 5% of the respondents have not realized any benefits of Kubernetes. So what do you think, are you ready for Kubernetes journey?
Please reach out to our team if you would like to know more about productionizing applications on Kubernetes.