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代理。