解除安裝叢內 Cloud Service Mesh
本頁面說明如何在使用 Istio API 時,解除安裝叢集內 Cloud Service Mesh。如果您使用 Compute Engine API,則無須採取任何步驟。如要瞭解兩者的差異,請參閱 Cloud Service Mesh 總覽。
按照這些操作說明解除安裝叢集內 Cloud Service Mesh 時,所有設定都會移除。
如要解除安裝代管 Cloud Service Mesh,請改用代管解除安裝指南。
如要從叢集內遷移至受管理,請改為按照遷移指南操作。
移除 Cloud Service Mesh 的影響
解除安裝 Cloud Service Mesh 前,請先瞭解叢集和工作負載會移除哪些功能。從工作負載中移除 Cloud Service Mesh Proxy 並重新啟動後,應用程式就會恢復標準 Kubernetes 網路行為。
安全性
移除 Cloud Service Mesh 後,您將無法使用下列安全性功能:
- 相互傳輸層安全標準 (mTLS) 加密:服務之間的流量不再透過網格管理的 mTLS 憑證加密傳輸。
- 授權政策:系統不再強制執行 Mesh
AuthorizationPolicy自訂資源。您必須設定 KubernetesNetworkPolicy資源或應用程式層級的驗證和授權,才能限制流量。
觀測能力
移除 Cloud Service Mesh 後,您將無法使用下列可觀測性功能:
- 遙測和指標:系統會停止自動收集第 7 層指標 (例如要求率、錯誤率和延遲時間)。系統不會再自動將網格遙測資料擷取到 Cloud Monitoring。標準 GKE 指標不受影響。
- 資訊主頁和 SLO:系統不會再填入預先設定的 Cloud Service Mesh 資訊主頁,以及Google Cloud 控制台中的服務水準目標 (SLO) 監控。
- 存取記錄和追蹤:系統不會再產生附屬代理程式存取記錄,其中包含用戶端 mTLS 身分和自動分散式追蹤。
服務探索和網路復原能力
移除 Cloud Service Mesh 後,您將無法使用下列網路和復原功能:
- 網路復原能力:工作負載會失去 Sidecar 層級的復原能力功能,包括自動重試、可設定的要求逾時、斷路器、離群值偵測和連線集區管理。應用程式必須直接管理連線失敗和重試。
- 多叢集服務探索:跨叢集端點探索和路由不再透過網格運作,而是透過機群中的多個叢集運作。服務只能使用標準 DNS,探索本機叢集內的端點。
解除安裝 Cloud Service Mesh
使用下列指令解除安裝所有 Cloud Service Mesh 元件。
為避免中斷應用程式流量:
- 將所有 STRICT mTLS 政策降級為 PERMISSIVE。
- 移除可能封鎖流量的 AuthorizationPolicy。
如果已啟用,請在命名空間中停用 Sidecar 自動插入功能。執行下列指令,顯示命名空間標籤:
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。
從叢集刪除
validatingwebhooksconfiguration和mutatingwebhookconfiguration(如果有的話):kubectl delete validatingwebhookconfiguration,mutatingwebhookconfiguration -l operator.istio.io/component=Pilot,istio.io/owned-by!=mesh.googleapis.com所有工作負載都啟動且未觀察到任何 Proxy 後,即可安全地刪除叢內控制層,停止計費。
如要移除叢內控制平面,請執行下列指令:
istioctl uninstall --purge如果沒有其他控制平面,您可以刪除命名空間,移除所有 Cloud Service Mesh 資源。
istio-system否則,請刪除與 Cloud Service Mesh 修訂版本對應的服務。這樣可避免刪除共用資源,例如 CRD。(選用) 移除 Istio CR、Istio CRD、istio-(修訂版本) configmap、asm-options configmap、
istio-system和asm-system命名空間,從叢集中移除服務網格,或在其他與 Istio API 相容的服務網格中使用這些命名空間。移除 Istio CR:
kubectl delete gateways,virtualservices,destinationrules,serviceentries,envoyfilters,sidecars,peerauthentications,requestauthentications,authorizationpolicies,telemetries,wasmplugins,proxyconfigs --all --all-namespaces移除 Istio CRD:
kubectl get crds -o name | grep --color=never 'istio.io' | xargs kubectl delete移除 istio-(修訂版本) configmap。如果刪除
istio-system命名空間,可以略過這個步驟。kubectl delete configmap istio-RELEASE_CHANNEL -n istio-system將 RELEASE_CHANNEL 替換成發布管道
移除
istio-system命名空間:kubectl delete namespace istio-system --ignore-not-found=true移除
asm-system命名空間:kubectl delete namespace asm-system --ignore-not-found=true確認刪除作業是否成功:
kubectl get ns ``` The output should indicate a `Terminating` state and return as shown, otherwise you might have to manually delete any remaining resources in the namespaces and try again. ```sh NAME STATUS AGE istio-system Terminating 71m asm-system Terminating 71m ```
如果您要刪除叢集或已刪除叢集,請確保每個叢集都已從機群取消註冊。
如要停止在機群層級使用 Cloud Service Mesh,請停用機群主專案的服務網格功能。
gcloud container hub mesh disable --project FLEET_PROJECT_ID其中 FLEET_PROJECT_ID 是機群主機專案的 ID。
完成這些步驟後,系統會從叢集中移除所有 Cloud Service Mesh 元件,包括 Proxy、叢集內憑證授權單位,以及 RBAC 角色和繫結。在安裝過程中,系統會將必要權限授予 Google 擁有的服務帳戶,以便在叢集內建立服務網格資源。這些解除安裝指示不會撤銷權限,因此日後可以順利重新啟用 Cloud Service Mesh。