Why Kubernetes Matters at Scale
Updated: Nov 26, 2019
If you are a developer or are following along with the DevOps community, you have likely heard the buzz around Kubernetes. You probably see lots of the big Silicon Valley companies touting the benefits of the technology and deploying Kubernetes as a Service (KaaS) in their cloud platforms. In addition, it seems like all of the most innovative startups are deploying their apps leveraging Kubernetes (including ours). However, in most large enterprises and highly regulated industries, we have not seen adoption take off. Many of them are just now piloting container technology or only have it in production for a small number of workloads. It is not yet the de-facto way they are building applications and Docker comes with its own learning curve so many haven't wanted to take on the additional burden of learning Kubernetes as well. However, they should...
When you first start containerizing applications with Docker, it isn't necessarily intuitive why you would need Kubernetes. Your environments are smaller and the use cases less mission critical (which is normally why enterprises pick these use cases to get started in a low risk way). However, as you containerize more applications and the workloads become more important, several problems will start to arise:
- Upgrading, maintenance, and scheduling become headaches with a lot of manual work
- Hosting resilient workloads in a High Availability architecture that supports Disaster Recovery objectives is difficult or impossible
- Managing provisioning and capacity is imprecise with over provisioning (wasting money) or under provisioning (poor user experience and resiliency) being common
- Securing and managing communications between services quickly breaks down
The upside is that Kubernetes can solve all of these problems at scale for even the most demanding enterprises. In particular, it offers the following "killer" features:
- Auto-provisioning to scale and load-balance applications, expose them via DNS/IP, and declarative upgrades for future deployments with options for rolling wave and A/B testing
- Deploy in the middle of the day with no downtime
- Resource level your application needs so you are only consuming what your app needs at the time to avoid wasting money
- Self-healing infrastructure to improve your resiliency to hardware and software faults that would otherwise take down an application or degrade its performance
- Improved security through locking down communications on the network and secure storage of application secrets
For a long time, Kubernetes had a significant learning curve which created a barrier to entry for many customers. Not everyone had the Linux and scripting ninjas needed to make this kind of environment work at scale. Today, that is fundamentally changing with the KaaS offering from hyper-scale cloud vendors that abstract away that complexity (or on-premise pre-configured Kubernetes services). They key today is learning how to architect your applications to work in Docker containers and to learn the basic configurations necessary to run those containers in a Kubernetes cluster.
To help solve this problem, C2 Labs has created a free set of Kubernetes training that is available in this GitHub repository. The training provides:
- A sample Angular 8 app and the Dockerfile to containerize it
- Example Kubernetes configurations and how to deploy the Docker container into a Kubernetes cluster
- Example code for deploying application upgrades, resizing capacity, and monitoring resource utilization
- Helpful tips for overcoming common problems to accelerate your learning curve
C2 Labs believes strongly in giving back to our technical community and contributing to the overall body of knowledge in the DevOps community. We hope this free training and source code helps accelerate your DevOps journey to build more resilient, secure, and cost-effective applications. For customers wanting classroom training or customized training that is focused on your environment/challenges, contact us to learn more about how our C2 Labs instructors can be accelerators for your organization's digital transformation journey.