本文介绍如何在ACK One Fleet实例中开启和关闭多集群网关,以及如何将关联集群添加至多集群网关。
计费说明
使用多集群网关会产生一定的费用,关于多集群网关的计费信息,请参见普通实例计费概述。
前提条件
已完成RAM用户AliyunAdcpManagedMseRole授权。关于角色AliyunAdcpManagedMseRole的策略AliyunAdcpManagedMseRolePolicy详情如下。
已开启舰队管理功能,并从ACK One控制台获取Fleet实例的KubeConfig,通过kubectl连接至Fleet实例。
已添加关联集群,且关联集群与ACK One Fleet实例处于同一VPC。
开启多集群网关
确认阿里云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 Fleet实例的虚拟交换机ID并记录。
通过阿里云CLI获取
执行以下命令,获取交换机实例ID。
aliyun adcp DescribeHubClusterDetails --ClusterId <your_fleet_clusterid>
从预期输出的
VSwitches
中复制一个交换机实例ID。
通过控制台获取
登录ACK One控制台,在左侧导航栏,选择舰队 > 舰队信息。
在舰队信息页面,单击基础信息页签,在关联云资源区域,找到虚拟交换机,然后复制对应的交换机实例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 Fleet实例中,通过mseingressconfig对象的Annotation控制多集群网关中添加或删除关联集群。替换以下
${cluster1}
、${cluster2}
为您待添加的关联集群的ID,添加多个关联集群时,中间以英文半角逗号(,)间隔。annotations: mse.alibabacloud.com/remote-clusters: ${cluster1},${cluster2}
执行以下命令,查看关联集群是否已成功添加至多集群网关。
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
停用多集群网关功能
删除多集群网关将会对业务产生影响,请谨慎操作。
当您确定不再使用多集群网关时,需要先删除多集群网关,再关闭多集群网关功能,避免产生额外资损。
执行以下命令,删除多集群网关。
kubectl delete mseingressconfig ackone-gateway
执行以下命令,关闭多集群网关功能。
aliyun adcp UpdateHubClusterFeature --ClusterId <your_fleet_clusterid> --GatewayEnabled false