GithubHelp home page GithubHelp logo

xyz2277 / clusterlink Goto Github PK

View Code? Open in Web Editor NEW

This project forked from wuyingjun-lucky/clusterlink

0.0 1.0 0.0 13.49 MB

License: Apache License 2.0

Shell 9.03% Go 89.88% Makefile 0.83% Dockerfile 0.27%

clusterlink's Introduction

ClusterLink

ClusterLink 致力于提供一套完整的多集群网络解决方案

关于

ClusterLink 可以快速的打通多个 Kubernetes 集群之间的网络,并且支持多种 CNI 插件。ClusterLink 可以轻松纳管已经存在的集群而不会影响已有的服务。

主要功能:

  • 跨集群L3层网络打通:Pod 可以跨集群访问 PodIP、ServiceIP,就像它们在同一个集群那样
  • 多集群服务发现:结合 Kosmos-io/multi-cluster-coredns ,可以实现跨集群访问 Service 域名。multi-clusters-coredns 基于 coredns,顾名思义,它能够解析已纳管集群的 Service 域名
  • 支持全局IP分配:ClusterLink支持配置 PodCIDR/ServiceCIDR 到 GlobalCIDR 的映射,GlobalIP全局唯一,对于存在网段冲突的集群,可以通过 GlobalIP 互访
  • Linkctl:一个配套工具,帮助你快速检查多集群网络
  • ClusterLink-Operator:帮助你快速部署 ClusterLink
  • IPv6/IPv4 双栈支持

架构

ClusterLink 由以下组件组成,各个组件协同工作以打通多集群之间的网络:

  • Network Manager:运行在主集群中,负责计算各个节点所需的网络配置,并维护到CR nodeconfigs.clusterlink.io
  • Agent:运行在子集群中,通常是一个Daemonset,从 nodeconfigs.clusterlink.io 获取当前节点所需的网络配置,配置到节点上
  • Controller Manager:运行在子集群中,负责维护集群clusters.clusterlink.io和节点clusternodes.clusterlink.io的状态,比如:集群节点新增/删除、集群IPPool变更等
  • Elector:负责gateway模式下集群gw节点选择

快速开始

本地启动

通过以下命令可以快速在本地运行一个实验环境,该命令将基于 kind (因此需要先安装docker)创建两个k8s集群,并部署ClusterLink。

./hack/local-up-clusterlink.sh

检查服务是否正常运行

kubectl --context=kind-cluster-host-local get pods -nclusterlink-system
kubectl --context=kind-cluster-member1-local get pods -nclusterlink-system

确认跨集群网络是否打通

kubectl --context=kind-cluster-host-local exec -it <any-host-pod> -- ping <any-member1-pod-ip>

贡献者

Made with contrib.rocks.

License

Copyright 2023 the ClusterLink Authors. All rights reserved.

Licensed under the Apache License, Version 2.0.

clusterlink's People

Contributors

wuyingjun-lucky avatar hanweisen avatar wangyizhi1 avatar one7live avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.