解除安裝 Cloud Service Mesh
如果您使用 Istio API,本頁會說明如何解除安裝 Cloud Service Mesh。如果您使用的是 Compute Engine API,則不需要執行任何步驟。請參閱 Cloud Service Mesh 總覽,瞭解兩者的差異。
解除安裝 Cloud Service Mesh
使用下列指令卸載所有 Cloud Service Mesh 元件。這些指令也會刪除 istio-system 命名空間和所有自訂資源定義 (CRD),包括您套用的任何 CRD。
- 如要避免應用程式流量中斷,請按照下列步驟操作: - 將所有 STRICT mTLS 政策降級為 PERMISSIVE。
- 移除可能封鎖流量的 AuthorizationPolicy。
 
- 在這個叢集中停用自動管理功能 (無論是直接套用還是使用機群預設設定): - gcloud container fleet mesh update \ --management manual \ --memberships MEMBERSHIP_NAME \ --project FLEET_PROJECT_ID \ --location MEMBERSHIP_LOCATION- 更改下列內容: - MEMBERSHIP_NAME 是您驗證叢集已註冊至機群時列出的會員名稱。
- MEMBERSHIP_LOCATION 是會員身分的所在地 (區域或 global)。
 
- 停用命名空間的補充資訊自動插入功能(如果已啟用)。執行下列指令,顯示命名空間標籤: - kubectl get namespace YOUR_NAMESPACE --show-labels- 輸出結果會與下列內容相似: - NAME STATUS AGE LABELS demo Active 4d17h istio.io/rev=asm-181-5 - 如果在 - LABELS欄下方的輸出內容中看到- istio.io/rev=,請移除:- kubectl label namespace YOUR_NAMESPACE istio.io/rev-- 如果在 - LABELS欄下方的輸出內容中看到- istio-injection,請移除:- kubectl label namespace YOUR_NAMESPACE istio-injection-- 如果您沒有看到 - istio.io/rev或- istio-injection標籤,表示命名空間未啟用自動插入功能。
- 重新啟動已插入 Sidecar 的工作負載,以移除 Proxy。 
- 如果您使用的是受管理的 Cloud Service Mesh,請檢查叢集中的控制層實作,這有助於您在後續步驟中刪除相關資源。 
- 如果您使用的是代管 Cloud Service Mesh,請移除叢集中的所有 - controlplanerevision資源:- kubectl delete controlplanerevision asm-managed asm-managed-rapid asm-managed-stable -n istio-system --ignore-not-found=true
- 刪除叢集中的 webhook (如果有的話)。 - 叢集內 Cloud Service Mesh- 刪除 - validatingwebhooksconfiguration和- mutatingwebhookconfiguration。- kubectl delete validatingwebhookconfiguration,mutatingwebhookconfiguration -l operator.istio.io/component=Pilot- 代管 Cloud Service Mesh- A. 刪除 - validatingwebhooksconfiguration。- kubectl delete validatingwebhookconfiguration istiod-istio-system-mcp- B. 刪除所有 - mutatingwebhookconfiguration。- kubectl delete mutatingwebhookconfiguration istiod-RELEASE_CHANNEL
- 所有工作負載都啟動且沒有發現任何 Proxy 後,您就可以安全地刪除叢集內控制平面,停止計費。 - 如要移除叢集內控制平面,請執行下列指令: - istioctl uninstall --purge- 如果沒有其他控制平面,您可以刪除 - istio-system命名空間,以便移除所有 Cloud Service Mesh 資源。否則,請刪除與 Cloud Service Mesh 修訂版本相對應的服務。這樣可避免刪除 CRD 等共用資源。
- 刪除 - istio-system和- asm-system命名空間:- kubectl delete namespace istio-system asm-system --ignore-not-found=true
- 檢查刪除作業是否成功: - kubectl get ns- 輸出內容應顯示 - Terminating狀態,並如圖所示傳回,否則您可能必須手動刪除命名空間中的所有剩餘資源,然後再試一次。- NAME STATUS AGE istio-system Terminating 71m asm-system Terminating 71m
- 如果您要刪除叢集,或已刪除叢集,請務必確保每個叢集都已從機群中取消註冊。 
- 如果您已啟用代管型 Cloud Service Mesh 機群預設設定,但想為日後的叢集停用這項設定,請停用該設定。如果您只想從單一叢集中解除安裝,可以略過這個步驟。 - gcloud container hub mesh disable --fleet-default-member-config --project FLEET_PROJECT_ID- 其中 FLEET_PROJECT_ID 是車隊主機專案的 ID。 
- 如果您已啟用代管 Cloud Service Mesh,請檢查並刪除代管資源 (如有): - 刪除 - mdp-controller部署:- kubectl delete deployment mdp-controller -n kube-system
- 如果您已實作 - TRAFFIC_DIRECTOR控制層,請清除透明健康狀態檢查資源。這些檔案通常會自動移除,但您可以按照下列步驟確認是否已清除:- 刪除 - snkdaemonset。- kubectl delete daemonset snk -n kube-system
- 刪除防火牆規則。 - gcloud compute firewall-rules delete gke-csm-thc-FIRST_8_CHARS_OF_CLUSTER_ID- 更改下列內容: - FIRST_8_CHARS_OF_CLUSTER_ID 是特定叢集的叢集 ID 前 8 個字元。
 
 
- 檢查是否有 - istio-cni-plugin-config設定檔:- kubectl get configmap istio-cni-plugin-config -n kube-system- 刪除 - istio-cni-plugin-config設定檔地圖 (如有):- kubectl delete configmap istio-cni-plugin-config -n kube-system
- 刪除 - istio-cni-nodedaemonset:- kubectl delete daemonset istio-cni-node -n kube-system
 
- 如果您要解除安裝受管理的 Cloud Service Mesh,並保留叢集,請與支援團隊聯絡,確保所有Google Cloud 資源都已清除。如果您未按照此步驟操作,系統可能也會繼續重新建立 - istio-system命名空間和設定對應項目。
完成這些步驟後,系統會有系統地從叢集中移除所有 Cloud Service Mesh 元件,包括 Proxy、叢集內憑證授權單位,以及 RBAC 角色和繫結。在安裝過程中,Google 擁有的服務帳戶會獲得必要權限,以便在叢集中建立服務中介資源。這些解除安裝操作說明不會撤銷這些權限,方便日後順利重新啟用 Cloud Service Mesh。