啟用及停用標準服務控制器

注意:Cloud Service Mesh 1.6.8 以上版本會自動支援 Canonical Service。

使用 asmcli 安裝或升級 Cloud Service Mesh 時,系統會將標準服務控制器部署至叢集。標準服務控制器會將屬於相同邏輯服務的工作負載分組,並在 Google Cloud 控制台中提供完整的「服務」資訊主頁功能。部署控制器會在叢集的 asm-system 命名空間中建立 canonical-service-controller-manager 部署作業,不會影響服務或工作負載。

如果您未使用 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.29 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.29 asm
    
  2. 從叢集刪除控制器:

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

啟用代管標準服務控制器

如果您不想安裝叢集內控制器,可以改為啟用 Managed Canonical Service Controller,這個控制器會為網格中所有已註冊的叢集執行相同功能,您不必自行安裝或管理控制器。

代管控制器的設計宗旨是讓步給叢集內控制器。如果您要從叢內控制器遷移,則必須從每個執行叢內控制器的叢集刪除該控制器,代管控制器才能接管。詳情請參閱「停用叢集內 Canonical Service 控制器」。

如要啟用代管控制器,請按照下列步驟操作:

Anthos 功能頁面

  1. 前往 Google Cloud 控制台的「GKE Enterprise」叢集頁面。

    前往 GKE Enterprise 叢集頁面

  2. 在網格中「註冊」所有叢集。

  3. 前往 Google Cloud 控制台的「GKE Enterprise」功能頁面。

    前往 GKE Enterprise 功能頁面

  4. 按一下「Service Mesh」功能旁的「啟用」

幾分鐘後,受管理控制器會啟動,並為網格中已註冊叢集上執行的工作負載建立標準服務。執行 kubectl get canonicalservices --all-namespaces,確認已為網格中的工作負載建立一些標準服務。

建立 GKE 叢集

如果您在建立新的 GKE 叢集時使用「啟用 Cloud Service Mesh」選項,系統預設會安裝 Managed Canonical Service Controller。

執行下列指令,確認您正在執行 Managed Canonical Service Controller:

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'

如果無法順利完成 Canonical 服務的對帳程序,系統會顯示錯誤訊息,或類似下列訊息的輸出內容:

  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.20/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 APIasmcli),系統預設會安裝代管 Canonical Service Controller。

執行下列指令,確認您正在執行 Managed Canonical Service Controller:

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'

如果無法順利完成 Canonical 服務的對帳程序,系統會顯示錯誤訊息,或類似下列訊息的輸出內容:

  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.20/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

後續步驟

瞭解下列內容: