Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add docs userguide #162

Merged
merged 4 commits into from
Sep 23, 2022
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,27 +1,28 @@
---
title: Multi-cluster Service Discovery
title: 多集群服务发现
---

Users are able to **export** and **import** services between clusters with [Multi-cluster Service APIs](https://github.com/kubernetes-sigs/mcs-api).
用户能够通过[多集群服务API](https://github.com/kubernetes-sigs/mcs-api)在集群之间导出和导入服务。

## Prerequisites
## 准备开始

### Karmada has been installed
### 安装Karmada

We can install Karmada by referring to [quick-start](https://github.com/karmada-io/karmada#quick-start), or directly run `hack/local-up-karmada.sh` script which is also used to run our E2E cases.
我们可以通过参考[快速开始](https://github.com/karmada-io/karmada#quick-start)来安装Karmada,或者直接运行 `hack/local-up-karmada.sh` 脚本,我们的E2E测试执行正是使用了该脚本。

### Member Cluster Network

Ensure that at least two clusters have been added to Karmada, and the container networks between member clusters are connected.
### 成员集群网络

- If you use the `hack/local-up-karmada.sh` script to deploy Karmada, Karmada will have three member clusters, and the container networks of the `member1` and `member2` will be connected.
- You can use `Submariner` or other related open source projects to connected networks between member clusters.
确保至少有两个集群被添加到 Karmada,并且成员集群之间的容器网络可相互连接。

### The ServiceExport and ServiceImport CRDs have been installed
- 如果你使用 `hack/local-up-karmada.sh` 脚本来部署 Karmada,Karmada 将有三个成员集群,`member1``member2` 的容器网络将被连接。
- 你可以使用 `Submariner` 或其他相关的开源项目来连接成员集群之间的网络。

We need to install ServiceExport and ServiceImport in the member clusters.
### 安装 ServiceExport ServiceImport CRD

After ServiceExport and ServiceImport have been installed on the **karmada control-plane**, we can create `ClusterPropagationPolicy` to propagate those two CRDs to the member clusters.
我们需要在成员集群中安装ServiceExport和ServiceImport。

**karmada控制平面**上安装完 ServiceExport 和 ServiceImport 之后,我们可以创建 `ClusterPropagationPolicy` 来分发这两个 CRD 到成员集群。

```yaml
# propagate ServiceExport CRD
Expand Down Expand Up @@ -56,11 +57,11 @@ spec:
- member1
- member2
```
## Example
## 示例

### Step 1: Deploy service on the `member1` cluster
### 第1步:在`member1`集群上部署服务

We need to deploy service on the `member1` cluster for discovery.
我们需要在 `member1` 集群上部署服务以便发现。

```yaml
apiVersion: apps/v1
Expand Down Expand Up @@ -121,9 +122,9 @@ spec:
- member1
```

### Step 2: Export service to the `member2` cluster
### 第2步:导出服务到 `member2` 集群

- Create a `ServiceExport` object on **karmada control-plane**, and then create a `PropagationPolicy` to propagate the `ServiceExport` object to the `member1` cluster.
- **karmada控制平面**上创建一个 `ServiceExport` 对象,然后创建一个 `PropagationPolicy` ,将 ` ServiceExport` 对象分发到 ` member1` 集群。

```yaml
apiVersion: multicluster.x-k8s.io/v1alpha1
Expand All @@ -146,7 +147,7 @@ spec:
- member1
```

- Create a `ServiceImport` object on **karmada control-plane**, and then create a `PropagationPlicy` to propagate the `ServiceImport` object to the `member2` cluster.
- **karmada控制平面**上创建一个 `ServiceImport` 对象,然后创建一个 `PropagationPlicy ` 来分发 `ServiceImport ` 对象到 `member2 `集群。

```yaml
apiVersion: multicluster.x-k8s.io/v1alpha1
Expand Down Expand Up @@ -174,11 +175,11 @@ spec:
- member2
```

### Step 3: Consume service from `member2` cluster
### 第3步:从 `member2` 集群获取服务

After the above steps, we can find the **derived service** which has the prefix `derived-` on the `member2` cluster. Then, we can access the **derived service** to access the service on the `member1` cluster.
经过上述步骤,我们可以在 `member2` 集群上找到前缀为 `derived-` **派生服务**。然后,我们可以访问**派生服务**来访问`member1`集群上的服务。

Start a Pod `request` on the `member2` cluster to access the ClusterIP of **derived service**:
`member2` 集群上启动一个Pod `request`来访问**派生服务**的ClusterIP。

```
kubectl run -i --rm --restart=Never --image=jeremyot/request:0a40de8 request -- --duration={duration-time} --address={ClusterIP of derived service}
Expand Down