準備升級先前的 Knative Serving 安裝項目,並遷移工作負載,方法是設定指令列環境、建立環境變數,以及下載遷移指令碼。
事前準備
升級前,請先詳閱並確認符合相關規定。
根據預設,Cloud Shell 包含最新版本的
gcloud
和kubectl
指令。如果您選擇使用本機的指令列環境,請務必符合下列基本規定:gcloud
346.0.0 以上版本kubectl
1.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.321
IP 位址,則表示 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"}}'
請注意,這項升級和遷移程序的最後一個步驟是重新啟用「縮減至零」。