# Cellular and Virtualization Technologies for UAVs:
## 3 Testbed Components Description
### Virtualization in UAVs: The Power of Containers in Aerial Networks
In order to perform any kind of deployment inside a K8s infrastructure, it is mandatory that two components are present, and properly linked, between the hosts and/or the machines building the infrastructure, establishing a cluster. It is not mandatory for these machines to be in the same physical location and/or to have direct connectivity between them through a single LAN or subnet. However, it is necessary to have full networking (i.e., layer 3) connectivity between all the components of the cluster, as it is specified by K8s documentation. The essential components of every K8s cluster are the following ones:  
* Controller-plane: this component is in charge of the management and orchestration of the K8s cluster and the applications running inside. Its main tasks include the instantiation of pods (minimal unit where containers have to be deployed) & services, and react to cluster events such as scaling up/down a deployment, managing cluster errors, pod re-deployments, etc. This control-plane unit, commonly referred to as the \"master\" node, is usually deployed in one single host, although it can be deployed across multiple machines if necessary. * Worker node: these nodes are in charge of providing the resources to the cluster. Inside these nodes, pods will be deployed to run the applications in the Kubernetes cluster, maintaining their functionality and reporting their status to the master node. In every cluster, there must be at least a single worker node, and they are not limited to a single host, i.e., inside a host there could be multiple workers (for example, multiple VMs). Kubernetes is available for a wide array of Operating Systems such as Ubuntu 16.04+, CentOS 7+, or Fedora 25+, as well as different architectures like amd64 and arm64, this last one being typically used in mobile terminals and small devices such as RPis. Therefore,K8s is regarded as a flexible platform suitable for its use in multiple use cases that require an heterogeneous environment with multiple types of devices, including small equipment that can be on-boarded in most UAVs due to its small size and lightweight nature. This fact combined with the lightweight nature of containers compared to traditional virtualization solutions (i.e., VMs) assists in the development and deployment of network services on top of UAVs, including one of their most popular applications in their current form: video transmission. All the aforementioned functionalities and advantages have been decisive for choosing this tool as the container manager for the implementation of the current testbed depicted in Figure 2. As a consequence, the RPis carried by the UAVs and the video-consumer will become the computing nodes of the infrastructure (using K8s's terminology, worker nodes). A K8s controller (i.e., a master node) manages the instantiation, management, and termination of all the containers of an application deployed in the infrastructure. Communications between these components are entirely performed through the VPN service, ensuring both secure transmission (e.g., a man-on-the-middle attack) and preventing unauthorized users from joining the infrastructure (e.g., a malicious UAV posing as a legitimate computing node of the platform). In the particular case of the testbed, the UAVs will host a video transmission application (Video TX Container in Figure 2). Video transmission has been one of the main use cases of UAVs since their inception. Thanks to their advanced mobility, these aircraft are able to on-board different types of cameras to take pictures and/or video footage. Moreover, some models are shipped with one, or several, integrated cameras by default as a consequence of its high demand in both industrial and commercial environments for a wide variety of applications such as video filming, wild life monitoring, surveillance, or search and rescue operations.