In order to respond to the explosion of digital needs of the business, two major trends dictate the current evolution of information systems. On the one hand, applications are becoming more and more modular, right down to microservices and containerisation, in order to facilitate portability, scalability and extensibility. On the other hand, infrastructures are moving massively to the cloud (or rather, clouds), which is the only way to provide all the necessary resources at the lowest cost and with maximum flexibility.
But at the intersection of these two upheavals, major questions are emerging: how to manage an exponential number of containers? how to coordinate and plan their execution in virtualised environments? how to scale them and ensure that they work properly? These are all questions that could quickly turn into a headache if a solution had not been created to answer them. That solution is Kubernetes.
Where did Kubernetes come from?
Launched by Google in 2014, Kubernetes (often abbreviated to K8S) is an open-source platform that automates the deployment, scaling and management of containerised applications on clustered environments, whether in a public, private, hybrid or multi-cloud cloud. It is this role of orchestrating cloud-native application execution resources that has earned Kubernetes its nickname “the OS of the cloud.”
Open-source since 2015, Kubernetes is the cornerstone of the Cloud Native Computing Foundation (CNCF), created within the Linux Foundation to promote and standardize technologies around containerisation.
What does Kubernetes do?
From a single control plane, Kubernetes allows you to:
- Create application services that combine multiple containers;
- Schedule the execution of these containers on virtual clusters;
- Provision, deploy and update applications;
- Manage the load and scale applications and their resources;
- Manage the health and integrity of containers over time.
Kubernetes does all this, regardless of the number of containers and complexity of the environments.
Why has Kubernetes become so indispensable?
In the teeming world of new technologies, few of them, like Kubernetes, manage to reach the status of a de facto standard. There are four reasons for this:
1. Relevance
Kubernetes is THE answer to the proliferation of containers and the complexity of managing them in the cloud. Without it, microservices architectures would quickly become unmanageable. With Kubernetes, administrators can give developers simple, fast and controlled access to the resources they need, enabling DevOps practices for cloud-native applications.
2. Portability
Kubernetes is open source and works across all cloud platforms, and is supported by the largest technology players, who use it and build it into their own tools.
3. Sustainability
This broad support, which is reflected in the size and dynamism of the community, ensures that Kubernetes will remain compatible with future technological and IT developments. This guarantees that investments, especially those dedicated to development, will be preserved.
4. The lack of competition
Kubernetes has become even more widely accepted because there is hardly any alternative when it comes to cloud-native applications. However, we can mention HashiCorp Nomad, whose functionalities, although more limited, can be quite sufficient in certain contexts.
Why is Kubernetes so complicated?
The most common criticism of Kubernetes is its complexity. In addition to its arduous handling, which involves a steep learning curve, this is also due to the following reasons:
A tool that thinks big: Kubernetes derives from Google’s experience in service orchestration, but not everyone has Google’s needs, and who can do more can’t always easily do less.
A tool that does a lot, but not everything: Kubernetes has a platform vocation and requires a lot of complementary tools to give its full measure, which in turn must be chosen and mastered. We can mention, in no particular order, Helm, ArgoCD or Dapr for development, Lens, Cilium or Crossplane for control and management, Kubecost for cost control, Istio for service meshing, Knative for serverless, and so on.
A tool with a key role: Kubernetes conditions the entire application infrastructure, so we cannot afford an incomplete, hasty or poorly controlled implementation, which could result in cascading consequences.
How to switch to Kubernetes?
Here, in 10 key points, is the roadmap to successfully adopt Kubernetes:
- Select from the ecosystem the frameworks, solutions, tools and runtimes that are suitable for the existing and the needs ;
- Set up the Kubernetes production platform;
- Build the CI/CD chain to deploy Cloud Native applications;
- Deploy its applications on its cloud environment;
- Adapt IT processes and activities to enable continuous deployment of Cloud Native applications;
- Ensure operations that guarantee application performance, security and resiliency;
- Automate and templatize what can be automated, from build to delivery via the DevOps pipeline;
How can I learn more?
This article is a part of a greater series centred around the technologies and themes found within the first edition of the Devoteam TechRadar. To read further into these topics, please download the TechRadar.