準備升級先前的 Knative Serving 安裝項目,並遷移工作負載,方法是設定指令列環境、建立環境變數,以及下載遷移指令碼。
事前準備
- 升級前,請先詳閱並確認符合相關規定。 
- 根據預設,Cloud Shell 包含最新版本的 - gcloud和- kubectl指令。如果您選擇使用本機的指令列環境,請務必符合下列基本規定:- gcloud346.0.0 以上版本
- kubectl1.21 以上版本的用戶端
 
- 在升級和遷移程序中,您必須完成本頁面的準備步驟。 - 重要事項:程序中使用的所有指令都依賴您在下方設定的環境變數。舉例來說,如果關閉 Cloud Shell 或工作階段逾時,請務必重設必要的環境變數。 
設定環境
- 如要使用 Cloud Shell,請在 Google Cloud 控制台中開啟 Cloud Shell: - 重要事項:Cloud Shell 設有用量限制,且可能會逾時。如果工作階段逾時,請務必重設必要環境變數。 
- 建立下列必要環境變數: - 為 Google Cloud 專案和叢集詳細資料設定變數: - export PROJECT_ID=PROJECT_ID export CLUSTER_NAME=CLUSTER_NAME export CLUSTER_LOCATION=CLUSTER_LOCATION- 更改下列內容: - 將 PROJECT_ID 替換為專案的 ID。 Google Cloud
- CLUSTER_NAME,並將其替換為叢集 ID 或叢集的完整 ID。
- CLUSTER_LOCATION,並將 region 或 zone 替換為叢集所在的區域或可用區。
 
- 視設定而定,您必須找出叢集中處理流量的輸入閘道。請務必找出實際設定及處理流量的 Istio 版本。 - 如果您使用 Istio 的隨附版本,請確認 Ingress 服務名稱在 - gke-system命名空間中為- istio-ingress:- kubectl get svc istio-ingress -n gke-system- 結果:系統會傳回設定的詳細資料。 
- 如果您安裝「Istio 外掛程式」,請務必取得服務的 IP 位址,並找出已設定至網域的服務,藉此判斷已設定並主動處理流量的 Ingress 閘道。 - 取得每個 Ingress 服務的 - EXTERNAL-IP位址:- 執行下列指令,取得「隨附的 Istio 版本」( - istio-ingress) 和「Istio 外掛程式」(- istio-ingressgateway) 兩項 Ingress 服務的設定詳細資料:- kubectl get svc istio-ingress -n gke-system kubectl get svc istio-ingressgateway -n istio-system- 輸出範例: - 請記下每個服務的 - EXTERNAL-IP值。- NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE istio-ingress LoadBalancer 11.11.1.111 12.345.678.910 15020:31265/TCP,80:30059/TCP,443:32004/TCP 8d NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE istio-ingressgateway LoadBalancer 22.22.2.222 10.987.654.321 15021:32747/TCP,80:30695/TCP,443:32695/TCP,15012:32369/TCP,15443:30909/TCP 88d
- 透過自訂網域的 DNS 記錄,找出設定用於處理流量的外部 IP 位址: - 前往 Knative serving 網域對應頁面: 
- 按一下服務右側三點垂直刪節號圖示,然後按一下「DNS RECORDS」(DNS 記錄) 顯示所有的 DNS 記錄:   - 以上述範例為例,如果 DNS 記錄設定為 - istio-ingressgateway服務的- 10.987.654.321IP 位址,則表示 Istio 外掛程式的 Ingress 閘道正在使用中,並提供流量服務。
 
 
 
- 為叢集提供流量的 Ingress 服務名稱和命名空間設定變數: - export INGRESS_NAME=INGRESS_NAME export INGRESS_NAMESPACE=INGRESS_NAMESPACE- 更改下列內容: - 將 INGRESS_NAME 改成您在先前步驟中識別的 Ingress 服務名稱。 
- 將 INGRESS_NAMESPACE 替換為您在上一個步驟中識別的 Ingress 服務命名空間。 
 
 
- 設定 Google Cloud CLI: - gcloud config set project ${PROJECT_ID} gcloud container clusters get-credentials ${CLUSTER_NAME} --region ${CLUSTER_LOCATION}
- 私人叢集: - 如果您已從要執行遷移指令碼的用戶端存取私人叢集,可以跳至下一個步驟。 
- 如果私人叢集已啟用 - master-authorized-network,您可以將用戶端的 IP 位址新增至- master-authorized-networks允許清單,從要執行遷移指令碼的用戶端啟用存取權:- gcloud container clusters update ${CLUSTER_NAME} \ --region=${CLUSTER_LOCATION} \ --enable-master-authorized-networks \ --master-authorized-networks $(curl ifconfig.me)/32
 
- 下載 Knative serving 遷移指令碼: - TMP_DIR=$(mktemp -d) gcloud storage cp gs://crfa-to-hub-upgrade/migration-addon.sh $TMP_DIR cd $TMP_DIR chmod +x ./migration-addon.sh
- 執行下列指令來停用「縮減至零」,否則在更新主節點時,縮放作業會失敗並導致錯誤: - kubectl patch cm config-autoscaler -n knative-serving -p '{"data":{"enable-scale-to-zero": "false"}}'- 請注意,這項升級和遷移程序的最後一個步驟是重新啟用「縮減至零」。