本文介绍如何在ACK One Fleet实例中开启和关闭多集群网关,以及如何将关联集群添加至多集群网关。
计费说明
使用多集群网关会产生一定的费用,关于多集群网关的计费信息,请参见普通实例计费概述。
前提条件
已完成RAM用户AliyunAdcpManagedMseRole授权。关于角色AliyunAdcpManagedMseRole的策略AliyunAdcpManagedMseRolePolicy详情如下。
已开启舰队管理功能,并从ACK One控制台获取Fleet实例的KubeConfig,通过kubectl连接至Fleet实例。
已添加关联集群,且关联集群与ACK One Fleet实例处于同一VPC。
开启多集群网关
通过控制台开启
登录ACK One控制台,在左侧导航栏选择 。
在多集群网关页面单击开启多集群网关,然后在弹出的对话框中单击确定。
通过命令行开启
确认阿里云CLI为最新版本后,执行以下命令开启多集群网关。
替换以下
<YOUR_FLEET_CLUSTERID>
为您的Fleet实例ID。aliyun adcp UpdateHubClusterFeature --ClusterId <YOUR_FLEET_CLUSTERID> --GatewayEnabled true
执行以下命令,查看多集群网关功能的开启状态。
aliyun adcp DescribeHubClusterDetails --ClusterId <YOUR_FLEET_CLUSTERID> |grep -B4 -A1 EnabledMSE`
预期输出如下:
Status
为True
表示多集群网关成功开启。{ "Message": "", "Reason": "", "Status": "True", "Type": "EnabledMSE" },
创建多集群网关
通过控制台创建
登录ACK One控制台,在左侧导航栏选择 。
在多集群网关页面右上角单击创建网关。
在弹出的面板中,根据实际情况修改创建多集群网关的YAML文件,然后单击创建。
通过命令行创建
获取ACK One Fleet实例的虚拟交换机ID并记录。
执行以下命令,获取交换机实例ID。
aliyun adcp DescribeHubClusterDetails --ClusterId <YOUR_FLEET_CLUSTERID>
从预期输出的
VSwitches
中复制一个交换机实例ID。
使用以下内容,创建mseingressconfig.yaml文件。
替换以下
${vsw-id1}
为您上一步获取的交换机ID。您也可以在创建网关时,通过添加Annotation同步指定待添加到多集群网关的关联集群。apiVersion: mse.alibabacloud.com/v1alpha1 kind: MseIngressConfig metadata: name: ackone-gateway # 添加关联集群到MSE网关。 #annotations: # mse.alibabacloud.com/remote-clusters: ${cluster1},${cluster2} spec: common: instance: replicas: 3 spec: 2c4g network: # 公网SLB和内网SLB,可都配置,如果2个字段都不配置则默认使用公网SLB。 #publicSLBSpec: slb.s2.small #privateSLBSpec: slb.s2.small vSwitches: - ${vsw-id1} ingress: local: ingressClass: mse name: mse-ingress
执行以下命令,在ACK One Fleet实例中创建一个名为mse-ingress的网关。
kubectl apply -f mseingressconfig.yaml
执行以下命令,验证网关是否创建成功。
kubectl get mseingressconfig ackone-gateway
预期输出:
NAME STATUS AGE ackone-gateway Listening 3m15s
预期输出中网关状态为Listening,表明云原生网关创建成功处于运行状态,并自动监听集群中IngressClass为
mse
的Ingress资源。通过MseIngressConfig创建的多集群网关会按照Pending、Running、Listening的状态依次变化。各状态说明如下:
Pending:表明云原生网关正在创建中,需等待3分钟左右。
Running:表明云原生网关创建成功,并处于运行状态。
Listening:表明云原生网关处于运行状态,并监听集群中Ingress资源。
Failed:表明云原生网关处于非法状态,可以查看Status字段中的Message来进一步明确原因。
在多集群网关中添加或删除关联集群
通过控制台添加或删除
登录ACK One控制台,在左侧导航栏选择 。
在多集群网关页面上方的下拉框中选择要修改的目标多集群网关,然后在页面右上角单击编辑。
在弹出的面板中修改MseIngresConfig.yaml文件,修改
annotations
参数中的集群ID,然后单击更新。示例如下:
annotations: mse.alibabacloud.com/remote-clusters: ${cluster1-id},${cluster2-id}
${cluster1-id}
,${cluster2-id}
为添加的关联集群的ID,多个关联集群以英文半角逗号(,)间隔,您可以通过修改集群ID来添加或删除关联的集群。若创建多集群网关时未添加关联集群,则MseIngresConfig.yaml文件中没有
annotations
参数,添加关联集群时,您需要将以上示例添加到MseIngresConfig.yaml文件的metadata
对象中,再修改集群ID。
通过命令行方式添加或删除
在ACK One Fleet实例中,通过mseingressconfig对象的Annotation控制多集群网关中添加或删除关联集群。替换以下
${cluster1-id}
、${cluster2-id}
为您待添加的关联集群的ID,添加多个关联集群时,中间以英文半角逗号(,)间隔。annotations: mse.alibabacloud.com/remote-clusters: ${cluster1-id},${cluster2-id}
执行以下命令,查看关联集群是否已成功添加至多集群网关。
kubectl get mseingressconfig ackone-gateway -ojsonpath="{.status.remoteClusters}"
预期输出:
[{"clusterId":"c7fb82****"},{"clusterId":"cd3007****"}]
预期输出中已包含指定的ClusterID,并且无Failed信息,表明关联集群已成功添加至多集群网关。
执行以下命令,查看当前已添加到多集群网关的关联集群。
kubectl get mseingressconfig ackone-gateway
执行以下命令,在已有的基础上新增或删除关联集群。
mse.alibabacloud.com/remote-clusters=${cluster1},${cluster2}
表示待添加到多集群网关的集群列表。kubectl annotate mseingressconfig ackone-gateway mse.alibabacloud.com/remote-clusters=${cluster1},${cluster2} --overwrite=true
停用多集群网关功能
删除多集群网关将会对业务产生影响,请谨慎操作。
当您确定不再使用多集群网关时,需要先删除多集群网关,再关闭多集群网关功能,避免产生额外资源损失
通过控制台停用
登录ACK One控制台,在左侧导航栏选择 。
在多集群网关页面上方的下拉框中选择要删除的目标多集群网关,然后在页面右上角单击删除。
在弹出的对话框中输入待删除的多集群网关的名称,然后单击删除。
确认ACK One Fleet实例下的所有多集群网关都已删除,然后在页面右上角单击关闭功能。
在弹出的提示框中单击确定。
通过命令行停用
执行以下命令,删除多集群网关。
kubectl delete mseingressconfig ackone-gateway
执行以下命令,关闭多集群网关功能。
aliyun adcp UpdateHubClusterFeature --ClusterId <YOUR_FLEET_CLUSTERID> --GatewayEnabled false