diff --git a/README.md b/README.md index ed673244a..f80ba3201 100644 --- a/README.md +++ b/README.md @@ -1,35 +1,30 @@ # KOSMOS -## 网络篇 -**KOSMOS 网络模块 ClusterLink 致力于提供一套完整的多集群网络解决方案** +Kosmos是移动云开源的分布式云原生联邦集群技术的集合,其名称kosmos:k代表**k**ubernetes,c**osmos**表示宇宙(希腊语),寓意kubernetes的无限扩展。目前,kosmos主要包括三大模块,分别是:**多集群网络**、**多集群管理编排**、**多集群调度**。此外,kosmos还配备一款kosmosctl工具, 可以快速进行kosmos组件部署、添加集群、测试网络连通性等工作。 -### 关于 +## 多集群网络 -ClusterLink 可以快速的打通多个 Kubernetes 集群之间的网络,并且支持多种 CNI 插件。ClusterLink 可以轻松纳管已经存在的集群而不会影响已有的服务。 +Kosmos网络的目标是打通多个k8s集群之间的网络,该模块可以独立部署使用。Kosmos网络使`Pod`可以跨集群访问`Pod`、`Service`,就像它们在同一个集 群那样。目前,该模块主要具备以下功能: +1. **跨集群PodIP、ServiceIP互访**:基于Linux隧道技术,实现了多个k8s集群的L3网络互通,即用户可以在联邦集群范围内进行`Pod-to-Pod`、`Pod-to-Service`访问。 +2. **多模式支持**:对于添加的集群,可以选择`P2P`或者`Gateway`模式,其中`P2P`模式适用于underlay网络互通情况,具有更短的网络路径和更优的性能。`Gateway`模式更具兼容性,适合混合云、多云场景。 +3. **支持全局IP分配**:Kosmos网络允许在联邦集群中存在两个或多个集群使用相同的`Pod/Service`网段,便于用户对存量集群的管理。Kosmos支持配置`PodCIDR/ServiceCIDR` 与 `GlobalCIDR` 的映射关系,`GlobalIP`全局唯一,对于存在网段冲突的集群服务,可以通过`GlobalIP`互访。 +4. **IPv6/IPv4 双栈支持** -**主要功能**: -- **跨集群L3层网络打通**:Pod 可以跨集群访问 PodIP、ServiceIP,就像它们在同一个集群那样 -- **多集群服务发现**:结合 Kosmos-io/multi-cluster-coredns ,可以实现跨集群访问 Service 域名。multi-clusters-coredns 基于 [coredns](https://github.com/coredns/coredns),顾名思义,它能够解析已纳管集群的 Service 域名 -- **支持全局IP分配**:ClusterLink支持配置 PodCIDR/ServiceCIDR 到 GlobalCIDR 的映射,GlobalIP全局唯一,对于存在网段冲突的集群,可以通过 GlobalIP 互访 -- Linkctl:一个配套工具,帮助你快速检查多集群网络 -- **ClusterLink-Operator**:帮助你快速部署 ClusterLink -- **IPv6/IPv4 双栈支持** +### 网络架构 -### 架构 +Kosmos多集群网络模块目前包含以下几个关键组件: +
- - -ClusterLink 由以下组件组成,各个组件协同工作以打通多集群之间的网络: - -- **Network Manager**:运行在主集群中,负责计算各个节点所需的网络配置,并维护到CR `nodeconfigs.clusterlink.io` 中 -- **Agent**:运行在子集群中,通常是一个Daemonset,从 `nodeconfigs.clusterlink.io` 获取当前节点所需的网络配置,配置到节点上 -- **Controller Manager**:运行在子集群中,负责维护集群`clusters.clusterlink.io`和节点`clusternodes.clusterlink.io`的状态,比如:集群节点新增/删除、集群IPPool变更等 -- **Elector**:负责gateway模式下集群gw节点选择 +- `Controller-Manager`:用于收集所在集群的网络信息,监听网络设置的变化; +- `Network-manager`:用于计算各个节点需要的网络配置; +- `Agent`:是一个`Daemonset`,用于配置主机网络,例如隧道创建、路由、NAT等; +- `Multi-Cluster-Coredns`: 实现多集群服务发现; +- `Elector`:负责gateway节点选举; ### 快速开始 #### 本地启动 -通过以下命令可以快速在本地运行一个实验环境,该命令将基于 kind (因此需要先安装docker)创建两个k8s集群,并部署ClusterLink。 +通过以下命令可以快速在本地运行一个实验环境,该命令将基于`kind`(因此需要先安装docker)创建两个k8s集群,并部署ClusterLink。 ```bash ./hack/local-up-clusterlink.sh ``` @@ -43,11 +38,23 @@ kubectl --context=kind-cluster-member1-local get pods -nclusterlink-system kubectl --context=kind-cluster-host-local exec -it