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

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

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

如果您未使用 asmcli 工具安装 Anthos 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.14 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.14 asm
    
  2. 如要从集群中删除控制器,请运行以下命令:

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

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

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

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

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

Anthos 功能页面

  1. 在 Google Cloud 控制台中,前往 GKE Enterprise 集群页面。

    前往 GKE Enterprise 集群页面

  2. “注册”网格中的所有集群。

  3. 在 Google Cloud 控制台中,前往 GKE Enterprise 功能页面。

    前往 GKE Enterprise 功能页面

  4. 点击“服务网格”功能旁边的启用

几分钟后,代管式控制器将会为网格中已注册的集群上运行的工作负载激活并创建规范化服务。运行 kubectl get canonicalservices --all-namespaces 以确认已为网格中的工作负载创建了一些规范化服务。

创建 GKE 集群

如果您在创建新的 GKE 集群时使用了启用 Anthos 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.14/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

代管式控制层面安装

如果您安装了代管式 Anthos Service Mesh(使用 Fleet API 或使用 [asmcli(/service-mesh/docs/managed/provision-managed-anthos-service-mesh-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.14/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

后续步骤

了解: