Oppgaven er ikke lenger tilgjengelig

Edge computing with Kubernetes: No-overhead network capacity estimation

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

We offer several tasks related to studying improvements of K8s, which makes it more suitable in the context of edge computing, for example for use in disaster relief and rescue operations. This thesis is well-suited for collaboration with another student who selects a closely related thesis.

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.

In this thesis, you will explore how those network properties can be discovered that are required to instruct the extended Kubernetes scheduler that we imagine for Edge Computing.

It is very typical that we determine the current properties of our network by probing, which means that we do this by fetching data from a server and sending data to this server; usually meaningless data. You have probably used SpeedTest yourself. In an Edge Computing scenario, especially in a scenario where spontaneous deployment in an undeveloped region is essential, we cannot afford to waste this bandwidth.

You have to discover other opportunities that we have in discovering the static and dynamic properties of the network. Some ideas are:

  • Can you ask the network card?
  • Or the operating system?
  • Can you receive status information from base stations or operators?
  • If nothing helps, can you probe with very low data overhead and still gain valuable insights?
  • Can you collect information for a few pairs of Kubernetes nodes and draw conclusions for others?
  • Can you extract knowledge from data transfers that are part of the cluster's normal operation?

Learning outcome

Experience

  • in formulating, investigating and answering research questions
  • handling of Kubernetes, the famous container orchestration system
  • conducting, evaluating and interpreting research results

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
  • are interested in and have some knowledge of C/C++ programming
  • include the course IN5060 in the study plan, unless you have already completed a 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
Publisert 29. aug. 2023 10:06 - Sist endret 16. okt. 2023 14:59

Veileder(e)

Omfang (studiepoeng)

60