Convert Figma logo to code with AI

liqotech logoliqo

Enable dynamic and seamless Kubernetes multi-cluster topologies

1,088
103
1,088
74

Top Related Projects

2,496

Kubernetes Cluster Federation

23,209

Complete container management platform

4,375

Open, Multi-Cloud, Multi-Cluster Kubernetes Orchestration

24,977

OpenFaaS - Serverless Functions Made Simple

Kubernetes Native Edge Computing Framework (project under CNCF)

Quick Overview

Liqo is an open-source project that enables dynamic and seamless Kubernetes multi-cluster topologies. It allows users to share and offload computational resources across different Kubernetes clusters, creating a unified "extended" cluster. Liqo facilitates resource sharing, workload offloading, and multi-cluster application deployment.

Pros

  • Seamless integration with existing Kubernetes clusters without requiring modifications to applications or the Kubernetes API
  • Dynamic and automatic discovery of neighboring clusters, simplifying multi-cluster management
  • Supports various infrastructure providers, including on-premises, cloud, and edge environments
  • Enhances resource utilization and scalability by allowing workload offloading to other clusters

Cons

  • Adds complexity to cluster management and networking configurations
  • May introduce additional security considerations when sharing resources across clusters
  • Requires careful planning and configuration to ensure optimal performance and resource allocation
  • Limited documentation and community support compared to more established Kubernetes tools

Getting Started

To get started with Liqo, follow these steps:

  1. Install Liqo on your Kubernetes cluster using Helm:
helm repo add liqo https://helm.liqo.io/
helm repo update
helm install liqo liqo/liqo --create-namespace --namespace liqo
  1. Configure peering between clusters:
liqoctl add cluster <cluster-name> --auth-url <auth-service-url>
  1. Deploy a sample application across multiple clusters:
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: liqo.io/provider
                operator: In
                values:
                - liqo
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80

Apply this YAML file to deploy the application across Liqo-enabled clusters:

kubectl apply -f nginx-deployment.yaml

For more detailed instructions and advanced configurations, refer to the official Liqo documentation.

Competitor Comparisons

2,496

Kubernetes Cluster Federation

Pros of KubeFed

  • More mature project with longer development history
  • Wider adoption in production environments
  • Better documentation and community support

Cons of KubeFed

  • Limited to Kubernetes-only environments
  • Less flexible for heterogeneous cloud environments
  • Development has slowed down significantly

Code Comparison

KubeFed configuration example:

apiVersion: types.kubefed.io/v1beta1
kind: FederatedDeployment
metadata:
  name: test-deployment
  namespace: test-namespace
spec:
  template:
    metadata:
      labels:
        app: nginx
    spec:
      replicas: 3

Liqo configuration example:

apiVersion: discovery.liqo.io/v1alpha1
kind: ResourceRequest
metadata:
  name: resource-request-sample
spec:
  clusterIdentity:
    clusterID: remote-cluster-id
    clusterName: remote-cluster
  resourceQuota:
    hard:
      cpu: "4"
      memory: 8Gi

While KubeFed focuses on federation within Kubernetes clusters, Liqo provides a more flexible approach for resource sharing across different cloud environments. KubeFed's configuration is centered around Kubernetes-native resources, whereas Liqo's configuration allows for more granular control over resource requests and sharing between clusters.

23,209

Complete container management platform

Pros of Rancher

  • More mature and widely adopted project with a larger community
  • Comprehensive UI for managing multiple clusters and workloads
  • Supports multiple Kubernetes distributions and cloud providers

Cons of Rancher

  • Heavier resource footprint compared to Liqo
  • More complex setup and configuration process
  • May introduce additional overhead for single-cluster environments

Code Comparison

Rancher (Helm installation):

helm repo add rancher-stable https://releases.rancher.com/server-charts/stable
helm install rancher rancher-stable/rancher \
  --namespace cattle-system \
  --set hostname=rancher.my.org

Liqo (Helm installation):

helm repo add liqo https://helm.liqo.io/
helm install liqo liqo/liqo \
  --namespace liqo \
  --create-namespace

Both projects use Helm for installation, but Rancher requires more configuration parameters for initial setup. Liqo's installation is simpler and more straightforward, reflecting its focus on lightweight, peer-to-peer cluster federation.

4,375

Open, Multi-Cloud, Multi-Cluster Kubernetes Orchestration

Pros of Karmada

  • More mature project with a larger community and wider adoption
  • Supports multiple scheduling policies and resource propagation strategies
  • Offers built-in multi-cluster service discovery and load balancing

Cons of Karmada

  • More complex architecture and setup process
  • Requires additional components like etcd and karmada-apiserver
  • Less focus on network-level integration between clusters

Code Comparison

Karmada resource propagation:

apiVersion: policy.karmada.io/v1alpha1
kind: PropagationPolicy
metadata:
  name: example-policy
spec:
  resourceSelectors:
    - apiVersion: apps/v1
      kind: Deployment
  placement:
    clusterAffinity:
      clusterNames:
        - cluster1
        - cluster2

Liqo peering:

apiVersion: discovery.liqo.io/v1alpha1
kind: PeeringRequest
metadata:
  name: example-peering
spec:
  clusterIdentity:
    clusterID: remote-cluster-id
    clusterName: remote-cluster
  outgoingPeeringEnabled: true
  incomingPeeringEnabled: true

Both Liqo and Karmada aim to simplify multi-cluster Kubernetes management, but they take different approaches. Liqo focuses on seamless network integration and resource sharing between clusters, while Karmada provides a more comprehensive multi-cluster orchestration platform with advanced scheduling and resource propagation features.

24,977

OpenFaaS - Serverless Functions Made Simple

Pros of faas

  • More mature project with a larger community and ecosystem
  • Supports multiple languages and frameworks out-of-the-box
  • Provides a user-friendly UI for function management and monitoring

Cons of faas

  • Limited to serverless function deployment, not full application orchestration
  • May require additional setup for complex networking scenarios
  • Less flexible for multi-cluster deployments compared to Liqo

Code Comparison

faas (function deployment):

functions:
  hello-world:
    lang: python3
    handler: ./hello-world
    image: hello-world:latest

Liqo (virtual cluster creation):

apiVersion: virtualkubelet.liqo.io/v1alpha1
kind: VirtualCluster
metadata:
  name: my-virtual-cluster
spec:
  clusterIdentity:
    clusterID: cluster-123
    clusterName: remote-cluster

While faas focuses on deploying and managing serverless functions, Liqo enables resource sharing and multi-cluster orchestration. faas provides a more straightforward approach for function-based workloads, while Liqo offers greater flexibility for complex, distributed Kubernetes environments.

Kubernetes Native Edge Computing Framework (project under CNCF)

Pros of KubeEdge

  • More mature project with a larger community and wider adoption
  • Focuses on edge computing scenarios, providing better support for IoT and edge devices
  • Offers lightweight edge nodes that can operate with limited resources and intermittent connectivity

Cons of KubeEdge

  • More complex architecture and setup compared to Liqo
  • Less flexible for general multi-cluster scenarios that don't involve edge computing
  • May have higher resource requirements for full functionality

Code Comparison

KubeEdge configuration example:

apiVersion: cloudcore.kubeEdge.io/v1alpha1
kind: CloudCore
metadata:
  name: cloudcore
  namespace: kubeedge
spec:
  modules:
    cloudHub:
      advertiseAddress:
        - 10.10.102.78

Liqo configuration example:

apiVersion: discovery.liqo.io/v1alpha1
kind: SearchDomain
metadata:
  name: liqo-search-domain
spec:
  autojoin: true
  outgoingPeeringEnabled: true
  incomingPeeringEnabled: true

Both projects aim to extend Kubernetes capabilities, but KubeEdge is more focused on edge computing scenarios, while Liqo provides a more general solution for multi-cluster environments. KubeEdge offers better support for resource-constrained devices and edge computing use cases, whereas Liqo excels in flexibility and ease of use for connecting multiple Kubernetes clusters.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

Integration Pipeline Status



Liqo Logo

Enable dynamic and seamless Kubernetes multi-cluster topologies


Explore the docs »

View Videos · Report Bug · Request Feature

What is Liqo?

Liqo is an open-source project that enables dynamic and seamless Kubernetes multi-cluster topologies, supporting heterogeneous on-premise, cloud and edge infrastructures.

What does it provide?

  • Peering: automatic peer-to-peer establishment of resource and service consumption relationships between independent and heterogeneous clusters. No need to worry about complex VPN configurations and certification authorities: everything is transparently self-negotiated for you.
  • Offloading: seamless workloads offloading to remote clusters, without requiring any modification to Kubernetes or the applications themselves. Multi-cluster is made native and transparent: collapse an entire remote cluster to a virtual node compliant with the standard Kubernetes approaches and tools.
  • Network fabric: transparent multi-cluster pod-to-pod and pod-to-service connectivity, regardless of the underlying configurations and CNI plugins. Natively access the services exported by remote clusters, and spread interconnected application components across multiple infrastructures, with all cross-cluster traffic flowing through secured network tunnels.
  • Storage fabric: support for remote execution of stateful workloads, according to the data gravity approach. Seamlessly extend standard (e.g., database) high availability deployment techniques to the multi-cluster scenarios, for increased guarantees. All without the complexity of managing multiple independent cluster and application replicas.

Quick start

Would you like to quickly join the fray and experiment with Liqo? Set up your playground and check out the getting started examples, which will guide you through a scenario-driven tour of the most notable features of Liqo:

  • Quick Start: grasp a quick overview of what Liqo can do.
  • Offloading with Policies: discover how to tune namespace offloading, and how to use policies to select which clusters may host each workload.
  • Offloading a Service: learn how to create a multi-cluster service, and how to consume it from each connected cluster.
  • Stateful Applications: find out how to deploy a database across a multi-cluster environment, leveraging the Liqo storage fabric.
  • Global Ingress: discover how route external traffic to multi-cluster applications through a global ingress and automatic DNS configurations.
  • Replicated Deployments: learn how to deploy an application by replicating it on multiple remote clusters.
  • Provision with Terraform: explore Liqo Terraform provider capabilities.

Going Further

Got curious? Check out the documentation website for an in-depth overview of the Liqo features, to discover how to install Liqo on your clusters, as well as to find out about the different usage and configuration options.

Roadmap

Want to know about the features to come? Check out the project roadmap for more information.

Contributing

All contributors are warmly welcome. If you want to become a new contributor, we are so happy! Just, before doing it, read the tips and guidelines presented in the dedicated documentation page.

Community

To get involved with the Liqo community, join the Slack workspace.

:bell: Community Meeting
Liqo holds weekly community meetings on Monday, 5.30pm UTC (6.30pm CET, 9.30am PST). To join the community meeting, follow this link. Convert to your timezone here. You can see and add the Liqo Calendar following this link.

License

This project includes code from the Virtual Kubelet project, licensed under the Apache 2.0 license.

Liqo is distributed under the Apache-2.0 License. See License for more information.

Liqo is a project kicked off at Polytechnic of Turin (Italy) and actively maintained with :heart: by all the Liqoers.