From a1d290c5c3cb3b12bc11c197ab2488be355ee850 Mon Sep 17 00:00:00 2001 From: Felixnoo Date: Wed, 27 Oct 2021 17:09:30 +0800 Subject: [PATCH] Add Descriptions of Multi-cluster New Features in Docs Signed-off-by: Felixnoo --- .../enable-multicluster/agent-connection.md | 45 +++++++++++++++--- .../enable-multicluster/direct-connection.md | 43 ++++++++++++++--- .../project-and-multicluster-project.md | 5 +- .../container-image-settings.md | 7 +++ .../enable-multicluster/agent-connection.md | 37 ++++++++++++-- .../enable-multicluster/direct-connection.md | 41 ++++++++++++++-- .../project-and-multicluster-project.md | 7 +-- .../container-image-settings.md | 7 +++ .../images/docs/common-icons/three-dots.png | Bin 0 -> 1681 bytes .../multi-cluster-list.png | Bin 60795 -> 0 bytes 10 files changed, 168 insertions(+), 24 deletions(-) create mode 100644 static/images/docs/common-icons/three-dots.png delete mode 100644 static/images/docs/zh-cn/project-administration/project-and-multicluster-project/multi-cluster-list.png diff --git a/content/en/docs/multicluster-management/enable-multicluster/agent-connection.md b/content/en/docs/multicluster-management/enable-multicluster/agent-connection.md index 6c84195ea..a368000c4 100644 --- a/content/en/docs/multicluster-management/enable-multicluster/agent-connection.md +++ b/content/en/docs/multicluster-management/enable-multicluster/agent-connection.md @@ -34,28 +34,59 @@ If you already have a standalone KubeSphere cluster installed, you can set the v kubectl edit cc ks-installer -n kubesphere-system ``` -In the YAML file of `ks-installer`, navigate to `multicluster`, set the value of `clusterRole` to `host`, then click **Update** (if you use the web console) to make it effective: +In the YAML file of `ks-installer`, navigate to `multicluster`, set the value of `clusterRole` to `host`, then click **OK** (if you use the web console) to make it effective: ```yaml multicluster: clusterRole: host ``` +To set the host cluster name, add a field `hostClusterName` under `multicluster.clusterRole` in the YAML file of `ks-installer`: + +```yaml +multicluster: + clusterRole: host + hostClusterName: +``` + +{{< notice note >}} + +- It is recommended that you set the host cluster name while you are preparing your host cluster. When your host cluster is set up and running with resources deployed, it is not recommended that you set the host cluster name. +- The host cluster name can contain only lowercase letters, numbers, hyphens (-), or periods (.), and must start and end with a lowercase letter or number. + +{{}} + You need to wait for a while so that the change can take effect. {{}} {{< tab "KubeSphere has not been installed" >}} -You can define a host cluster before you install KubeSphere either on Linux or on an existing Kubernetes cluster. If you want to [install KubeSphere on Linux](../../../installing-on-linux/introduction/multioverview/#1-create-an-example-configuration-file), you use a `config-sample.yaml` file. If you want to [install KubeSphere on an existing Kubernetes cluster](../../../installing-on-kubernetes/introduction/overview/#deploy-kubesphere), you use two YAML files, one of which is `cluster-configuration.yaml`. To set a host cluster, change the value of `clusterRole` to `host` in `config-sample.yaml` or `cluster-configuration.yaml` accordingly before you install KubeSphere. +You can define a host cluster before you install KubeSphere either on Linux or on an existing Kubernetes cluster. If you want to [install KubeSphere on Linux](../../../installing-on-linux/introduction/multioverview/#1-create-an-example-configuration-file), you use a `config-sample.yaml` file. If you want to [install KubeSphere on an existing Kubernetes cluster](../../../installing-on-kubernetes/introduction/overview/#deploy-kubesphere), you use two YAML files, one of which is `cluster-configuration.yaml`. + +To set a host cluster, change the value of `clusterRole` to `host` in `config-sample.yaml` or `cluster-configuration.yaml` accordingly before you install KubeSphere. ```yaml multicluster: clusterRole: host ``` +To set the host cluster name, add a field `hostClusterName` under `multicluster.clusterRole` in `config-sample.yaml` or `cluster-configuration.yaml`: + +```yaml +multicluster: + clusterRole: host + hostClusterName: +``` + {{< notice note >}} +- The host cluster name can contain only lowercase letters, numbers, hyphens (-), or periods (.), and must start and end with a lowercase letter or number. + +{{}} + +{{< notice info >}} + If you install KubeSphere on a single-node cluster ([All-in-One](../../../quick-start/all-in-one-on-linux/)), you do not need to create a `config-sample.yaml` file. In this case, you can set a host cluster after KubeSphere is installed. {{}} @@ -93,7 +124,7 @@ tower LoadBalancer 10.233.63.191 139.198.110.23 8080:30721/TCP {{< notice note >}} -Generally, there is always a LoadBalancer solution in the public cloud, and the external IP can be allocated by the load balancer automatically. If your clusters are running in an on-premises environment, especially a **bare metal environment**, you can use [PorterLB](https://github.com/kubesphere/porter) as the LB solution. +Generally, there is always a LoadBalancer solution in the public cloud, and the external IP can be allocated by the load balancer automatically. If your clusters are running in an on-premises environment, especially a **bare metal environment**, you can use [OpenELB](https://github.com/kubesphere/porter) as the LB solution. {{}} @@ -180,7 +211,7 @@ authentication: jwtSecret: gfIwilcc0WjNGKJ5DLeksf2JKfcLgTZU ``` -Scroll down and set the value of `clusterRole` to `member`, then click **Update** (if you use the web console) to make it effective: +Scroll down and set the value of `clusterRole` to `member`, then click **OK** (if you use the web console) to make it effective: ```yaml multicluster: @@ -227,8 +258,8 @@ kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l app= 2. Enter the basic information of the cluster to be imported on the **Import Cluster** page. You can also click **Edit Mode** in the upper-right corner to view and edit the basic information in YAML format. After you finish editing, click **Next**. -3. In **Connection Method**, select **Agent Connection** and click **Create**. It will show the YAML configuration file for the agent Deployment generated by the H Cluster on the console. +3. In **Connection Method**, select **Agent connection** and click **Create**. It will show the YAML configuration file for the agent Deployment generated by the host cluster on the console. -4. Create an `agent.yaml` file on the M Cluster based on the instruction, then copy and paste the agent deployment to the file. Execute `kubectl create -f agent.yaml` on the node and wait for the agent to be up and running. Please make sure the proxy address is accessible to the M Cluster. +4. Create an `agent.yaml` file on the member cluster based on the instruction, then copy and paste the agent deployment to the file. Execute `kubectl create -f agent.yaml` on the node and wait for the agent to be up and running. Please make sure the proxy address is accessible to the member cluster. -5. You can see the cluster you have imported in the H Cluster when the cluster agent is up and running. \ No newline at end of file +5. You can see the cluster you have imported in the host cluster when the cluster agent is up and running. \ No newline at end of file diff --git a/content/en/docs/multicluster-management/enable-multicluster/direct-connection.md b/content/en/docs/multicluster-management/enable-multicluster/direct-connection.md index 1e5ba9e6d..2c11fa1c6 100644 --- a/content/en/docs/multicluster-management/enable-multicluster/direct-connection.md +++ b/content/en/docs/multicluster-management/enable-multicluster/direct-connection.md @@ -6,7 +6,7 @@ titleLink: "Direct Connection" weight: 5210 --- -If the kube-apiserver address of the Member Cluster (M Cluster) is accessible on any node of the Host Cluster (H Cluster), you can adopt **Direction Connection**. This method is applicable when the kube-apiserver address of the M Cluster can be exposed or H Cluster and M Cluster are in the same private network or subnet. +If the kube-apiserver address of the member cluster is accessible on any node of the host cluster, you can adopt **Direction Connection**. This method is applicable when the kube-apiserver address of the M Cluster can be exposed or H Cluster and M Cluster are in the same private network or subnet. To use the multi-cluster feature using direct connection, you must have at least two clusters serving as the H Cluster and the M Cluster respectively. A cluster can be defined as the H Cluster or the M Cluster either before or after you install KubeSphere. For more information about installing KubeSphere, refer to [Installing on Linux](../../../installing-on-linux/) and [Installing on Kubernetes](../../../installing-on-kubernetes/). @@ -34,28 +34,59 @@ If you already have a standalone KubeSphere cluster installed, you can set the v kubectl edit cc ks-installer -n kubesphere-system ``` -In the YAML file of `ks-installer`, navigate to `multicluster`, set the value of `clusterRole` to `host`, then click **Update** (if you use the web console) to make it effective: +In the YAML file of `ks-installer`, navigate to `multicluster`, set the value of `clusterRole` to `host`, then click **OK** (if you use the web console) to make it effective: ```yaml multicluster: clusterRole: host ``` +To set the host cluster name, add a field `hostClusterName` under `multicluster.clusterRole` in the YAML file of `ks-installer`: + +```yaml +multicluster: + clusterRole: host + hostClusterName: +``` + +{{< notice note >}} + +- It is recommended that you set the host cluster name while you are preparing your host cluster. When your host cluster is set up and running with resources deployed, it is not recommended that you set the host cluster name. +- The host cluster name can contain only lowercase letters, numbers, hyphens (-), or periods (.), and must start and end with a lowercase letter or number. + +{{}} + You need to wait for a while so that the change can take effect. {{}} {{< tab "KubeSphere has not been installed" >}} -You can define a host cluster before you install KubeSphere either on Linux or on an existing Kubernetes cluster. If you want to [install KubeSphere on Linux](../../../installing-on-linux/introduction/multioverview/#1-create-an-example-configuration-file), you use a `config-sample.yaml` file. If you want to [install KubeSphere on an existing Kubernetes cluster](../../../installing-on-kubernetes/introduction/overview/#deploy-kubesphere), you use two YAML files, one of which is `cluster-configuration.yaml`. To set a host cluster, change the value of `clusterRole` to `host` in `config-sample.yaml` or `cluster-configuration.yaml` accordingly before you install KubeSphere. +You can define a host cluster before you install KubeSphere either on Linux or on an existing Kubernetes cluster. If you want to [install KubeSphere on Linux](../../../installing-on-linux/introduction/multioverview/#1-create-an-example-configuration-file), you use a `config-sample.yaml` file. If you want to [install KubeSphere on an existing Kubernetes cluster](../../../installing-on-kubernetes/introduction/overview/#deploy-kubesphere), you use two YAML files, one of which is `cluster-configuration.yaml`. + +To set a host cluster, change the value of `clusterRole` to `host` in `config-sample.yaml` or `cluster-configuration.yaml` accordingly before you install KubeSphere. ```yaml multicluster: clusterRole: host ``` +To set the host cluster name, add a field `hostClusterName` under `multicluster.clusterRole` in `config-sample.yaml` or `cluster-configuration.yaml`: + +```yaml +multicluster: + clusterRole: host + hostClusterName: +``` + {{< notice note >}} +- The host cluster name can contain only lowercase letters, numbers, hyphens (-), or periods (.), and must start and end with a lowercase letter or number. + +{{}} + +{{< notice info >}} + If you install KubeSphere on a single-node cluster ([All-in-One](../../../quick-start/all-in-one-on-linux/)), you do not need to create a `config-sample.yaml` file. In this case, you can set a host cluster after KubeSphere is installed. {{}} @@ -107,7 +138,7 @@ authentication: jwtSecret: gfIwilcc0WjNGKJ5DLeksf2JKfcLgTZU ``` -Scroll down and set the value of `clusterRole` to `member`, then click **Update** (if you use the web console) to make it effective: +Scroll down and set the value of `clusterRole` to `member`, then click **OK** (if you use the web console) to make it effective: ```yaml multicluster: @@ -154,7 +185,7 @@ kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l app= 2. Enter the basic information of the cluster to be imported on the **Import Cluster** page. You can also click **Edit Mode** in the upper-right corner to view and edit the basic information in YAML format. After you finish editing, click **Next**. -3. In **Connection Method**, select **Direct Connection**, and copy the kubeconfig of the Member Cluster and paste it into the box. You can also click **Edit Mode** in the top-right corner to edit the kubeconfig of the Member Cluster in YAML format. +3. In **Connection Method**, select **Direct connection**, and copy the kubeconfig of the Member Cluster and paste it into the box. You can also click **Edit Mode** in the upper-right corner to edit the kubeconfig of the Member Cluster in YAML format. {{< notice note >}} @@ -162,4 +193,4 @@ Make sure the `server` address in KubeConfig is accessible on any node of the Ho {{}} -1. Click **Create** and wait for cluster initialization to finish. \ No newline at end of file +4. Click **Create** and wait for cluster initialization to finish. \ No newline at end of file diff --git a/content/en/docs/project-administration/project-and-multicluster-project.md b/content/en/docs/project-administration/project-and-multicluster-project.md index ab300c8b6..ba7a51ef2 100644 --- a/content/en/docs/project-administration/project-and-multicluster-project.md +++ b/content/en/docs/project-administration/project-and-multicluster-project.md @@ -68,8 +68,11 @@ A project cannot be recovered once deleted and resources in the project will be {{}} 2. In the **Create Multi-cluster Project** window that appears, enter a project name and add an alias or description if necessary. Under **Clusters**, select multiple clusters for your project by clicking **Add Cluster**, and then click **OK**. +3. A multi-cluster project created is displayed in the list. Click on the right of a multi-cluster project to select an operation from the drop-down menu: -3. A multi-cluster project created will display in the list. You can click the project name to go to its **Overview** page. + - **Edit Information**: Edit the basic information of a multi-cluster project. + - **Add Cluster**: Select a cluster from the drop-down list in the displayed dialog box and click **OK** to add a cluster to a multi-cluster project. + - **Delete**: Delete a multi-cluster project. ### Edit a multi-cluster project diff --git a/content/en/docs/project-user-guide/application-workloads/container-image-settings.md b/content/en/docs/project-user-guide/application-workloads/container-image-settings.md index 2ff8723d9..43777b9be 100644 --- a/content/en/docs/project-user-guide/application-workloads/container-image-settings.md +++ b/content/en/docs/project-user-guide/application-workloads/container-image-settings.md @@ -20,6 +20,13 @@ You can enable **Edit YAML** in the upper-right corner to see corresponding valu Set the number of replicated Pods by clicking or , indicated by the `.spec.replicas` field in the manifest file. This option is not available for DaemonSets. +If you create Deployments in a multi-cluster project, select a replica scheduling mode under **Replica Scheduling Mode**: + +- **Specify Replicas**: select clusters and set the number of Pod replicas in each cluster. +- **Specify Weights**: select clusters, set the total number of Pod replicas in **Total Replicas**, and specify a weight for each cluster. The Pod replicas will be proportionally scheduled to the clusters according to the weights. + +If you create StatefulSets in a multi-cluster project, select clusters and set the number of Pod replicas in each cluster under **Pod Replicas**. + ### Add Container Click **Add Container** to add a container. 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 9b96adda6..ca45bf51b 100644 --- a/content/zh/docs/multicluster-management/enable-multicluster/agent-connection.md +++ b/content/zh/docs/multicluster-management/enable-multicluster/agent-connection.md @@ -30,28 +30,59 @@ KubeSphere 的组件 [Tower](https://github.com/kubesphere/tower) 用于代理 kubectl edit cc ks-installer -n kubesphere-system ``` -在 `ks-installer` 的 YAML 文件中,搜寻到 `multicluster`,将 `clusterRole` 的值设置为 `host`,然后点击**更新**(如果使用 Web 控制台)使其生效: +在 `ks-installer` 的 YAML 文件中,搜寻到 `multicluster`,将 `clusterRole` 的值设置为 `host`,然后点击**确定**(如果使用 Web 控制台)使其生效: ```yaml multicluster: clusterRole: host ``` +要设置主集群名称,请在 `ks-installer` 的 YAML 文件中的 `multicluster.clusterRole` 下添加 `hostClusterName` 字段: + +```yaml +multicluster: + clusterRole: host + hostClusterName: <主集群名称> +``` + +{{< notice note >}} + +- 建议您在准备主集群的同时设置主集群名称。若您的主集群已在运行并且已经部署过资源,不建议您再去设置主集群名称。 +- 主集群名称只能包含小写字母、数字、连字符(-)或者半角句号(.),必须以小写字母或数字开头和结尾。 + +{{}} + 您需要**稍等片刻**待该更改生效。 {{}} {{< tab "尚未安装 KubeSphere" >}} -在 Linux 上或者在现有 Kubernetes 集群上安装 KubeSphere 之前,您可以定义一个主集群。如果您想[在 Linux 上安装 KubeSphere](../../../installing-on-linux/introduction/multioverview/#1-创建示例配置文件),需要使用 `config-sample.yaml` 文件。如果您想[在现有 Kubernetes 集群上安装 KubeSphere](../../../installing-on-kubernetes/introduction/overview/#部署-kubesphere),需要使用两个 YAML 文件,其中一个是 `cluster-configuration.yaml`。要设置一个主集群,请在安装 KubeSphere 之前,将 `config-sample.yaml` 或 `cluster-configuration.yaml` 文件中对应的 `clusterRole` 的值修改为 `host`。 +在 Linux 上或者在现有 Kubernetes 集群上安装 KubeSphere 之前,您可以定义一个主集群。如果您想[在 Linux 上安装 KubeSphere](../../../installing-on-linux/introduction/multioverview/#1-创建示例配置文件),需要使用 `config-sample.yaml` 文件。如果您想[在现有 Kubernetes 集群上安装 KubeSphere](../../../installing-on-kubernetes/introduction/overview/#部署-kubesphere),需要使用两个 YAML 文件,其中一个是 `cluster-configuration.yaml`。 + +要设置一个主集群,请在安装 KubeSphere 之前,将 `config-sample.yaml` 或 `cluster-configuration.yaml` 文件中对应的 `clusterRole` 的值修改为 `host`。 ```yaml multicluster: clusterRole: host ``` +要设置主集群名称,请在 `config-sample.yaml` 或 `cluster-configuration.yaml` 文件中的 `multicluster.clusterRole` 下添加 `hostClusterName` 字段: + +```yaml +multicluster: + clusterRole: host + hostClusterName: <主集群名称> +``` + {{< notice note >}} +- 主集群名称只能包含小写字母、数字、连字符(-)或者半角句号(.),必须以小写字母或数字开头和结尾。 + +{{}} + +{{< notice info >}} + 如果您在单节点集群上安装 KubeSphere ([All-in-One](../../../quick-start/all-in-one-on-linux/)),则不需要创建 `config-sample.yaml` 文件。这种情况下,您可以在安装 KubeSphere 之后设置主集群。 {{}} @@ -176,7 +207,7 @@ authentication: jwtSecret: gfIwilcc0WjNGKJ5DLeksf2JKfcLgTZU ``` -向下滚动并将 `clusterRole` 的值设置为 `member`,然后点击**更新**(如果使用 Web 控制台)使其生效: +向下滚动并将 `clusterRole` 的值设置为 `member`,然后点击**确定**(如果使用 Web 控制台)使其生效: ```yaml multicluster: diff --git a/content/zh/docs/multicluster-management/enable-multicluster/direct-connection.md b/content/zh/docs/multicluster-management/enable-multicluster/direct-connection.md index ad1dc8d65..3f61be98d 100644 --- a/content/zh/docs/multicluster-management/enable-multicluster/direct-connection.md +++ b/content/zh/docs/multicluster-management/enable-multicluster/direct-connection.md @@ -30,28 +30,59 @@ weight: 5210 kubectl edit cc ks-installer -n kubesphere-system ``` -在 `ks-installer` 的 YAML 文件中,搜寻到 `multicluster`,将 `clusterRole` 的值设置为 `host`,然后点击**更新**(如果使用 Web 控制台)使其生效: +在 `ks-installer` 的 YAML 文件中,搜寻到 `multicluster`,将 `clusterRole` 的值设置为 `host`,然后点击**确定**(如果使用 Web 控制台)使其生效: ```yaml multicluster: clusterRole: host ``` +要设置主集群名称,请在 `ks-installer` 的 YAML 文件中的 `multicluster.clusterRole` 下添加 `hostClusterName` 字段: + +```yaml +multicluster: + clusterRole: host + hostClusterName: <主集群名称> +``` + +{{< notice note >}} + +- 建议您在准备主集群的同时设置主集群名称。若您的主集群已在运行并且已经部署过资源,不建议您再去设置主集群名称。 +- 主集群名称只能包含小写字母、数字、连字符(-)或者半角句号(.),必须以小写字母或数字开头和结尾。 + +{{}} + 您需要**稍等片刻**待该更改生效。 {{}} {{< tab "尚未安装 KubeSphere" >}} -在 Linux 上或者在现有 Kubernetes 集群上安装 KubeSphere 之前,您可以定义一个主集群。如果您想[在 Linux 上安装 KubeSphere](../../../installing-on-linux/introduction/multioverview/#1-创建示例配置文件),需要使用 `config-sample.yaml` 文件。如果您想[在现有 Kubernetes 集群上安装 KubeSphere](../../../installing-on-kubernetes/introduction/overview/#部署-kubesphere),需要使用两个 YAML 文件,其中一个是 `cluster-configuration.yaml`。要设置一个主集群,请在安装 KubeSphere 之前,将 `config-sample.yaml` 或 `cluster-configuration.yaml` 文件中对应的 `clusterRole` 的值修改为 `host`。 +在 Linux 上或者在现有 Kubernetes 集群上安装 KubeSphere 之前,您可以定义一个主集群。如果您想[在 Linux 上安装 KubeSphere](../../../installing-on-linux/introduction/multioverview/#1-创建示例配置文件),需要使用 `config-sample.yaml` 文件。如果您想[在现有 Kubernetes 集群上安装 KubeSphere](../../../installing-on-kubernetes/introduction/overview/#部署-kubesphere),需要使用两个 YAML 文件,其中一个是 `cluster-configuration.yaml`。 + +要设置一个主集群,请在安装 KubeSphere 之前,将 `config-sample.yaml` 或 `cluster-configuration.yaml` 文件中对应的 `clusterRole` 的值修改为 `host`。 ```yaml multicluster: clusterRole: host ``` +要设置主集群名称,请在 `config-sample.yaml` 或 `cluster-configuration.yaml` 文件中的 `multicluster.clusterRole` 下添加 `hostClusterName` 字段: + +```yaml +multicluster: + clusterRole: host + hostClusterName: <主集群名称> +``` + {{< notice note >}} +- 主集群名称只能包含小写字母、数字、连字符(-)或者半角句号(.),必须以小写字母或数字开头和结尾。 + +{{}} + +{{< notice info >}} + 如果您在单节点集群上安装 KubeSphere ([All-in-One](../../../quick-start/all-in-one-on-linux/)),则不需要创建 `config-sample.yaml` 文件。这种情况下,您可以在安装 KubeSphere 之后设置主集群。 {{}} @@ -103,7 +134,7 @@ authentication: jwtSecret: gfIwilcc0WjNGKJ5DLeksf2JKfcLgTZU ``` -向下滚动并将 `clusterRole` 的值设置为 `member`,然后点击**更新**(如果使用 Web 控制台)使其生效: +向下滚动并将 `clusterRole` 的值设置为 `member`,然后点击**确定**(如果使用 Web 控制台)使其生效: ```yaml multicluster: @@ -116,7 +147,9 @@ multicluster: {{< tab "尚未安装 KubeSphere" >}} -在 Linux 上或者在现有 Kubernetes 集群上安装 KubeSphere 之前,您可以定义。如果您想[在 Linux 上安装 KubeSphere](../../../installing-on-linux/introduction/multioverview/#1-创建示例配置文件),需要使用 `config-sample.yaml` 文件。如果您想[在现有 Kubernetes 集群上安装 KubeSphere](../../../installing-on-kubernetes/introduction/overview/#部署-kubesphere),需要使用两个 YAML 文件,其中一个是 `cluster-configuration.yaml`。要设置,请在安装 KubeSphere 之前,在 `config-sample.yaml` 或 `cluster-configuration.yaml` 文件中输入上方 `jwtSecret` 所对应的值,并将 `clusterRole` 的值修改为 `member`。 +在 Linux 上或者在现有 Kubernetes 集群上安装 KubeSphere 之前,您可以定义。如果您想[在 Linux 上安装 KubeSphere](../../../installing-on-linux/introduction/multioverview/#1-创建示例配置文件),需要使用 `config-sample.yaml` 文件。如果您想[在现有 Kubernetes 集群上安装 KubeSphere](../../../installing-on-kubernetes/introduction/overview/#部署-kubesphere),需要使用两个 YAML 文件,其中一个是 `cluster-configuration.yaml`。 + +要设置,请在安装 KubeSphere 之前,在 `config-sample.yaml` 或 `cluster-configuration.yaml` 文件中输入上方 `jwtSecret` 所对应的值,并将 `clusterRole` 的值修改为 `member`。 ```yaml authentication: diff --git a/content/zh/docs/project-administration/project-and-multicluster-project.md b/content/zh/docs/project-administration/project-and-multicluster-project.md index a22e7225d..986a745e3 100644 --- a/content/zh/docs/project-administration/project-and-multicluster-project.md +++ b/content/zh/docs/project-administration/project-and-multicluster-project.md @@ -74,10 +74,11 @@ KubeSphere 中的项目即 Kubernetes [命名空间](https://kubernetes.io/zh/do {{}} 2. 在弹出的**创建多集群项目**窗口中输入项目名称,并根据需要添加别名或说明。在**集群设置**下,点击**添加集群**为项目选择多个集群,然后点击**确定**。 +3. 创建的多集群项目会显示在列表中。点击多集群项目右侧的 ,从下拉菜单中选择一个操作: -3. 创建的多集群项目会显示在下图所示的列表中。您可以点击项目名称打开**概览**页面。 - - ![multi-cluster-list](/images/docs/zh-cn/project-administration/project-and-multicluster-project/multi-cluster-list.png) + - **编辑信息**:编辑多集群项目的基本信息。 + - **添加集群**:在弹出对话框的下拉列表中选择一个集群并点击**确定**,为多集群项目添加一个集群。 + - **删除**:删除多集群项目。 ### 编辑多集群项目 diff --git a/content/zh/docs/project-user-guide/application-workloads/container-image-settings.md b/content/zh/docs/project-user-guide/application-workloads/container-image-settings.md index 50ba88781..635e379d4 100644 --- a/content/zh/docs/project-user-guide/application-workloads/container-image-settings.md +++ b/content/zh/docs/project-user-guide/application-workloads/container-image-settings.md @@ -20,6 +20,13 @@ weight: 10280 点击 图标设置容器组副本数量,该参数显示在清单文件中的 `.spec.replicas` 字段。该选项对守护进程集不可用。 +如果您在多集群项目中创建部署,请在**副本调度模式**下选择一个副本调度模式: + +- **指定副本数量**:选择集群并设置每个集群的容器组副本数。 +- **指定权重**:选择集群,在**副本总数**中设置容器组副本总数,并指定每个集群的权重。容器组副本将根据权重成比例地调度到每个集群。 + +如果您在多集群项目中创建有状态副本集,请在**容器组副本数量**下选择集群并设置每个集群的容器组副本数。 + ### 添加容器 点击**添加容器**来添加容器。 diff --git a/static/images/docs/common-icons/three-dots.png b/static/images/docs/common-icons/three-dots.png new file mode 100644 index 0000000000000000000000000000000000000000..4ef8b9b467a68489299df0686aeef1b4797b656f GIT binary patch literal 1681 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 L*_u5