Istio参数调优

本篇介绍和Istio性能关系较大的几个参数。仅供参考。

1.keepaliveMaxServerConnectionAge
这是Helm部署参数。它控制的是这是参数控制sidecar连接Polit的最长时间。在Isiot1.1中,默认时间是30分钟。

我们知道,在istio中,sidecar是要和Polit进行通讯的。Polit的实例数量通常不止一个。这就带来一个问题:如果Istio的访问量突然增大,Polit启动HA,sidecar什么时候连接到新的Polit?

keepaliveMaxServerConnectionAge参数如果设置的太小,可能会造成访问流量的丢失(sidecar与Polit的重链接频繁),如果设置的太大,将会造成Polit负载不均衡。

目前关于这个参数的设置,社区里也做过一些测试,有开发者设置为6分钟。具体的设置数值,需要根据自身Istio的情况进行测试后获得。

目前在OpenShift上安装Istio,由于采用Operator的方式,这个参数的调整未开放。后续Istio on OCP有开放的可能。

2. global.proxy.concurrency
这是Helm部署参数。它控制Proxy worker的线程数量。它会影响sidecar的资源利用率和延迟。模式数值是2

这点其实好理解,我们给sidecar分配的cpu计算能力越强,它的性能就会越好、资源消耗会越大、应用延迟会月底。

如果将global.proxy.concurrency设置为0,也就是说,每个Proxy worker线程占用一个CPU core(如果打开CPU超线程,就是占用CPU硬件超线程)。默认数值是2,也就是说,两个Proxy worker的线程共享一个CPU core(如果打开CPU超线程,就是占用CPU硬件超线程)。

目前在OpenShift上安装Istio,由于采用Operator的方式,这个参数的调整未开放。后续Istio on OCP有开放的可能。

3.global.enableTracing
这是配置参数。可以通过configmap进行配置,然后重启pilot后生效。这个参数默认是关闭的。
启动tracing会造成大量的资源开销并影响吞吐量。Tracing的provider是jaeger。

生产环境建议disable此参数。

基于Openshift的istio可以调整此参数。在这里插入图片描述
4.Telemetry和Gateways HPA阈值
这是配置参数。它会影响istio的性能。在规模较小的Istio环境中,Gateway和Telemetry的HPA可以关闭(Istio On OCP默认是关闭的)。

在基于OpenShift的istio中,HPA是否打开取决于如下参数:在这里插入图片描述
参数具体设置如下:
CPU 资源的基本单位是 millicores,因为 CPU 资源其实准确来讲,指的是 CPU 时间。所以它的基本单位为 millicores,1 个核等于 1000 millicores。也代表了 kubernetes 可以将单位 CPU 时间细分为 1000 份,分配给某个容器。

Resources代表Telemetry pod request的CPU和和内存,limit代表Telemetry pod最多使用的cpu和内存。Resources 1000m代表一个cpu core。而CPU最多使用4800,也就是4.8core。在这里插入图片描述
HPA逻辑如下

  1. 收集该HPA控制下所有Pod最近的cpu使用情况(CPU utilization)
  2. 对比在扩容条件里记录的cpu限额(CPUUtilization)
  3. 调整实例数(必须要满足不超过最大/最小实例数)
  4. 每隔30s做一次自动扩容的判断

说明:

  • CPU utilization的计算方法是用cpu usage(最近一分钟的平均值,通过heapster可以直接获取到)除以cpurequest(这里cpu request就是我们在创建容器时制定的cpu使用核心数)得到一个平均值,这个平均值可以理解为:平均每个PodCPU核心的使用占比。
  • 最重要的步骤为3,这里即为HPA的算法,计算当前需要启动几个Pod
    在这里插入图片描述
    如果我们将Resources设置的太高,那么Telemetry和Gateways 扩容几乎应用不会发生,这就失去了HPA的意义,也浪费资源。如果设置的太低,频繁发生扩缩容,会降低istio的稳定性。Telemetry的ResourcesCPU和内存可以适当调小。

如果我们启用了Gateways 隔离,也可以将它的ResourcesCPU和内存可以适当调小。

此外,我们还可以配合OpenShift的limitrange、qouta等参数使用。为重要的组件预留更多的资源,对不太重要的组件限制资源。具体的数值要根据自身的情况进行测试验证。OCP的几个参数基本概念就不再赘述了。

参考文献:
HPA概念介绍参考了:https://www.jianshu.com/p/da5b5ee00a52

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值