Skip to content
forked from liqotech/liqo

Building your endless Kubernetes ocean

License

Notifications You must be signed in to change notification settings

Marcus1911/liqo

 
 

Repository files navigation



Liqo Logo

A Kubernetes platform about dynamic and decentralized multi-cluster


Explore the docs »

View Demo · Report Bug · Request Feature

About the project

Liqo is a platform to enable dynamic and decentralized resource sharing across Kubernetes clusters, either on-prem or managed. Liqo allows to run pods on a remote cluster seamlessly and without any modification of Kubernetes and the applications. With Liqo it is possible to extend the control plane of a Kubernetes cluster across the cluster's boundaries, making multi-cluster native and transparent: collapse an entire remote cluster to a virtual local node, by allowing workloads offloading and resource management compliant with the standard Kubernetes approach.



Table of Contents
  1. Main Features
  2. Quickstart
  3. Installation
  4. Roadmap
  5. Contributing
  6. Community
  7. License

Main features

  • Decentralized governance: peer-to-peer paradigm, without any centralized management entity.
  • Clusters discovery: leverage on three different ways to discover (and peer to) other clusters:
    • Manual configuration: through a custom API representing other clusters
    • DNS: automatic discovery through DNS records
    • LAN: automatic discovery of neighboring clusters available in the same LAN.
  • Transparent offloading: pods scheduled on the virtual node are offloaded to the remote cluster; they can be controlled by merely accessing the pod objects in the local one; the resources needed by the pods (services, endpoints, configmaps, etc.) are translated and replicated remotely. It allows inter-cluster pod-to-pod and pod-to-service communication.
  • Pod resilience: the offloaded pods' lifecycle is controlled by a remote replicaset.
  • Inter-cluster networking: the clusters inter-connection is implemented by a Wireguard tunnel, which ensure encryption and reliability.
  • CNI independence: compliance with many CNIs (Calico, Cilium, Flannel, etc.) even in heterogeneous scenarios (the two clusters can have different CNIs).

Quickstart

This quickstart lets you try Liqo in a playground environment built by two clusters in KinD.

Provision two KinD clusters.

source <(curl -L https://get.liqo.io/clusters.sh)

Install Liqo on both clusters:

export KUBECONFIG=$KUBECONFIG_1
curl -L https://get.liqo.io | bash -s
export KUBECONFIG=$KUBECONFIG_2
curl -L https://get.liqo.io | bash -s

Wait that all containers are up and running. When a new virtual-kubelet pops out, a new node modeling the remote cluster is present and ready to receive pods. Check it out with:

kubectl get nodes

Use the resources

Create a new namespace and label it to tell Liqo that the pods created in that namespace are suitable for offloading in the remote cluster.

kubectl create namespace liqo-demo
kubectl label namespace liqo-demo liqo.io/enabled=true

Deploy the Google microservice Shop application.

kubectl apply -f https://get.liqo.io/app.yaml -n liqo-demo

You can observe that:

  • Your application is correctly working by exposing the application frontend port and later connecting with a browser to localhost:8000. To expose the pod port:
  kubectl port-forward -n liqo-demo service/frontend 8080:80
  • Your application is transparently deployed across two different clusters:
  kubectl get pods -n liqo-demo -o wide  

Installation

Liqo can be installed by using Helm. The configuration depends on the cluster type (K8s, K3s, managed) and the provider. Possible scenarios can be found here.

Once you identified your scenario, follow the instructions for the proper installation environment.

Roadmap

Planned features for the next release (v0.3, expected mid-July, 2021) are the following:

  • Support for deployments spanning across more than two clusters
  • Support for a more balanced scheduling mechanism to distribute jobs across clusters
  • Support for Amazon Elastic Kubernetes Service
  • Support for more-granular permission control over remote cluster resources

Contributing

All contributors are warmly welcome. If you want to become a new contributor, we are so happy!. Just, before doing it, read the repo's guidelines presented on our documentation website.

Community

To get involved with the Liqo community, join the slack channel.

notification Community Meeting
Liqo holds weekly community meeting on Monday, 5.30pm UTC (6.30 CET, 9.30am PST). To join the community meeting, follow this link. Convert to your timezone here.

License

Distributed under the Apache-2.0 License. See License for more information.

FOSSA Status

Liqo is a project kicked off at Polytechnic of Turin (Italy) and actively maintained with ❤️ by this open-source community.

About

Building your endless Kubernetes ocean

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 95.7%
  • Shell 3.1%
  • Other 1.2%