What is Kubernetes all about? Why do a lot of companies use it? In this blog, we talk about Kubernetes' system key capabilities and properties. Then, we go over some use cases and discuss a stakeholder analysis, followed by Kubernetes' key quality attributes. Next, we describe Kubernetes' roadmap and finally, we mention some ethical considerations.
Kubernetes (K8s) is an open-source platform, which is lightweight and scalable. It is a platform for managing containerised workloads and services. These containers assist the process of declarative automation and configuration1. Kubernetes is used by many companies, has a large and rapidly growing environment and its services are widely available.
Nowadays, a lot of applications are run in containers. These containers need to be managed and the administrator must make sure that there is no downtime when using the applications. In practice, this means that if one container stops, another one takes over to ensure that users can keep using the application. Kubernetes has the role of administrator. It provides a framework to run distributed systems flexibly. The aims of Kubernetes are preventing the occurrence or existence of downtime, solving the problem of scaling, and providing a handy Continuous Integration/Continuous Deployment (CI/CD) pipeline1. Load balancing, automated rollout and rollback, self-healing, and secret and configuration management are simultaneously orchestrated in Kubernetes to make sure everything is managed correctly.
System’s key capabilities and properties
Kubernetes can create clusters of worker machines or nodes which run multiple versions of the same containerised application2. The user can communicate with the cluster via the API of Kubernetes. All sorts of applications can run in these types of clusters and can be continuously developed and integrated with the cluster. A cluster has at least one node and can scale up these nodes to the requirements of the user. Each node consists of a Kubelet, which is an agent that makes sure that the containers in the pods are running; a Kube-proxy, which is a network proxy that implements part of the Kubernetes Service concept; and the container runtime, which is the software responsible for running the containers. The application can be deployed in different kinds of containers to the likes of the developer, such as Docker, Containerd, and CRI-O. A pod is a group of one or more containers with shared storage, network resources, and a specification (YAML) for how to run the containers. Kubernetes distributes the pods evenly among all the worker machines (nodes) to offer high availability. This decreases the application failure and balances the application load. Moreover, Kubernetes can self-heal, which means it can detect and replace unhealthy nodes. The networking model of Kubernetes allows the nodes to interact with each other. Kubernetes also provides strong guarantees about the cluster state, a unified set of APIs slowing down the scaling of applications, and the deployment of new containers. Kubernetes uses a custom set of its own YAML, API, and client definitions to ramp up a cluster.
Use cases
To emphasize Kubernetes' main capabilities, we highlight a couple of its use cases. If we look at the company Babylon, most of its products use some form of machine learning and artificial intelligence (AI). In the year 2019, the company was growing rapidly and did not have enough computing power to run a certain experiment. Thus, to come to a solution, the infrastructure team of Babylon used ‘Kubeflow’, which is a machine learning stack built for Kubernetes. The AI-lead Jérémie Vallée said the following: “We tried to create a Kubernetes core server, we deployed Kubeflow, and we orchestrated the whole experiment, which ended up being a really good success,"3. Another example is Spotify, which has around 10 million requests per second from users. Spotify had containerised microservices running amongst a lot of Virtual Machines (VMs) with their in-house developed docker orchestration platform Helios. They made the migration to Kubernetes alongside Helios running and this went effortlessly. Their Director of Engineering, Jai Chakrabarti, said the following: “Kubernetes fit very nicely as a complement and now as a replacement to Helios”4. Additionally, Kubernetes is used by Zalando, ING, Huawei, Bose, Pinterest, and Squarespace5. This shows that Kubernetes is widely used by any kind of company, as long as they have an app they want to deploy on a server. Hence, the context of Kubernetes is extremely broad.
Stakeholder analysis
The principal stakeholder of Kubernetes is The Cloud Native Computing Foundation (CNCF)6. They are a foundation that hosts large-scale systems, such as Kubernetes, organises conferences for open-source projects, and is part of the non-profit Linux Foundation. The CNCF Governing Board is in charge of the business and marketing areas of the CNCF systems and the Technical Oversight Committee (TOC) establishes their common software architecture.
The community of Kubernetes is sorted into special interest groups (SIGs), working groups, committees, and user groups7. A SIG focuses on a specific technical aspect of a project and is composed of members from different companies. Working groups discuss subjects related to the project that are of lower priority than the work of the SIGs. An important committee is the Steering Committee, which handles sensitive subjects such as security or code of conduct. User groups propose and discuss more vague aspects of a project that cannot be implemented directly and clearly. The communication8 of the community takes place through Slack, GitHub, mailing lists, and forums. Kubernetes also maintains a Twitter-account, a YouTube-channel, and a blog. Inspection of Kubernetes’ GitHub has revealed that the three most active developers are Liggit9, Smarterclayton10, and Wotjek-t11.
According to Rozanski and Woods12, stakeholders can be divided into 10 categories, which are shown in the following table:
Category of Stakeholder | Kubernetes Stakeholder |
---|---|
Acquirers | CNCF Governing Board |
Assessors | Security SIG |
Communicators | Contributor Experience, Docs SIGs, Training Partners, CNCF Ambassadors |
Developers | Apps, Auto-scaling, CLI SIGs |
Maintainers | Architecture, Auto-scaling SIGs |
Suppliers | CNCF |
Support staff | Certified Distributions, Hosted Platforms, and Installers |
System administrators | CNCF |
Testers | Testing SIG |
Users | Companies using the system (e.g., Adidas, IBM, ING, and Nokia) |
Furthermore, Kubernetes' partners are divided into three categories of stakeholders13, which are members of CNCF. The first category consists of Certified Service Providers (e.g., 99Cloud and Accenture) who assist businesses in their transition to Kubernetes. The second category consists of Certified Distributions, Hosted Platforms, and Installers who ensure that the right versions of APIs are used for Kubernetes. The last category consists of Training Partners (e.g., Cisco) who offer training for cloud-native technologies.
The following diagram, based on arc42 Documentation14, classifies the stakeholders based on their importance and influence over Kubernetes.
The graph is divided into four categories. In the high interest and influence section, the SIGs in charge of important aspects of development and the CNCF board and committee overseeing Kubernetes are mentioned. The partners, who only assist the system, and the two types of groups with lower relevance can be found in the low interest and influence category. For high influence and low interest, stakeholders who promote the system and ensure a united community are present. The users and SIGs that offer useful feedback and are interested in the success of the system belong to the last category.
Key quality attributes
Following recent technological innovations, such as the large scale adoption of artificial intelligence and managing and analyzing big data, it can be deduced that managing workloads and distributing the components of an application is desirable when creating large-scale applications. The use of Kubernetes, rather than older models of computing, results in a certain set of benefits. Firstly, in resource efficiency, meaning we need less physical servers than would have been needed with older models of computing for the same workload. Secondly, the development velocity is higher, as only a single microservice needs to be updated on the deployment of additional features of bug fixes. Thirdly, the workload can be shared across multiple providers and vendors, which results in the independence of service providers15.
Kubernetes provides resource efficiency, high development velocity, and workload sharing across independent containers. These key characteristics result in both highly flexible development and highly flexible software endpoints for the user.
Roadmap
The ongoing trends in software innovations show that the current Kubernetes-application is just the start. New applications such as machine learning, edge computing, and the Internet of Things require container management to optimally exploit their potential16. With the scale at which the public adopts new software innovations, the distribution of software components seems essential to the success of large-scale applications that require high performance and quick deployment of additional software and bug fixes. Gartner, the world’s leading research and advisory company in IT-service management, predicts that by 2022, more than 75% of global organisations will be running containerised applications in production17.
While the ongoing development of Kubernetes is extensive and complex, a few major changes, from January 2018 up until 2021, are mentioned here:
- Kubernetes dropped Docker support, by deprecating Dockershim, in favour of runtimes that use the Container Runtime Interface (CRI)18.
- Kubernetes now provides a standard way to trigger volume snapshot operations19. This allows administrators to snapshot storage volumes without having to go around the Kubernetes API. These snapshots will work on any arbitrary cluster regardless of the underlying storage20.
- Container Storage Interface (CSI) and CSI migration have been added to Kubernetes to expose arbitrary storage systems to their containerized workloads21.
- Kubectl Debug is released to Beta19.
The changes to Kubernetes are frequent and diverse because the Special Interest Groups each have multiple subprojects22. Time will tell what features make it in major releases through the Kubernetes Enhancement Proposals (KEP)23.
Ethical considerations
Kubernetes has devoted a lot of time to ensure the secure use of its system for all of its stakeholders and in building a respectful community. The CNCF Security SIG is responsible for ensuring system security. In 2020, Kubernetes published a document informing of security on cloud-native architectures24. Moreover, two of the Kubernetes committees are responsible for the code of conduct and product security.
According to Anne Currie at the O’Reilly Velocity Conference in London 201825, developers of large-scale systems need to take the ethical responsibility of their system’s capabilities seriously, since they affect millions of users. Moreover, when using microservices, the general view of a project and its implications might be neglected. Kubernetes has a great number of use cases and hence needs to integrate consistency, security and flexibility to make the system fit the user’s purposes. As it turns out, it has considered these aspects throughout its development and offers standardised configuration management, security standards at the cluster level, and the possibility to change vendors26.
The open-source nature of the project makes Kubernetes transparent and accessible, but there are certain requirements for a contribution to the project. The Kubernetes community established a set of values to be followed27 and any contributor needs to respect the Contributor Guide28. Among the instructions, CNCF provides the Contributor License Agreement that needs to be signed by individuals or corporations.
Conclusion
In conclusion, Kubernetes is all about orchestrating your application, which entails monitoring the application and making it easy to scale up or down by just making or deleting Kubelets. Kubernetes is being adopted by large companies and seems to have great potential for the deployment and scaling of large applications. Given the presented information, we believe it is safe to say that whatever innovations the future holds, Kubernetes will almost certainly be a part of it.
References
-
https://kubernetes.io/docs/concepts/overview/what-is-kubernetes/ ↩︎
-
https://github.com/kubernetes/community/blob/master/governance.md. ↩︎
-
https://github.com/kubernetes/community/blob/master/communication/README.md#weekly-meeting. ↩︎
-
Rozanski, N. and Woods, E. (2005) Software systems architecture: working with stakeholders using viewpoints and perspectives. Upper Saddle River, N.J.: Addison-Wesley. Available at: https://www.worldcat.org/title/software-systems-architecture-working-with-stakeholders-using-viewpoints-and-perspectives/oclc/941442563 (Accessed: February 16, 2021). ↩︎
-
https://www.barrons.com/articles/u-k-is-headed-for-worst-recession-since-great-frost-of-1709-51588884310. ↩︎
-
https://kubernetes.io/blog/2019/05/17/kubernetes-cloud-native-and-the-future-of-software/. ↩︎
-
https://www.redhat.com/en/blog/kubernetes-future-what-does-future-look. ↩︎
-
https://kubernetes.io/blog/2020/12/02/dont-panic-kubernetes-and-docker/ ↩︎
-
https://kubernetes.io/blog/2020/12/08/kubernetes-1-20-release-announcement/ ↩︎
-
https://kubernetes.io/blog/2019/12/09/kubernetes-1-17-release-announcement/ ↩︎
-
https://kubernetes.io/blog/2019/01/15/container-storage-interface-ga/ ↩︎
-
https://github.com/kubernetes/community/blob/master/sigs.yaml ↩︎
-
https://kubernetes.io/blog/2020/08/21/moving-forward-from-beta/. ↩︎
-
https://www.cncf.io/blog/2020/11/18/announcing-the-cloud-native-security-white-paper/. ↩︎
-
https://www.oreilly.com/radar/kubernetes-good-or-evil-the-ethics-of-data-centers/. ↩︎
-
https://magicsandbox.com/blog/organisational-benefits-of-kubernetes/. ↩︎
-
https://github.com/kubernetes/community/tree/master/contributors/guide. ↩︎