請按照本指南操作,將現有的 Knative Serving 安裝項目遷移至 Cloud Service Mesh 機群。Google Cloud
Knative Serving 的舊版「免費試用」版本 (也稱為「GKE 外掛程式」),內含 Istio 1.4 的精簡版本,但 Anthos 1.8 以上版本已不再支援。
將 Knative Serving 安裝項目升級為使用機群和 Cloud Service Mesh,可改善產品升級和管理獨立性,並提升 GKE Enterprise 功能的整合程度。進一步瞭解新功能和異動內容。
遷移安裝項目有兩種方式:
建議的程序是將工作負載從安裝舊版 Knative Serving 的叢集 (「GKE 外掛程式」) 遷移至新叢集,並在新叢集安裝及設定新版 Knative Serving 機群。雖然這個程序相對簡單且理想,但如果工作負載會提供流量,遷移至新建立的叢集就會導致停機。如要執行這項遷移路徑,請在新叢集中執行下列操作:
- 將 Knative serving 安裝為機群元件。
將服務部署到新安裝的項目。
舉例來說,您可以按照部署現有服務修訂版本的指示,個別下載每個服務的 YAML 設定檔,然後將每個 YAML 檔案部署至 Knative Serving 叢集安裝作業的機群中:
在舊版安裝作業中,您可以執行下列指令下載 YAML 設定檔,例如
service.yaml
:gcloud run services describe SERVICE --format export > service.yaml
將 SERVICE 改為 Knative 服務名稱。
在新機群元件安裝作業中,您可以執行下列指令來部署相同的
service.yaml
:gcloud run deploy service.yaml --cluster CLUSTER_NAME --cluster-location CLUSTER_LOCATION --project PROJECT_ID
取代:
CLUSTER_NAME 改為 Knative Serving 新機群元件安裝項目中的叢集名稱。
CLUSTER_LOCATION,並在 Knative Serving 的新機群元件安裝中,使用叢集的區域或地區。
PROJECT_ID 替換為 Google Cloud 專案的 ID,新安裝的 Knative Serving 機群元件就位於該專案中。
替代方案:如果使用者無法建立新叢集,且必須遷移現有的 Knative serving 安裝項目,可以按照本指南中的步驟執行下列操作:
- 移除先前的「GKE 外掛程式」和 Istio 資源。
- 安裝新的機群資源。
- 遷移至 Cloud Service Mesh,然後遷移流量。
- 清除所有過時和未使用的資源。
本指南將逐步說明如何升級現有且運作中的 Knative Serving 安裝項目 (包括所有工作負載),以符合 GKE Enterprise 1.8 以上版本的需求。
事前準備
這項升級程序只能在先前安裝 Knative Serving 做為「GKE 外掛程式」的 Google Kubernetes Engine 叢集上執行。
檢查是否已安裝「GKE 外掛程式」。
如要檢查 Knative Serving 安裝是否為「GKE 外掛程式」,請執行下列指令:
gcloud container clusters describe \ CLUSTER_NAME \ --region CLUSTER_LOCATION \ --project PROJECT_ID --format='get(addonsConfig.cloudRunConfig)'
取代:
- CLUSTER_NAME 改為叢集名稱。
- CLUSTER_LOCATION 替換為叢集所在的位置。
- 將 PROJECT_ID 替換為專案的 ID。 Google Cloud
結果:
- 未安裝「GKE add-on」:
- 如果從未安裝外掛程式,終端機不會傳回任何內容。
- 如果先前已解除安裝外掛程式,則會傳回
disabled=true
。
- 已安裝「GKE 外掛程式」:如果叢集已安裝外掛程式,系統會傳回外掛程式的設定詳細資料。範例:
loadBalancerType=LOAD_BALANCER_TYPE_EXTERNAL
- 範例:
-
以下範例顯示 Knative Serving 是透過「GKE 外掛程式」安裝在
my-addon-cluster
叢集中,且已設定為處理外部流量:gcloud container clusters describe my-addon-cluster \ --region us-central1-c --project my-gcp-project \ --format='get(addonsConfig.cloudRunConfig)'
回應:
loadBalancerType=LOAD_BALANCER_TYPE_EXTERNAL
您必須在 Google Cloud 專案中具備足夠的權限,才能符合叢集、機群和 Cloud Service Mesh 的需求:
如果您具備 Google Cloud 專案的「擁有者」角色,則您具備的權限不只足夠建立叢集、安裝及設定 Knative 服務。
請注意,Cloud Service Mesh 權限需求也符合安裝及設定 Knative 服務的所有權限需求。
使用其他角色和最低需求:
視貴機構而定,您也可以透過下列預先定義的角色組合,滿足權限需求:
Google Cloud 專案權限:基本編輯者角色
車隊權限:GKE Hub 管理員或包含下列權限的角色:
gkehub.features.create
gkehub.features.update
叢集權限: Kubernetes Engine 管理員角色:
- Kubernetes Engine 管理員
- Kubernetes Engine 叢集管理員
僅支援 Cloud Service Mesh 1.18 版。
Cloud Service Mesh 規定叢集必須使用至少 4 個 vCPU 的機器類型,例如
e2-standard-4
。如要瞭解需求,請參閱 Cloud Service Mesh 安裝指南。如要變更現有叢集的機器類型,請參閱將工作負載遷移至其他機器類型。建議您使用 Cloud Shell 做為環境,在執行這項程序時,執行指令和遷移指令碼。請注意,Cloud Service Mesh 安裝指令碼僅支援 Linux 或 Cloud Shell。
如果現有的 Knative serving 安裝作業使用 GKE 的 Istio 外掛程式,您必須遷移至 Cloud Service Mesh Managed Control Plane。目前不支援從 GKE 外掛程式的 Istio 遷移至 Cloud Service Mesh 叢集內控制層。
升級 Knative serving 並遷移工作負載
如要升級現有的 Knative Serving 安裝項目並遷移工作負載,請執行指令碼,自動完成大部分步驟,並在整個過程中輸入提示。