## 2 State of the Art
### Container-Based Orchestration  
Fog computing has effectively expanded traditional cloud computational resources and services to the network edge, improving proximity to user devices and reducing latency. Unlike cloud computing, fog and edge resources may rely on resource-restricted devices that cannot cope with the deployment of conventional virtual machines (VMs) to run different environments simultaneously.  
Containers instead are known for their lightweight and small footprint virtualization and provide a consistent, secure, and portable environment for running software across heterogeneous computing environments. Additionally, the growing popularity of microservices, serving as a substitute for traditional monolithic software architectures, has notably accelerated the adoption of container-based virtualization. Due to microservices, software applications can now be decomposed into smaller components that can be managed independently. Despite the fact that microservices can be deployed in both VMs and containers, the latter offer higher scalability, flexibility, and agility [24].  
In large, dynamic microservice platforms, containers are organized into clusters. Specifically, a cluster consists of a set of node machines intended to run containerized applications. Such a cluster contains a control plane and one or more computing nodes, whether physical or virtual, located on premises or in the cloud; whereas the control plane is responsible for maintaining the desired state of the cluster, nodes actually run the applications and workloads.  
As organizations increasingly embrace modern technologies to facilitate container usage, they encounter complex challenges in meeting the service level agreement (SLA) and quality of service (QoS) requirements. Achieving these goals then calls for orchestration solutions able to provision, deploy, scale, manage, and secure containerized applications without worrying about the underlying infrastructure. Moreover, it is expected that all these tasks are accomplished automatically, without human intervention, aiming for the paradigm of comprehensive self-healing systems.  
In the context of the IoT-edge-cloud continuum, this task becomes even more complex as it strives to maintain application portability, scalability, and resilience within geographically distributed and heterogeneous clusters, sometimes even facing unstable connectivity and node availability [25]. Multi-cluster orchestration intends to extend the orchestration paradigm to manage applications and services across multiple clusters, spanning on-premises, hybrid, and multi-cloud environments while mitigating complexity, enhancing scalability, ensuring resilience, and bolstering security and compliance.  
Some multi-cluster orchestration tools, such as Rancher Fleet [26], Open Cluster Management [27], and OpenShift [28], are currently being used in the continuum to achieve comprehensive communication and management of resources [29]. However, they often fail when dealing with common issues related to communication, networking, high availability, and service discovery, since they have not been completely adapted to the particularities of fog/edge computing [30].  
Alternatively, some of the latest approaches to the multi-cluster orchestration paradigm have emerged as hierarchical edge orchestration frameworks, such as Oakestra [31], where resource constraints, dynamic infrastructures, and proximity requirements pose unique challenges. Oakestra adapts to edge environments by offering federated cluster management, delegated task scheduling, and semantic overlay networking. ML-based orchestration approaches have also been recently explored, where different learning techniques lead to dynamic workload allocation, predictive scaling, and anomaly detection [32].