What is Kubernetes?
Kubernetes, often called K8s, is a system for automating the deployment of applications in the cloud, as well as the distribution, configuration, coordination and administration of these applications (online, see: kubernetes.io). Kubernetes can be used to ensure uptime and scalability for services and end systems, features that are essential for both civilian and military systems. K8s are often used as a service platform in modern communication and information systems. Kubernetes was originally developed by Google and is now released as open source as part of the Cloud Native Computing Foundation (CNCF).
The main benefit of using Kubernetes is the flexibility and scalability the system provides, including automated software updates, service discovery and load balancing, service orchestration, security and configuration management, and self-healing. K8s therefore fits in very well with modern agile system development based on DevOps and microservices.
K8s is also scalable across a set of computers (or nodes), be they physical hardware or virtual machines (or a combination of these). When K8s are used across multiple nodes, it is referred to as a Kubernetes cluster. Typically, in cloud computing, Kubernetes is run in a data hall. However, the solution can also be used for edge computing, but there unstable communication and problems with node connection will cause challenges.
Specific question for this thesis
This thesis is one in an ongoing series that studies improvements of K8s that make it more suitable in the context of edge computing, for example for use in disaster relief and rescue operations. This thesis expands the investigation of a thesis that was concluded in 2025: Enhancing Kubernetes Scheduling in Highly Dynamic and Unpredictable Network Environments
Resource scheduling
Kubernetes is quite good at making dispatch decisions based on the availability of RAM and CPU cycles. This is sufficient for orchestration in clouds that are deployed in data centers.
To make Kubernetes relevant for the orchestration of services at the edge of the network (Edge Computing, Fog Computing etc.), the communication between nodes must be handled as well. "Out there", network availability is not even guaranteed, and when networks are available, they may have very low capacity (4G, even 3G), quickly changing latency (route changes), or throughput that changes very frequently and very much.
The earlier thesis made in-roads into the developed of a new scheduler for Kubernetes' orchestrator, one that considers RAM, CPU and network properties. However, this thesis could not demonstrate the viability of the new scheduler experimentally because the existing network emulators failed in conjunction with the stacked containers and virtual machines that were available for the project.
This follow-up thesis will therefore work on native hardware using Raspberry PIs (3 and 5) and a mix of real and emulated networks.
Work on the thesis starts with a review of the work that was already achieved in the previous thesis, and a review of the related work presented there. This will be followed by a real-world implementation, measurement and evaluation of the scheduling algorithms proposed in the previous thesis.
Based on the results of these tests, you will document and analyze where the proposed strategy succeeds and fails, respectively, and develop your own, advanced scheduling strategy to compete with it.
You will also implement and test your own scheduler, and make a side-by-side comparison.
Learning outcome
Experience
- in formulating, investigating and answering research questions
- handling of Kubernetes, the famous container orchestration system
- conducting, evaluating and interpreting research results
- in developing a scheduling algorithm based on the situation-dependent properties, documenting and proving its performance
Conditions
We expect that you:
- have been admitted to a master's program in MatNat@UiO - primarily PROSA
- take this as a long thesis
- will participate actively in the weekly SINLab meetings
- if you have not included the course IN5060 in your study plan in autumn 2025, consider taking a different course on classical (non-ML) data analysis
- include IN5700 or IN5020 in the study plan, unless you have already completed a course on distributed systems