diff --git a/content/zh/docs/multicluster-management/enable-multicluster/agent-connection.md b/content/zh/docs/multicluster-management/enable-multicluster/agent-connection.md index d721ca494..87508c337 100644 --- a/content/zh/docs/multicluster-management/enable-multicluster/agent-connection.md +++ b/content/zh/docs/multicluster-management/enable-multicluster/agent-connection.md @@ -1,34 +1,28 @@ --- title: "代理连接" keywords: 'Kubernetes, KubeSphere, 多集群, 代理连接' -description: 'Overview' - +description: '如何使用代理来管理多集群' +linkTitle: "代理连接" weight: 5220 --- -## 前提条件 +KubeSphere 的组件 [Tower](https://github.com/kubesphere/tower) 用于代理连接。Tower 是一种通过代理在集群间建立网络连接的工具。如果 Host 集群(简称 H 集群)无法直接访问 Member 集群(简称 M 集群),您可以暴露 H 集群的代理服务地址,这样可以让 M 集群通过代理连接到 H 集群。当 M 集群部署在私有环境(例如 IDC)并且 H 集群可以暴露代理服务时,适用此连接方法。当您的集群分布部署在不同的云厂商上时,同样适用代理连接的方法。 -已经安装了至少两个 KubeSphere 集群,如果尚未安装,请参阅[在 Linux 上安装](../../../installing-on-linux)或者[在 Kubernetes 上安装](../../../installing-on-kubernetes)。 +要通过代理连接使用多集群功能,您必须拥有至少两个集群,分别用作 H 集群和 M 集群。您可以在安装 KubeSphere 之前或者之后将一个集群指定为 H 集群或 M 集群。有关安装 KubeSphere 的更多信息,请参考[在 Linux 上安装](../../../installing-on-linux/)和[在 Kubernetes 上安装](../../../installing-on-kubernetes/)。 -{{< notice note >}} -多集群管理要求将 Kubesphere 安装在目标集群上,如果您已经有一个集群,则可以在上面部署 KubeSphere 最小安装,以便可以将其导入到多集群控制台。有关详细信息,请参见 [Kubernetes 上的最小 KubeSphere](../../../quick-start/minimal-kubesphere-on-k8s/)。 -{{}} +## 准备 Host 集群 -## 代理连接 - -KubeSphere 的 [Tower](https://github.com/kubesphere/tower) 组件用于代理连接,它是通过代理在集群之间进行网络连接的工具。具体来说,如果主集群(以下简称 **H** 集群)无法直接访问成员集群(以下简称 **M** 集群),则可以暴露 H 集群的代理服务地址,M 集群可以通过这个代理服务地址连接到 H 集群。此方法适用于当 M 集群处于私有环境(例如 IDC)并且 H 集群能够暴露代理服务时,或者当集群分布在不同的云服务提供商之上时。 - -### 准备主集群 +Host 集群为您提供中央控制平面,并且您只能指定一个 Host 集群。 {{< tabs >}} {{< tab "已经安装 KubeSphere" >}} -如果已经安装了独立的 KubeSphere,则可以通过编辑集群配置,将`clusterRole`的值设置为`host`。您需要**稍等几分钟**,以使更改生效。 +如果已经安装了独立的 KubeSphere 集群,您可以编辑集群配置,将 `clusterRole` 的值设置为 `host`。 -- 选项 A - 使用 web 控制台: +- 选项 A - 使用 Web 控制台: - 使用`admin`帐户登录控制台,然后转到**集群管理**页面上的 **CRDs**,输入关键字`ClusterConfiguration`,然后转到其详细信息页面,编辑`ks-installer`的 YAML,方法类似于[启用可插拔组件](../../../pluggable-components/)。 + 使用 `admin` 帐户登录控制台,然后进入**集群管理**页面上的**自定义资源 CRD**,输入关键字 `ClusterConfiguration`,然后转到其详情页面。编辑 `ks-installer` 的 YAML 文件,方法类似于[启用可插拔组件](../../../pluggable-components/)。 - 选项 B - 使用 Kubectl: @@ -36,49 +30,57 @@ KubeSphere 的 [Tower](https://github.com/kubesphere/tower) 组件用于代理 kubectl edit cc ks-installer -n kubesphere-system ``` -向下滚动并将`clusterRole`的值设置为`host`,然后点击**更新**(如果使用 web 控制台)以使其生效: +在 `ks-installer` 的 YAML 文件中,搜寻到 `multicluster`,将 `clusterRole` 的值设置为 `host`,然后点击**更新**(如果使用 Web 控制台)使其生效: ```yaml multicluster: clusterRole: host ``` +您需要**稍等片刻**待该更改生效。 + {{}} {{< tab "尚未安装 KubeSphere" >}} -安装主集群和安装一个普通的 KubeSphere 集群没有太大差别,唯一的区别是在配置文件`config-sample.yaml`中设置参数`clusterRole`如下: +在 Linux 上或者在现有 Kubernetes 集群上安装 KubeSphere 之前,您可以定义一个 Host 集群。如果您想[在 Linux 上安装 KubeSphere](../../../installing-on-linux/introduction/multioverview/#1-创建示例配置文件),需要使用 `config-sample.yaml` 文件。如果您想[在现有 Kubernetes 集群上安装 KubeSphere](../../../installing-on-kubernetes/introduction/overview/#部署-kubesphere),需要使用两个 YAML 文件,其中一个是 `cluster-configuration.yaml`。要设置一个 Host 集群,请在安装 KubeSphere 之前,将 `config-sample.yaml` 或 `cluster-configuration.yaml` 文件中对应的 `clusterRole` 的值修改为 `host`。 ```yaml multicluster: clusterRole: host ``` +{{< notice note >}} + +如果您在单节点集群上安装 KubeSphere ([All-in-One](../../../quick-start/all-in-one-on-linux/)),则不需要创建 `config-sample.yaml` 文件。这种情况下,您可以在安装 KubeSphere 之后设置 Host 集群。 + +{{}} + {{}} {{}} -您可以使用 **kubectl** 来获取安装日志以验证状态。运行以下命令,稍等片刻,如果主集群已准备就绪,您将看到成功的日志返回。 +您可以使用 **kubectl** 来获取安装日志以验证状态。运行以下命令,稍等片刻,如果 Host 集群已准备就绪,您将看到成功的日志返回。 ```bash kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l app=ks-install -o jsonpath='{.items[0].metadata.name}') -f ``` -### 设置代理服务地址 +## 设置代理服务地址 -安装主集群后,将在`kubesphere-system`中创建一个名为 tower 的代理服务,其类型为`LoadBalancer`。 +安装 Host 集群后,将在 `kubesphere-system` 中创建一个名为 `tower` 的代理服务,其类型为 `LoadBalancer`。 {{< tabs >}} {{< tab "集群中有可用的 LoadBalancer" >}} -如果集群中有可用的 LoadBalancer 插件,则可以看到 tower 服务有相应的`EXTERNAL-IP`地址,该地址将由 KubeSphere 自动获取并配置代理服务地址,这意味着您可以跳过设置代理服务地址这一步。执行以下命令确认是否有 LoadBalancer 插件。 +如果集群中有可用的 LoadBalancer 插件,则可以看到 Tower 服务有相应的 `EXTERNAL-IP` 地址,该地址将由 KubeSphere 自动获取并配置代理服务地址,这意味着您可以跳过设置代理服务地址这一步。执行以下命令确认是否有 LoadBalancer 插件。 ```bash kubectl -n kubesphere-system get svc ``` -命令的输出可能如下所示: +命令输出结果可能如下所示: ```shell NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE @@ -87,7 +89,7 @@ tower LoadBalancer 10.233.63.191 139.198.110.23 8080:30721/TCP {{< notice note >}} -通常情况主流公有云厂商会提供负载均衡器解决方案,并且负载均衡器可以自动分配外部 IP。如果您的集群运行在本地环境中,尤其是在**裸金属环境**中,可以使用 [Porter](https://github.com/kubesphere/porter) 作为负载均衡器解决方案。 +一般来说,主流公有云厂商会提供 LoadBalancer 解决方案,并且负载均衡器可以自动分配外部 IP。如果您的集群运行在本地环境中,尤其是在**裸机环境**中,可以使用 [Porter](https://github.com/kubesphere/porter) 作为负载均衡器解决方案。 {{}} @@ -95,19 +97,23 @@ tower LoadBalancer 10.233.63.191 139.198.110.23 8080:30721/TCP {{< tab "集群中没有可用的 LoadBalancer" >}} -1. 如果在 tower 服务下看不到相应的地址显示出来(EXTERNAL-IP 处于 pending 状态),则需要手动设置代理地址。例如,您有一个可用的公有 IP 地址`139.198.120.120`,并且此 IP 地址的端口`8080`被转发到集群的端口`30721`。执行以下命令来检查服务。 +1. 如果在 Tower 服务下没有显示相应的地址(`EXTERNAL-IP` 处于 `pending` 状态),则需要手动设置代理地址。例如,您有一个可用的公有 IP 地址 `139.198.120.120`,并且**此 IP 地址的端口** `8080` **被转发到集群的端口** `30721`。执行以下命令来检查服务。 - ```bash - $ kubectl -n kubesphere-system get svc + ```shell + kubectl -n kubesphere-system get svc + ``` + + 命令输出结果可能如下所示: + ``` NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE tower LoadBalancer 10.233.63.191 8080:30721/TCP 16h ``` -2. 将`proxyPublishAddress`的值添加到 ks-installer 的配置文件中,并按如下所示输入公有 IP 地址(此处示例`139.198.120.120`)和端口号。 +2. 将 `proxyPublishAddress` 的值添加到 `ks-installer` 的配置文件中,并按如下所示输入公有 IP 地址(此处示例 `139.198.120.120`)和端口号。 - - 选项 A - 使用 web 控制台: + - 选项 A - 使用 Web 控制台: - 使用`admin`帐户登录控制台,然后进入**集群管理**页面上的 **CRDs**,输入关键字`ClusterConfiguration`,然后进入其详细信息页面,编辑`ks-installer`的 YAML,方法类似于[启用可插拔组件](../../../pluggable-components/)。 + 使用 `admin` 帐户登录控制台,然后进入**集群管理**页面上的**自定义资源 CRD**,输入关键字 `ClusterConfiguration`,然后转到其详情页面。编辑 `ks-installer` 的 YAML 文件,方法类似于[启用可插拔组件](../../../pluggable-components/)。 - 选项 B - 使用 Kubectl: @@ -115,7 +121,7 @@ tower LoadBalancer 10.233.63.191 139.198.110.23 8080:30721/TCP kubectl -n kubesphere-system edit clusterconfiguration ks-installer ``` - 定位到`multicluster`并为`proxyPublishAddress`添加新行来定义 IP 地址,以便访问 tower。 + 搜寻到 `multicluster` 并添加新行输入 `proxyPublishAddress` 来定义 IP 地址,以便访问 Tower。 ```yaml multicluster: @@ -123,7 +129,7 @@ tower LoadBalancer 10.233.63.191 139.198.110.23 8080:30721/TCP proxyPublishAddress: http://139.198.120.120:8080 # Add this line to set the address to access tower ``` -3. 保存配置并重启`ks-apiserver`。 +3. 保存配置并稍等片刻,或者您可以运行以下命令手动重启 `ks-apiserver` 使修改立即生效。 ```shell kubectl -n kubesphere-system rollout restart deployment ks-apiserver @@ -133,15 +139,15 @@ tower LoadBalancer 10.233.63.191 139.198.110.23 8080:30721/TCP {{}} -### 准备成员集群 +## 准备 Member 集群 -为了在**主集群**管理成员集群,需要使它们之间的`jwtSecret`相同。因此,首先需要通过以下命令从**主集群**中获取它。 +为了通过 **Host 集群**管理 Member 集群,您需要使它们之间的 `jwtSecret` 相同。因此,您首先需要在 **Host 集群**中执行以下命令来获取它。 ```bash kubectl -n kubesphere-system get cm kubesphere-config -o yaml | grep -v "apiVersion" | grep jwtSecret ``` -命令输出可能如下所示: +命令输出结果可能如下所示: ```yaml jwtSecret: "gfIwilcc0WjNGKJ5DLeksf2JKfcLgTZU" @@ -151,11 +157,11 @@ jwtSecret: "gfIwilcc0WjNGKJ5DLeksf2JKfcLgTZU" {{< tab "已经安装 KubeSphere" >}} -如果已经安装了独立的 KubeSphere,则可以通过编辑集群配置,将`clusterRole`的值设置为`member`。您需要**稍等几分钟**,以使更改生效。 +如果已经安装了独立的 KubeSphere 集群,您可以编辑集群配置,将 `clusterRole` 的值设置为 `member`。 -- 选项 A - 使用 web 控制台: +- 选项 A - 使用 Web 控制台: - 使用`admin`帐户登录控制台,然后进入**集群管理**页面上的 **CRDs**,输入关键字 **ClusterConfiguration**,然后进入其详细信息页面,编辑`ks-installer`的 YAML,方法类似于[启用可插拔组件](../../../pluggable-components/)。 + 使用 `admin` 帐户登录控制台,然后进入**集群管理**页面上的**自定义资源 CRD**,输入关键字 `ClusterConfiguration`,然后转到其详情页面。编辑 `ks-installer` 的 YAML 文件,方法类似于[启用可插拔组件](../../../pluggable-components/)。 - 选项 B - 使用 Kubectl: @@ -163,58 +169,70 @@ jwtSecret: "gfIwilcc0WjNGKJ5DLeksf2JKfcLgTZU" kubectl edit cc ks-installer -n kubesphere-system ``` -输入上面相应地方显示的`jwtSecret`: +在 `ks-installer` 的 YAML 文件中对应输入上面所示的 `jwtSecret`: ```yaml authentication: jwtSecret: gfIwilcc0WjNGKJ5DLeksf2JKfcLgTZU ``` -向下滚动并将`clusterRole`的值设置为`member`,然后点击**更新**(如果使用 web 控制台)以使其生效: +向下滚动并将 `clusterRole` 的值设置为 `member`,然后点击**更新**(如果使用 Web 控制台)使其生效: ```yaml multicluster: clusterRole: member ``` +您需要**稍等片刻**待该更改生效。 + {{}} {{< tab "尚未安装 KubeSphere" >}} -安装成员集群和安装一个普通的 KubeSphere 集群没有太大差别,唯一的区别在配置文件`config-sample.yaml`中设置参数`jwtSecret`和`clusterRole`如下: +在 Linux 上或者在现有 Kubernetes 集群上安装 KubeSphere 之前,您可以定义 Member 集群。如果您想[在 Linux 上安装 KubeSphere](../../../installing-on-linux/introduction/multioverview/#1-创建示例配置文件),需要使用 `config-sample.yaml` 文件。如果您想[在现有 Kubernetes 集群上安装 KubeSphere](../../../installing-on-kubernetes/introduction/overview/#部署-kubesphere),需要使用两个 YAML 文件,其中一个是 `cluster-configuration.yaml`。要设置 Member 集群,请在安装 KubeSphere 之前,在 `config-sample.yaml` 或 `cluster-configuration.yaml` 文件中输入上方 `jwtSecret` 所对应的值,并将 `clusterRole` 的值修改为 `member`。 ```yaml authentication: jwtSecret: gfIwilcc0WjNGKJ5DLeksf2JKfcLgTZU ``` -向下滚动并将 `clusterRole` 的值设置为 `member`: - ```yaml multicluster: clusterRole: member ``` +{{< notice note >}} + +如果您在单节点集群上安装 KubeSphere ([All-in-One](../../../quick-start/all-in-one-on-linux/)),则不需要创建 `config-sample.yaml` 文件。这种情况下,您可以在安装 KubeSphere 之后设置 Member 集群。 + +{{}} + {{}} {{}} -### 导入集群 +您可以使用 **kubectl** 来获取安装日志以验证状态。运行以下命令,稍等片刻,如果 Member 集群已准备就绪,您将看到成功的日志返回。 -1. 打开 H 集群仪表板,然后点击**添加集群**。 +```bash +kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l app=ks-install -o jsonpath='{.items[0].metadata.name}') -f +``` - ![添加集群](https://ap3.qingstor.com/kubesphere-website/docs/20200827231611.png) +## 导入 Member 集群 -2. 输入要导入的集群的基本信息,然后单击**下一步**。 +1. 以 `admin` 身份登录 KubeSphere 控制台,转到**集群管理**页面点击**添加集群**。 + + ![添加集群](/images/docs/zh-cn/multicluster-management/enable-multicluster-management-in-kubesphere/agent-connection/add-cluster.PNG) - ![导入集群](https://ap3.qingstor.com/kubesphere-website/docs/20200827211842.png) +2. 输入要导入的集群的基本信息,然后点击**下一步**。 -3. 在**连接方法**中,选择**集群连接代理**,然后点击**导入**。 + ![集群信息](/images/docs/zh-cn/multicluster-management/enable-multicluster-management-in-kubesphere/agent-connection/cluster-info.PNG) - ![代理](/images/docs/agent-en.png) +3. 在**连接方式**,选择**集群连接代理**,然后点击**导入**。H 集群生成的代理部署会显示在控制台上。 -4. 根据指示在 M 集群中创建一个`agent.yaml`文件,然后将 deployment 复制并粘贴到该文件中,执行`kubectl create -f agent.yaml`然后等待代理启动并运行。请确保 M 集群可以访问代理地址。 + ![代理连接](/images/docs/zh-cn/multicluster-management/enable-multicluster-management-in-kubesphere/agent-connection/agent-en.PNG) -5. 当集群代理启动并运行时,您可以在 H 集群中看到已导入的集群。 +4. 根据指示在 M 集群中创建一个 `agent.yaml` 文件,然后将代理部署复制并粘贴到该文件中。在该节点上执行 `kubectl create -f agent.yaml` 然后等待代理启动并运行。请确保 M 集群可以访问代理地址。 - ![Azure AKS](https://ap3.qingstor.com/kubesphere-website/docs/20200827231650.png) +5. 待集群代理启动并运行,您会看到 M 集群已经导入 H 集群。 + + ![已导入的集群](/images/docs/zh-cn/multicluster-management/enable-multicluster-management-in-kubesphere/agent-connection/cluster-imported.PNG) diff --git a/static/images/docs/agent-en.png b/static/images/docs/agent-en.png deleted file mode 100644 index d81124ef2..000000000 Binary files a/static/images/docs/agent-en.png and /dev/null differ diff --git a/static/images/docs/zh-cn/multicluster-management/enable-multicluster-management-in-kubesphere/agent-connection/add-cluster.PNG b/static/images/docs/zh-cn/multicluster-management/enable-multicluster-management-in-kubesphere/agent-connection/add-cluster.PNG new file mode 100644 index 000000000..5fbfaf9cf Binary files /dev/null and b/static/images/docs/zh-cn/multicluster-management/enable-multicluster-management-in-kubesphere/agent-connection/add-cluster.PNG differ diff --git a/static/images/docs/zh-cn/multicluster-management/enable-multicluster-management-in-kubesphere/agent-connection/agent-en.PNG b/static/images/docs/zh-cn/multicluster-management/enable-multicluster-management-in-kubesphere/agent-connection/agent-en.PNG new file mode 100644 index 000000000..a6f0a9140 Binary files /dev/null and b/static/images/docs/zh-cn/multicluster-management/enable-multicluster-management-in-kubesphere/agent-connection/agent-en.PNG differ diff --git a/static/images/docs/zh-cn/multicluster-management/enable-multicluster-management-in-kubesphere/agent-connection/cluster-imported.PNG b/static/images/docs/zh-cn/multicluster-management/enable-multicluster-management-in-kubesphere/agent-connection/cluster-imported.PNG new file mode 100644 index 000000000..c8c9412bf Binary files /dev/null and b/static/images/docs/zh-cn/multicluster-management/enable-multicluster-management-in-kubesphere/agent-connection/cluster-imported.PNG differ diff --git a/static/images/docs/zh-cn/multicluster-management/enable-multicluster-management-in-kubesphere/agent-connection/cluster-info.PNG b/static/images/docs/zh-cn/multicluster-management/enable-multicluster-management-in-kubesphere/agent-connection/cluster-info.PNG new file mode 100644 index 000000000..91003e19a Binary files /dev/null and b/static/images/docs/zh-cn/multicluster-management/enable-multicluster-management-in-kubesphere/agent-connection/cluster-info.PNG differ