設定 Istio 受管理的附加元件
Istio on IBM Cloud® Kubernetes Service 提供 Istio 的無縫安裝、Istio 控制平面元件的自動更新及生命週期管理,以及與平台記載和監視工具的整合。
從叢集移除其他 Istio 安裝
如果您先前曾透過 IBM Helm 圖表或其他方式,在叢集中安裝了 Istio,請在啟用受管 Istio 附加元件之前,先清理該 Istio 安裝。
開始之前: 確認群集中已安裝 Istio。 執行 kubectl get namespaces 並在輸出中尋找 istio-system 命名空間。
要移除其他 Istio 安裝:
-
如果您是透過 IBM Cloud Istio Helm 中的圖表來安裝 Istio,
- 解除安裝 Istio Helm 部署。
helm del istio --purge ``` 2. 如果您是使用 Helm 2.9 或更早版本,請刪除額外的工作資源。 ```sh {: pre} kubectl -n istio-system delete job --all ``` 3. 解除安裝程序可能會花費 10 分鐘。 在叢集裡安裝 Istio 受管理附加程式之前,請先執行 `kubectl get namespaces`,然後驗證已移除 `istio-system` 名稱空間。 -
如果您是手動安裝 Istio,或是使用 Istio 社群的 Helm 圖表進行安裝,請參閱 Istio 中的解除安裝說明文件。
-
如果您先前在叢集裡安裝了 BookInfo,請清除那些資源。
- 切換至 Istio 檔案位置的目錄。
cd <filepath>/istio-1.29.5 ``` 2. 刪除叢集裡的所有 BookInfo 服務、Pod 及部署。 ```sh {: pre} samples/bookinfo/platform/kube/cleanup.sh ``` 3. 解除安裝程序可能會花費 10 分鐘。 在叢集裡安裝 Istio 受管理附加程式之前,請先執行 `kubectl get namespaces`,然後驗證已移除 `istio-system` 名稱空間。
安裝 Istio 附加程式
取代社群 Istio,您可以安裝管理的 Istio 附加元件。
開始之前
-
確保您具有 IBM Cloud Kubernetes Service的 Writer 或 Manager IBM Cloud IAM 服務存取角色。
-
建立一個標準的 Kubernetes 叢集,至少包含 3 個工作節點,每個節點均具備 4 個核心及 16 GB 記憶體(
b3c.4x16)或更高規格。 -
您無法在群集中同時執行社群 Istio 與受管的 Istio 附加元件。 如果使用的是現有叢集,並且先前在叢集裡已使用 IBM Helm Chart 或透過其他方法安裝了 Istio,請清除該 Istio 安裝。
-
標準多區域叢集: 確保為 IBM Cloud 基礎架構帳戶啟用 虛擬遞送及轉遞(VRF)。 若要啟用 VRF,請參閱 啟用 VRF。 若要檢查是否已啟用 VRF,請使用
ibmcloud account show指令。 如果您無法或不想啟用 VRF,請啟用 VLAN Spanning。 若要執行此操作,您需要具備「管理網路 VLAN 跨域基礎架構」權限,或者您可以向帳戶擁有者申請啟用此權限。 若要檢查 VLAN 跨域功能是否已啟用,請使用ibmcloud ks vlan spanning get --region REGION指令。
從主控台安裝 Istio 附加元件
-
在 叢集儀表板中,點選您要安裝「Istio」附加元件的叢集名稱。
-
請前往「附加元件」區段。
-
在「受管理 Istio」卡上,按一下安裝。
-
再按一下安裝。
-
在「受管理 Istio」卡上,驗證是否列出附加程式。
使用 CLI 安裝 Istio 附加元件
請登入您的帳戶。 適用的話,請將適當的資源群組設為目標。 設定叢集的環境定義。
-
將「
container-service」外掛程式更新至最新版本。ibmcloud update && ibmcloud plugin update container-service -
檢視支援的 Istio 版本。
ibmcloud ks addon-versions --addon istio -
啟用
istio附加程式。 已安裝正式發佈的「Istio」託管附加元件( 1.29.5 )的預設版本。ibmcloud ks cluster addon enable istio --cluster CLUSTER_NAME_OR_ID -
確認受管理的 Istio 附加元件的狀態為
Addon Ready。ibmcloud ks cluster addon ls --cluster CLUSTER_NAME_OR_ID輸出範例
NAME Version Health State Health Status istio 1.29.5 normal Addon Ready -
您也可以查看附加程式的個別元件,以確定已部署 Istio 服務及其對應的 Pod。
kubectl get svc -n istio-systemkubectl get pods -n istio-system -
下一步,您可以將應用程式包含在 Istio 服務網格中。
安裝 istioctl CLI
在電腦上安裝 istioctl CLI 用戶端。 如需相關資訊,請參閱 istioctl 指令參考手冊。
- 檢查您在群集中安裝的 Istio 版本。
istioctl version - 將與群集 Istio 版本相符的
istioctl下載到您的電腦。curl -L https://istio.io/downloadIstio | ISTIO_VERSION=1.29.5 sh - - 導覽至 Istio 套件目錄。
cd istio-1.29.5 - Linux 和 macOS 使用者: 將
istioctl用戶端新增至PATH系統變數。export PATH=$PWD/bin:$PATH
自訂 Istio 安裝
您可以透過編輯 managed-istio-custom ConfigMap 資源,自訂一組 Istio 配置選項。 這些設定包括對控制平面及服務網格中監視、記載及網路功能的額外控制。
- 說明
managed-istio-customConfigMap 資源,以檢視其內容和內嵌文件。kubectl describe cm managed-istio-custom -n ibm-operators - 編輯
managed-istio-customConfigMap 資源。kubectl edit cm managed-istio-custom -n ibm-operators - 在
data區段中,新增下列一或多個配置選項的<key>: "<value>"配對。
istio-components-pilot-requests-cpu-
- 預設值:
"500m" - 在「
milli」的 CPU 設定中,為「istiod」元件 Pod 配置 CPU 請求。 變更此值時請小心。 將此值設得太低可能會導致控制平面無法正常運作,而將此值設得太高可能會導致無法排程istiodPod。
- 預設值:
istio-global-logging-level-
- 預設值:
"default:info" - 定義控制平面元件的日誌範圍及日誌訊息等級。 範圍代表控制平面元件內的功能範圍,且每一個範圍都支援特定的日誌資訊層次。
default記載範圍 (適用於非分類日誌訊息) 會在基本info層次套用至控制平面中的所有元件。 - 若要為個別元件範圍指定日誌等級,請輸入以逗號分隔的範圍與等級清單,例如:
"<scope>:<level>,<scope>:<level>"。 如需各控制平面元件的範圍清單以及記錄訊息的資訊等級,請參閱 Istio 元件記錄文件。 若要變更資料平面的記載層次,請使用istioctl proxy-config log <pod> --level <level>指令。
- 預設值:
istio-global-outboundTrafficPolicy-mode-
- 預設值:
"ALLOW_ANY" - 預設情況下,服務網格中所有外發流量均被允許。 如果要封鎖從服務網眼到未定義在服務登錄中或在服務網眼內沒有
ServiceEntry的任何主機的出埠資料流量,請設為REGISTRY_ONLY。
- 預設值:
istio-global-proxy-accessLogFile-
- 預設值:
"" - Envoy 代理伺服器會將存取資訊輸出至其標準輸出。 當您對 Ingress 或 Egress 問題進行除錯時,這些日誌很有用。 若要在為 Envoy 容器執行
kubectl logs指令時檢視此存取資訊,請設定為"/dev/stdout"。
- 預設值:
istio-monitoring-telemetry-
- 預設值:
"true" - 預設情況下,遙測指標與 Prometheus 的支援功能已啟用。 若要移除與遙測度量相關聯的任何效能問題,並停用所有監視,請設為
"false"。
- 預設值:
istio-meshConfig-enableTracing-
- 預設值:
"true" - 預設情況下, Istio 會針對每 100 個請求中的 1 個生成追蹤區段。 若要停用追蹤跨距,請設為
"false"。
- 預設值:
istio-pilot-traceSampling-
- 預設值:
"1.0" - 預設情況下, Istio 會針對每 100 個請求中的 1 個產生追蹤區間 ,抽樣率為 1%。 若要產生更多追蹤跨距,請增加百分比值。
- 預設值:
istio-components-pilot-hpa-maxReplicas-
- 預設值:
"5" - 預設情況下, Istio 會將
istiod的預設水平 Pod 自動擴展器 (HPA) 最大 Pod 數設定為 5。 請勿增加此值,除非您有大型的服務網狀結構,而istiod需要增加資源來更新組態。
例如,您的 ConfigMap 可能與以下範例相似。
apiVersion: v1 data: istio-ingressgateway-zone-1: dal10 <key: value> # such as istio-egressgateway-public-1-enabled: "false" kind: ConfigMap metadata: name: managed-istio-custom namespace: ibm-operators在您的 ConfigMap? 由於您的 ConfigMap 包含使用者定義的值,因此 ConfigMap 不會隨時間更新任何已釋出的選項。 相反,您可以備份 ConfigMap 的副本,然後從群集中刪除 ConfigMap。 約 5 分鐘後,您的群集中會建立包含新選項的預設 ConfigMap。 然後,您可以將先前設定的設定從備份複製到此預設 ConfigMap, 設定任何新設定,並套用變更。
- 預設值:
-
儲存並關閉配置檔。
-
如果您已變更
istio-global-logging-level或istio-global-proxy-accessLogFile設定,則必須重新啟動資料平面 Pod 以將變更套用至它們。- 取得不在
istio-system名稱空間中的所有資料平面 Pod 清單。
istioctl version --short=false | grep "data plane version" | grep -v istio-system ``` 輸出範例 ```sh {: screen} data plane version: version.ProxyInfo{ID:"test-6f86fc4677-vsbsf.default", IstioVersion:"1.29.5"} data plane version: version.ProxyInfo{ID:"rerun-xfs-f8958bb94-j6n89.default", IstioVersion:"1.29.5"} data plane version: version.ProxyInfo{ID:"test2-5cbc75859c-jh6bx.default", IstioVersion:"1.29.5"} data plane version: version.ProxyInfo{ID:"minio-test-78b5d4597d-hkpvt.default", IstioVersion:"1.29.5"} data plane version: version.ProxyInfo{ID:"sb-887f89d7d-7s8ts.default", IstioVersion:"1.29.5"} data plane version: version.ProxyInfo{ID:"gid-deployment-5dc86db4c4-kdshs.default", IstioVersion:"1.29.5"} ``` 2. 透過刪除每一個 Pod 來重新啟動它。 在前一個步驟的輸出中,Pod 名稱及名稱空間在每一個項目中列出為 `data plane version: version.ProxyInfo{ID:"<pod_name>.<namespace>", IstioVersion:"1.29.5"}`。 ```sh {: pre} kubectl delete pod <pod_name> -n <namespace> ``` - 取得不在
- 要變更 ConfigMap 設定嗎?
- 如果您想更改添加到的設置ConfigMap,您可以使用補丁腳本。 例如,如果您已新增
istio-global-proxy-accessLogFile: "/dev/stdout"設定,且稍後想要將它變更回"",則可以執行kubectl patch cm managed-istio-custom -n ibm-operators --type='json' -p='[{"op": "add", "path": "/data/istio-global-proxy-accessLogFile", "value":""}]'。 - 需要在 1.24 或更高版本中調試自訂設定嗎?
- 在 ibm-operators namespace 中的 managed-istio-istiod-controlplane-values configmap 中檢查 helm value.yaml 和 helm 結果記錄。 value.yaml 會顯示您的變更是否已新增。 舵結果會顯示是否有任何語法錯誤。
kubectl get cm -n ibm-operators managed-istio-istiod-control-plane-values -o json | jq -r .data.\"values.yaml\" kubectl get cm -n ibm-operators managed-istio-istiod-control-plane-values -o json | jq -r .data.\"values.yaml.helm.result\"Thu, 23 Oct 2025 19:58:48 GMT HELM_SUCCESS: Release "istiod" has been upgraded. Happy Helming! NAME: istiod LAST DEPLOYED: Thu Oct 23 19:58:42 2025 NAMESPACE: istio-system STATUS: deployed REVISION: 275 TEST SUITE: None NOTES: "istiod" successfully installed! - 需要在 1.23 中調試自訂設定嗎?
- 執行
kubectl logs -n ibm-operators -l name=managed-istio-operator,檢查addon-istio-operator( Istio 版本 1.10 至 1.23 ) pod 的日誌。 Istio 操作員驗證和核對您所做的任何自訂 Istio 變更。
如果停用 Istio 附加元件,則在卸載過程中不會移除 managed-istio-custom ConfigMap。 當您重新啟用 Istio 附加元件時,您自訂的 ConfigMap 會在安裝時套用。 如果您不想在以後安裝 Istio 時重新使用自訂設定,則必須在執行 kubectl delete cm -n ibm-operators managed-istio-custom 停用 Istio 附加元件後,刪除 ConfigMap。
重新啟用 Istio 附加元件時,會在安裝時套用預設的 ConfigMap。
從 Istio 附加元件遷移到社群 Istio
如果您使用的是受管理的 Istio 附加元件版本 1.21 到 1.23,您可以遷移到較後版本的社群 Istio 來代替。
開始之前: 如果您不再需要 Istio,您可以 卸載附加元件而不安裝社群 Istio 代替完成這些步驟。
步驟 1:從主控台停用 Istio 附加元件
從主控台或 CLI 停用附加元件。
-
在 叢集儀表板中,點選您要移除「Istio」附加元件的叢集名稱。
-
請前往「附加元件」區段。
-
在「受管理 Istio」卡上,按一下「動作」功能表圖示。
-
按一下解除安裝。 此叢集已停用受管的 Istio 附加元件。
-
在「受管 Istio」卡片上,請確認您已解除安裝的附加元件已不再出現在清單中。
步驟 1:從 CLI 停用 Istio 附加元件
停用附加元件,並驗證沒有其他 Istio 附加元件存在。
- 停用
istio附加程式。ibmcloud ks cluster addon disable istio --cluster CLUSTER_NAME_OR_ID -f - 驗證在此叢集裡已停用所有受管理 Istio 附加程式。 輸出中未傳回任何 Istio 附加程式。
ibmcloud ks cluster addon ls --cluster CLUSTER_NAME_OR_ID - 請等待 10 分鐘,再繼續下一步。 這讓我們有時間解除對 Istio 操作員的管理。
步驟 2:縮小 Istio 操作員
縮減「Istio」運算子的部署規模。 從 Istio 附加元件使用集群內 Istio 運算符號遷移至社群 Istio 使用 istioctl 時,必須避免兩種安裝方式爭奪 Istio 的控制權。 縮小操作員、刪除 IOP,然後刪除操作員的步驟可移除集群內的操作員,而無需卸載 Istio。
執行下列指令:
kubectl scale deployment -n ibm-operators addon-istio-operator --replicas=0
步驟 3:節省資源
請儲存您在 istio-system 命名空間中建立或修改的任何資源,以及所有由自訂資源定義 (CRD) 自動生成的 Kubernetes 資源。
-
儲存
managed-istio-customConfigMap 以疑難排解問題,或稍後重新安裝附加程式。kubectl get cm -n ibm-operators managed-istio-custom -o yaml > Customizations.yaml -
儲存所有 IstioOperator CR (IOPS)。 叢集內 Istio 操作員在 IOP 上有一個 finalizer,以防止其被刪除,直到叢集內操作員刪除 IOP 中定義的資源。 作為移除 Istio 運算符號而不刪除 Istio 的一部分,您必須移除 finalizers。
- 列出 IOP 資源:
kubectl get iop -A ``` - 針對列出的每個 IOP 資源,移除定案器。 使用 `managed-istio` IOP 的範例: ```sh {: pre} kubectl patch -n ibm-operators istiooperator/managed-istio --type json --patch='[ { "op": "remove", "path": "/metadata/finalizers" } ]' ``` - 對於列出的每一個 IOP 資源,將每一個儲存至檔案: ```sh {: pre} kubectl get iop -n <IOP_namespace> <IOP_name> -o yaml > <IOP_name>.yaml ``` -
請等待 10 分鐘,再繼續下一步。
步驟 4:變更 IOP 的安裝程式
刪除所有 Istio 操作員 (IOP) 資源,例如自訂入口閘道。
-
請確定您的
istioctlcli 工具是必要的修補程式版本。istioctl version -
對於上一步儲存的每個 IOP 檔案,執行
istioctl upgrade指令將 Istio 升級到與istioctl版本相符的版本。 此指令也將安裝和升級機制從使用集群內操作員變更為istioctl。istioctl upgrade -f <filename>.yaml
步驟 5:移除 Istio 操作員和 IOP
刪除 Istio 操作員部署、服務帳戶、群集角色綁定、群集角色和所有 IOP。 Istio 從叢集內的 Istio 操作員轉移到基於 istioctl 的安裝。 現在您可以清理集群內 Istio 操作員安裝的殘餘物,同時縮小其規模。
-
執行下列指令刪除 Istio 操作員部署:
kubectl delete deployment -n ibm-operators addon-istio-operator --ignore-not-found=true kubectl delete serviceaccount -n ibm-operators addon-istio-operator --ignore-not-found=true kubectl delete clusterrolebinding addon-istio-operator --ignore-not-found=true kubectl delete clusterrole addon-istio-operator --ignore-not-found=true -
刪除 IOP。
- 列出 IOP 資源:
kubectl get iop -A ``` - 對於列出的每個 IOP 資源,將其刪除: ```sh {: pre} kubectl delete IstioOperator <resource_name> -n <namespace> ```
步驟 6:移除 ConfigMap
因為 ConfigMap 較早前已儲存,所以可以移除。
移除 managed-istio-custom ConfigMap。
kubectl delete cm -n ibm-operators managed-istio-custom
移除附加元件的動作已完成,您可以繼續使用並視需要升級社群 Istio。
解除安裝「Istio」附加元件
若您已完成對 Istio 的使用,您可以清理叢集中的 Istio 資源,並解除安裝 Istio 附加元件。
步驟 1: 在解除安裝之前儲存資源
即會移除您在 istio-system 名稱空間中建立或修改的任何資源。 若要保留這些資源,請在卸載 Istio 附加元件之前儲存這些資源。
-
儲存
managed-istio-customConfigMap 以疑難排解問題,或稍後重新安裝附加程式。kubectl get cm -n ibm-operators managed-istio-custom -o yaml > Customizations.yaml -
對於 1.23 及更早版本,請儲存所有 IstioOperator CR (IOP)。
a. 列出 IOP 資源:
kubectl get iop -Ab. 對於列出的每一個 IOP 資源,將每一個儲存至檔案:
kubectl get iop -n <IOP_namespace> <IOP_name> -o yaml > <IOP_name>.yaml
步驟 2:解除安裝 Istio 附加元件
從主控台或 CLI 解除安裝附加程式。 對於 Istio 1.20 及更早版本,任何自訂 Istio 操作員 (IOP) 資源都會自動刪除。
從主控台解除安裝 Istio 附加元件
-
在 叢集儀表板中,點選您要移除「Istio」附加元件的叢集名稱。
-
請前往「附加元件」區段。
-
在「受管理 Istio」卡上,按一下「動作」功能表圖示。
-
按一下解除安裝。 此叢集中的「Istio」託管附加元件已停用,且此叢集中的所有 Istio 資源均已移除。
-
在「受管 Istio」卡片上,請確認您已解除安裝的附加元件已不再出現在清單中。
從 CLI 卸載 Istio 附加元件
如果您未安裝已淘汰的 istio-sample-bookinfo 和 istio-extras 附加程式,請跳過步驟 1 和 2。
- 停用
istio-sample-bookinfo附加程式。ibmcloud ks cluster addon disable istio-sample-bookinfo --cluster CLUSTER_NAME_OR_ID - 停用
istio-extras附加程式。ibmcloud ks cluster addon disable istio-extras --cluster CLUSTER_NAME_OR_ID - 停用
istio附加程式。ibmcloud ks cluster addon disable istio --cluster CLUSTER_NAME_OR_ID -f - 驗證在此叢集裡已停用所有受管理 Istio 附加程式。 輸出中未傳回任何 Istio 附加程式。
ibmcloud ks cluster addon ls --cluster CLUSTER_NAME_OR_ID
步驟 3: 移除資源
儲存資源並停用附加程式之後,可以移除資源。
-
解除安裝期間不會移除
managed-istio-customConfigMap。 如果您之後重新啟用 Istio 附加元件,任何 您對 ConfigMap 都會在安裝時套用。 如果您不想在以後安裝 Istio 時重新使用自訂設定,則必須刪除 ConfigMap。kubectl delete cm -n ibm-operators managed-istio-custom -
對於 1.23 及更早版本,請刪除自訂 Istio 操作員 (IOP) 資源和 IOP。
a. 刪除您建立的任何自訂 Istio 操作員 (IOP) 資源,例如自訂入口閘道。 執行此指令時,Istio 操作員會自動移除 IOP 資源所建立的任何資源,例如部署或服務。
kubectl delete IstioOperator <resource_name> -n <namespace>b. 刪除
managed-istioIOP。kubectl delete iop -n ibm-operators managed-istio -
對於 1.24 及以後的版本,請儲存然後刪除
addon-istio閘道 ConfigMaps, 移除自訂閘道,並刪除 Istio 控制平面。a. 保存
addon-istio閘道 ConfigMaps。kubectl get cm -n ibm-operators managed-istio-ingressgateway-values -o json | jq -r .data.\"values.yaml\" > ingress-gateway.values kubectl get cm -n ibm-operators managed-istio-egressgateway-values -o json | jq -r .data.\"values.yaml\" > egress-gateway.valuesb. 刪除
addon-istio閘道 ConfigMaps。kubectl delete cm -n ibm-operators managed-istio-egressgateway-values kubectl delete cm -n ibm-operators managed-istio-ingressgateway-valuesc. 移除 自訂閘道。
d. 刪除 Istio 控制平面。
istioctl uninstall -y --purge輸出:
All Istio resources will be pruned from the cluster Removed apps/v1, Kind=Deployment/istiod.istio-system. Removed /v1, Kind=Service/istiod.istio-system. Removed /v1, Kind=ConfigMap/istio.istio-system. Removed /v1, Kind=ConfigMap/istio-sidecar-injector.istio-system. Removed /v1, Kind=Pod/istiod-7f59b54bfd-p5f4d.istio-system. Removed /v1, Kind=Pod/istiod-7f59b54bfd-zckw6.istio-system. Removed policy/v1, Kind=PodDisruptionBudget/istiod.istio-system. Removed autoscaling/v2, Kind=HorizontalPodAutoscaler/istiod.istio-system. Removed admissionregistration.k8s.io/v1, Kind=MutatingWebhookConfiguration/istio-sidecar-injector.. ✔ Uninstall complete -
請等待 10 分鐘,再繼續下一步。
步驟 4:移除 Istio 操作員
對於 1.23 及更早的版本,在完全卸載附加元件後,您可以移除 Istio 操作員。
刪除 Istio 操作員部署、服務帳戶、群集角色綁定和群集角色。
kubectl delete deployment -n ibm-operators addon-istio-operator --ignore-not-found=true
kubectl delete serviceaccount -n ibm-operators addon-istio-operator --ignore-not-found=true
kubectl delete clusterrolebinding addon-istio-operator --ignore-not-found=true
kubectl delete clusterrole addon-istio-operator --ignore-not-found=true