Sidecar代理通常是一個專門的透明網絡代理(如Envoy),用于攔截并處理應用容器的入站和出站流量,實現對底層網絡功能的抽象化管理,例如負載均衡、服務發現、流量控制、重試和超時處理等。Sidecar代理與控制平面組件相互通信,控制平面負責集中管理和分發策略及規則,Sidecar代理依據這些動態配置信息來調整其路由行為和服務治理策略。本文介紹如何安裝Sidecar代理。
背景信息
Sidecar所支持的功能可以從應用程序的容器中抽象出來,并在作為同一Pod中的獨立容器提供的代理中實現。為了充分利用這些功能,應用程序中的每個服務都需要在其Pod中運行一個Sidecar代理。Sidecar代理攔截到該服務的所有入站和出站HTTP通信,并與服務網格ASM提供的控制平面Pilot組件通信。
步驟一:啟用Sidecar注入
默認情況下,對所有命名空間禁用Sidecar自動注入。您可以通過更新Pod的Kubernetes配置手動注入Sidecar代理,也可以使用基于Webhook的機制自動注入。執行以下命令,啟用自動注入:
kubectl label namespace {namespace} istio-injection=enabled --overwrite
namespace
表示應用程序服務對應的命名空間,如果沒有指定則會使用default命名空間。
步驟二:重新啟動Pod
在創建Pod時會注入Sidecar,因此必須重新啟動正在運行的Pod才能使更改生效。
請在測試環境中反復進行重新啟動Pod的驗證測試,以確保您的服務可以處理任何潛在的流量中斷。
運行以下命令,重啟Pod。
kubectl get pod {podname} -n {namespace} -o yaml | kubectl replace --force -f -
檢查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代理。