全部產品
Search
文件中心

Alibaba Cloud Service Mesh:安裝Sidecar代理

更新時間:Jun 30, 2024

Sidecar代理通常是一個專門的透明網路代理程式(如Envoy),用於攔截並處理應用程式容器的入站和出站流量,實現對底層網路功能的抽象化管理,例如負載平衡、服務發現、流量控制、重試和逾時處理等。Sidecar代理與控制平面組件相互連信,控制平面負責集中管理和分發策略及規則,Sidecar代理依據這些動態配置資訊來調整其路由行為和服務治理策略。本文介紹如何安裝Sidecar代理。

背景資訊

Sidecar所支援的功能可以從應用程式的容器中抽象出來,並在作為同一Pod中的獨立容器提供的代理中實現。為了充分利用這些功能,應用程式中的每個服務都需要在其Pod中運行一個Sidecar代理。Sidecar代理攔截到該服務的所有入站和出站HTTP通訊,並與Service MeshASM提供的控制平面Pilot組件通訊。

步驟一:啟用Sidecar注入

預設情況下,對所有命名空間禁用Sidecar自動注入。您可以通過更新Pod的Kubernetes配置手動注入Sidecar代理,也可以使用基於Webhook的機制自動注入。執行以下命令,啟用自動注入:

kubectl label namespace {namespace} istio-injection=enabled --overwrite

namespace表示應用程式服務對應的命名空間,如果沒有指定則會使用default命名空間。

步驟二:重新啟動Pod

在建立Pod時會注入Sidecar,因此必須重新啟動正在啟動並執行Pod才能使更改生效。

重要

請在測試環境中反覆進行重新啟動Pod的驗證測試,以確保您的服務可以處理任何潛在的流量中斷。

  1. 運行以下命令,重啟Pod。

    kubectl get pod {podname} -n {namespace} -o yaml | kubectl replace --force -f -
  2. 檢查Pod是否都注入了Sidecar。

    每個工作負載都有兩個容器:主容器和Sidecar代理容器。

    kubectl get pod -n {namespace} --all

相關文檔

  • 您可以通過ASM控制台為命名空間注入Sidecar。具體操作,請參見管理全域命名空間

  • ASM內建一個Sidecar注入器,能夠自動為建立的Pod添加Sidecar代理。您可以配置注入器的策略以滿足特定需求,通過標籤選擇哪些Pod需要加入Sidecar,從而更有效地使用資源並簡化管理。根據叢集的大小和負載,您也可以調整注入器的資源配置,確保其有充足的運行資源。具體操作,請參見配置Sidecar注入策略

  • 您可以根據實際業務需求,通過ASM控制台靈活配置Sidecar代理的資源、生命週期、流量攔截策略、可觀測能力等參數。具體操作,請參見配置Sidecar代理

  • 您可以通過Annotation方式修改Sidecar代理資源和配置,例如修改中止排出時間、Istio Proxy啟動順序等。具體操作,請參見通過Annotation方式配置Sidecar Proxy

  • 對於不需要經過Sidecar代理的特定情境,您可以靈活控制流程量免於經過Sidecar代理。具體操作,請參見靈活控制流程量免於經過Sidecar代理