sidecar管理
sidecar管理中支持查看所有注入了sidecar的工作负载信息,还可以进行sidecar注入、配置sidecar资源限制等操作。
sidecar注入
可展示当前已注入sidecar的命名空间及所属集群。如果还未做过注入操作,或者需要为更多命名空间注入sidecar,请参考以下操作:
- 登录应用服务网格控制台,单击服务网格的名称,进入网格详情页面。
- 在左侧导航栏选择“网格配置”,单击“sidecar管理”页签。
- 单击“sidecar管理”,选择命名空间,判断是否重启已有服务,单击“确定”。
- 选择命名空间:选择一个或多个命名空间,系统将为命名空间设置标签istio-injection=enabled。
- 是否重启已有服务:
:会重启命名空间下已有服务关联的Pod,将会暂时中断业务。只有在重启后,已有服务关联的Pod才会自动注入istio-proxy sidecar。
:已有服务关联的Pod不会自动注入istio-proxy sidecar,需要在CCE控制台,手动重启工作负载才会注入sidecar。是否重启已有服务只会影响已有服务,只要为命名空间设置了istio-injection=enabled标签,后面新建的服务实例都会自动注入sidecar。
- 流量拦截配置
默认情况下,ASM所注入的sidecar会拦截所有入方向和出方向流量,可通过流量拦截配置修改默认的流量拦截规则。
入方向端口:可用于配置端口级别拦截规则,生效于网格服务的内部端口,以逗号分隔入站端口。
- 仅拦截指定端口表示访问网格服务指定端口范围内的请求将被重定向到sidecar中。
- 仅排除指定端口表示访问网格服务的请求,除端口范围外的请求将被重定向到sidecar中。
出方向端口:可用于配置端口级别拦截规则,生效于网格服务对外访问的流量方向上,以逗号分隔出站端口。
- 仅拦截指定端口表示网格服务访问指定端口范围内的请求将被重定向到sidecar中。
- 仅排除指定端口表示网格服务对外访问的请求,除指定端口范围外的流量都将被重定向到sidecar中。
出方向网段:可用于配置网段级别拦截规则,生效于网格服务对外访问的流量方向上,以逗号分隔 IP ,以 CIDR 形式表示。
- 仅拦截指定网段表示指定网段范围内的流量将被重定向到sidecar中。
- 仅排除指定网段表示除指定网段范围外的流量将被重定向到sidecar中。
- 若界面提示“以下集群未开放命名空间注入修改操作”,需要通过kubectl命令行开放,具体操作请参见如何为集群开放命名空间注入?。
- 为集群的命名空间开启sidecar注入后,该命名空间下所有工作负载关联的Pod将自动注入sidecar。如果某些工作负载不希望注入sidecar,可参考某些工作负载不注入sidecar,该如何配置?进行配置。
- 对于1.8.4-r1及之前(所有1.3、1.6)版本的网格,建议确认工作负载是否包含注解:sidecar.istio.io/inject: 'true'。如未包含,请在spec.template.metadata.annotations字段下添加:
annotations: sidecar.istio.io/inject: 'true'
查看工作负载详情
列表中展示了该网格所管理的集群下所有已创建服务的工作负载,支持查看负载的名称、所属集群、服务,以及负载的sidecar信息,包括sidecar名称、sidecar版本、状态、CPU使用率、内存使用率等。操作方法如下:
- 在列表右上角搜索框,选择集群、命名空间,并输入工作负载名称搜索指定工作负载,查看负载的相关信息。
- 单击工作负载前的图标,查看负载的sidecar信息。
如果提示工作负载中无sidecar,是因为该负载所属命名空间还未注入sidecar,参考sidecar注入进行注入。
配置sidecar资源限制
支持为sidecar(即istio-proxy容器)配置CPU和内存的资源上下限。同一个节点上部署的工作负载,对于未设置资源上下限的工作负载,如果其异常资源泄露会导致其他工作负载分配不到资源而异常。未设置资源上下限的工作负载,工作负载监控信息也会不准确。
默认的sidecar资源上下限为:
- CPU(Core):最小 0.1,最大 2
- MEM(MiB):最小 128,最大 1024
如需更改,请参考以下操作:
- 单击工作负载操作列的“sidecar资源限制”,也可以勾选多个工作负载,在列表左上角单击“sidecar资源限制”进行批量配置。
- CPU最小值:也称CPU请求,表示容器使用的最小CPU需求,作为容器调度时资源分配的判断依赖。只有当节点上可分配CPU总量 ≥ 容器CPU请求数时,才允许将容器调度到该节点。
- CPU最大值:也称CPU限制,表示容器能使用的CPU最大值。
- MEM最小值:也称内存请求,表示容器使用的最小内存需求,作为容器调度时资源分配的判断依赖。只有当节点上可分配内存总量 ≥ 容器内存请求数时,才允许将容器调度到该节点。
- MEM最大值:也称内存限制,表示容器能使用的内存最大值。当内存使用率超出设置的内存限制值时,该实例可能会被重启进而影响工作负载的正常使用。
为sidecar资源配置内存告警
当内存使用率超出设置的内存限制值时,该实例可能会被重启进而影响工作负载的正常使用。因此,建议用户为所有sidecar资源配置内存告警,当告警被触发后,及时扩容对应sidecar的内存最大值,可降低业务影响范围。
- 登录应用运维管理 AOM控制台。
- 在左侧导航栏选择“告警 > 告警规则”,单击右上角“添加规则”。
- 设置告警规则。
- 单击“立即创建”。
创建后在规则列表中可以看到如下一行,表示创建成功。
- 在告警列表中可以查看最新的活动告警信息及对应负载的详情。
当告警被触发后,活动告警列表会新增一条或多条记录。单击告警名称,在“告警对象”页签查看deploymentName、nameSpace等参数,以确定告警源自哪个sidecar资源。业务面sidecar资源限制请参考配置sidecar资源限制修改,istio-ingressgateway、istio-egressgateway、istio-eastwestgateway等控制面sidecar资源限制需要在CCE控制台“工作负载”页面通过升级方式来修改。