启用和停用规范化服务控制器

注意:Cloud Service Mesh 1.6.8 及更高版本会自动支持规范化服务。

使用 asmcli 安装或升级 Cloud Service Mesh 时,它会将规范化服务控制器部署到您的集群。规范化服务控制器会将属于同一逻辑服务的工作负载分组到一起,这是获得 Google Cloud 控制台中“服务”信息中心的完整功能所必需的。部署控制器会在 asm-system 命名空间中的集群中创建 canonical-service-controller-manager Deployment,这不会影响您的服务或工作负载。

如果您未使用 asmcli 工具安装 Cloud Service Mesh,您的集群可能未启用规范化服务控制器。如需确定集群上是否启用了规范化服务控制器,请运行以下命令:

kubectl get services -n asm-system

启用集群内规范化服务控制器

如果规范化服务控制器未启用,您可以按照以下步骤启用它:

  1. 将包含控制器的 kpt 软件包下载到当前工作目录,请运行以下命令:

    kpt pkg get https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages.git/asm@release-1.22 asm
    
  2. 应用控制器配置:

    kubectl apply -f asm/canonical-service/controller.yaml
    

停用集群内规范化服务控制器

如要停用规范化服务控制器,请执行以下操作:

  1. 将包含控制器的 kpt 软件包下载到当前工作目录,请运行以下命令:

    kpt pkg get https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages.git/asm@release-1.22 asm
    
  2. 如要从集群中删除控制器,请运行以下命令:

    kubectl delete -f asm/canonical-service/controller.yaml
    

启用代管式规范化服务控制器

如果您不想安装集群内控制器,则可以改为启用代管式规范化服务控制器,该控制器会为网格中的所有已注册集群执行相同的功能,而无需自行安装或管理控制器。

代管式控制器的优先级低于集群内控制器。如果您要从集群内控制器进行迁移,则必须从其运行的每个集群中删除集群内控制器,以便代管式控制器进行接管。如需了解详情,请参阅停用集群内规范化服务控制器

如需启用代管式控制器,请执行以下操作:

创建 GKE 集群

如果您在创建新的 GKE 集群时使用了启用 Cloud Service Mesh 选项,则默认情况下已安装代管式规范化服务控制器。

通过运行以下命令,确保您已运行代管式规范化服务控制器:

gcloud beta container hub mesh describe --project=PROJECT_ID

说明指出规范化服务已成功协调:

  projects/<your project number>/locations/global/memberships/<your cluster name>:
    code: OK
    description: |-
      Revision(s) ready for use: asm-managed.
      All Canonical Services have been reconciled successfully.
    servicemeshFeatureState: {}
    updateTime: '2021-11-16T21:10:36.289467777Z'

如果未成功协调规范化服务,则会出现错误消息或类似于以下消息的输出:

  projects/<your project number>/locations/global/memberships/<your cluster name>:
    code: OK
    description: |-
      Revision(s) ready for use: istiod-asm-173-6.
      The Managed Canonical Service Controller is yielding to the in-cluster controller.  See https://cloud.google.com/service-mesh/v1.22/docs/canonical-service-controller-enable-and-disable#disable-in-cluster-service-controller for instructions on removing the in-cluster controller.
    servicemeshFeatureState: {}
    updateTime: '2021-11-16T21:05:43.286828851Z'
  lifecycleState: ENABLED

代管式控制层面安装

如果您安装了托管式 Cloud Service Mesh(使用 Fleet API 或 asmcli),则系统会默认安装代管式规范化服务控制器。

通过运行以下命令,确保您已运行代管式规范化服务控制器:

gcloud beta container hub mesh describe --project=PROJECT_ID

说明指出规范化服务已成功协调:

  projects/<your project number>/locations/global/memberships/<your cluster name>:
    code: OK
    description: |-
      Revision(s) ready for use: asm-managed.
      All Canonical Services have been reconciled successfully.
    servicemeshFeatureState: {}
    updateTime: '2021-11-16T21:10:36.289467777Z'

如果未成功协调规范化服务,则会出现错误消息或类似于以下消息的输出:

  projects/<your project number>/locations/global/memberships/<your cluster name>:
    code: OK
    description: |-
      Revision(s) ready for use: istiod-asm-173-6.
      The Managed Canonical Service Controller is yielding to the in-cluster controller.  See https://cloud.google.com/service-mesh/v1.22/docs/canonical-service-controller-enable-and-disable#disable-in-cluster-service-controller for instructions on removing the in-cluster controller.
    servicemeshFeatureState: {}
    updateTime: '2021-11-16T21:05:43.286828851Z'
  lifecycleState: ENABLED

后续步骤

了解: