Skip to content
forked from liqotech/liqo

Enable dynamic and seamless Kubernetes multi-cluster topologies

License

Notifications You must be signed in to change notification settings

dknott-arcadis/liqo

Repository files navigation

Liqo Logo

Liqo

Go Coverage Status Go Report Card Docker Pulls FOSSA Status Twitter

Great for:

  • Dynamic resource sharing across clusters, with decentralized governance
  • Seamless multi-cluster management
  • Edge clusters orchestration

Liqo is in an alpha version and not yet production-ready.

Community Meeting: Monday 18.30 CET, 9.30 PST here

What is Liqo?

Liqo is a framework to enable dynamic sharing across Kubernetes Clusters. You can run your pods on a remote cluster seamlessly, without any modification (Kubernetes or your application).

Liqo is an open source project started at Politecnico of Turin that allows Kubernetes to seamlessly and securely share resources and services, so you can run your tasks on any other cluster available nearby.

Thanks to the support for K3s, also single machines can participate, creating dynamic, opportunistic data centers that include commodity desktop computers and laptops as well.

Liqo leverages the same highly successful “peering” model of the Internet, without any central point of control. New peering relationships can be established dynamically, whenever needed, even automatically. Cluster auto-discovery can further simplify this process.

Quickstart

Create two KinD clusters via our script or bring your own clusters. N.B. Using our cluster, Docker has to be installed on your test machine and user should have permission to issue commands.

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 (around 30 seconds). 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 no -o wide

Let's use those resources. Deploy the Google microservice Shop application via:

kubectl create ns demo-liqo
kubectl label ns demo-liqo liqo.io/enabled=true
kubectl apply -f https://get.liqo.io/app.yaml -n demo-liqo

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 po -n demo-liqo -o wide  

To get more information about how to install Liqo in your own clusters and configure it, you can check out the Liqo Documentation.

Architecture

Liqo relies on several components:

  • Liqo Virtual Kubelet: Based on Virtual Kubelet project, the VK is responsible to "masquerade" a foreign Kubernetes cluster.
  • Advertisement Operator/Broadcaster: Those components embed the logic to advertise/accept resources from partner clusters and spawn new virtual kubelet instances
  • Liqonet Operators: Those operators are responsible to establish Pod-to-Pod and Pod-to-Service connection across partner clusters.

...and some others. Check out the architecture documentation

License

FOSSA Status

About

Enable dynamic and seamless Kubernetes multi-cluster topologies

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Go 97.4%
  • Shell 2.0%
  • Other 0.6%